Code Duplication    Length = 19-26 lines in 6 locations

tests/test_context.py 6 locations

@@ 385-410 (lines=26) @@
382
    assert r == {"port": 67888, "colors": ["red", "green", "blue"]}
383
384
385
def test_prompt_json_default(mocker):
386
    EXPECTED_VALUE = 'default'
387
388
    cfg = '{"port": 67888, "colors": ["red", "green", "blue"]}'
389
390
    mock_prompt = mocker.patch(
391
        'cookiecutter.prompt.click.prompt',
392
        autospec=True,
393
        return_value=EXPECTED_VALUE,
394
    )
395
396
    m = mocker.Mock()
397
    m.side_effect = context.Variable
398
    v = m.side_effect(name='json', default=None, prompt='Enter Config', hide_input=False)
399
400
    r = context.prompt_json(v, default=cfg)
401
402
    assert mock_prompt.call_args == mocker.call(
403
        v.prompt,
404
        default='default',
405
        hide_input=v.hide_input,
406
        type=click.STRING,
407
        value_proc=mocker.ANY,
408
    )
409
410
    assert r == cfg
411
412
413
def test_prompt_yes_no_default_no(mocker):
@@ 320-343 (lines=24) @@
317
    assert r == EXPECTED_VALUE
318
319
320
def test_prompt_uuid(mocker):
321
322
    EXPECTED_VALUE = '931ef56c3e7b45eea0427bac386f0a98'
323
324
    mock_prompt = mocker.patch(
325
        'cookiecutter.prompt.click.prompt',
326
        autospec=True,
327
        return_value=EXPECTED_VALUE,
328
    )
329
330
    m = mocker.Mock()
331
    m.side_effect = context.Variable
332
    v = m.side_effect(name='uuid', default=None, prompt='Enter a UUID', hide_input=False)
333
334
    r = context.prompt_uuid(v, default=None)
335
336
    assert mock_prompt.call_args == mocker.call(
337
        v.prompt,
338
        default=None,
339
        hide_input=v.hide_input,
340
        type=click.UUID,
341
    )
342
343
    assert r == EXPECTED_VALUE
344
345
346
def test_prompt_json(monkeypatch, mocker):
@@ 294-317 (lines=24) @@
291
    assert r == EXPECTED_VALUE
292
293
294
def test_prompt_float(mocker):
295
296
    EXPECTED_VALUE = 3.14
297
298
    mock_prompt = mocker.patch(
299
        'cookiecutter.prompt.click.prompt',
300
        autospec=True,
301
        return_value=EXPECTED_VALUE,
302
    )
303
304
    m = mocker.Mock()
305
    m.side_effect = context.Variable
306
    v = m.side_effect(name='PI', default=3.0, prompt='Enter PI', hide_input=False)
307
308
    r = context.prompt_float(v, default=3.0)
309
310
    assert mock_prompt.call_args == mocker.call(
311
        v.prompt,
312
        default=3.0,
313
        hide_input=v.hide_input,
314
        type=click.FLOAT,
315
    )
316
317
    assert r == EXPECTED_VALUE
318
319
320
def test_prompt_uuid(mocker):
@@ 268-291 (lines=24) @@
265
    assert r           # EXPECTED_VALUE
266
267
268
def test_prompt_int(mocker):
269
270
    EXPECTED_VALUE = 777
271
272
    mock_prompt = mocker.patch(
273
        'cookiecutter.prompt.click.prompt',
274
        autospec=True,
275
        return_value=EXPECTED_VALUE,
276
    )
277
278
    m = mocker.Mock()
279
    m.side_effect = context.Variable
280
    v = m.side_effect(name='port', default=1000, prompt='Enter Port', hide_input=False)
281
282
    r = context.prompt_int(v, default=1000)
283
284
    assert mock_prompt.call_args == mocker.call(
285
        v.prompt,
286
        default=1000,
287
        hide_input=v.hide_input,
288
        type=click.INT,
289
    )
290
291
    assert r == EXPECTED_VALUE
292
293
294
def test_prompt_float(mocker):
@@ 216-239 (lines=24) @@
213
    assert "Processed all variables, but skip_to_variable_name 'this_variable_name_is_not_in_the_list' was never found." in caplog.text
214
215
216
def test_prompt_string(mocker):
217
218
    EXPECTED_VALUE = 'Input String'
219
220
    mock_prompt = mocker.patch(
221
        'cookiecutter.prompt.click.prompt',
222
        autospec=True,
223
        return_value=EXPECTED_VALUE,
224
    )
225
226
    m = mocker.Mock()
227
    m.side_effect = context.Variable
228
    v = m.side_effect(name='name', default='', prompt='Enter Name', hide_input=False)
229
230
    r = context.prompt_string(v, default='Alpha')
231
232
    assert mock_prompt.call_args == mocker.call(
233
        v.prompt,
234
        default='Alpha',
235
        hide_input=v.hide_input,
236
        type=click.STRING,
237
    )
238
239
    assert r == EXPECTED_VALUE
240
241
242
def test_prompt_bool(mocker):
@@ 364-382 (lines=19) @@
361
    assert r == {"port": 67888, "colors": ["red", "green", "blue"]}
362
363
364
def test_prompt_json_bad_json_decode_click_asks_again(mocker, capsys):
365
366
    EXPECTED_BAD_VALUE = '{"port": 67888, "colors": ["red", "green", "blue"}'
367
    EXPECTED_GOOD_VALUE = '{"port": 67888, "colors": ["red", "green", "blue"]}'
368
369
    mocker.patch(
370
        'click.termui.visible_prompt_func',
371
        autospec=True,
372
        side_effect=[EXPECTED_BAD_VALUE, EXPECTED_GOOD_VALUE]
373
    )
374
    m = mocker.Mock()
375
    m.side_effect = context.Variable
376
    v = m.side_effect(name='json', default=None, prompt='Enter Config', hide_input=False)
377
378
    r = context.prompt_json(v, default=None)
379
380
    out, err = capsys.readouterr()
381
    assert 'Error: Unable to decode to JSON.' in out
382
    assert r == {"port": 67888, "colors": ["red", "green", "blue"]}
383
384
385
def test_prompt_json_default(mocker):