def test_update_method_updates_fields_in_database(crudl_mock_model, field, new_value): """ Este test comprueba que el método `update` actualiza los campos en base de datos después de una ejecución correcta """ from peewee2click import CRUDL crudl_mock_model.create(text_attr="mock", char_attr="", int_attr=1, bool_attr=True) CRUDL.update(crudl_mock_model, 1, True, **{field: new_value}) assert crudl_mock_model.select().where( getattr(crudl_mock_model, field) == new_value).exists()
def test_update_method_updates_object_when_confirm_is_true(crudl_mock_model): """ Este test comprueba que el método `update` actualiza un objeto en base de datos cuando la respuesta a `click.confirm` es True """ from peewee2click import CRUDL crudl_mock_model.create(text_attr="mock", char_attr="", int_attr=1, bool_attr=True) with patch('peewee2click.click.confirm', return_value=True): CRUDL.update(crudl_mock_model, 1, False, text_attr="new_mock") assert crudl_mock_model.select().where( crudl_mock_model.text_attr == "new_mock").exists()
def test_update_method_doesnt_call_update_if_no_changes(crudl_mock_model, force): """ Este test comprueba que el método `update` no llama a la función `update` de `peewee` si se intenta actualizar un objeto sin pasarle parámetros a actualizar """ from peewee2click import CRUDL crudl_mock_model.create(text_attr="mock", char_attr="", int_attr=1, bool_attr=True) with patch.object(crudl_mock_model, 'update') as instance_update_mock: CRUDL.update(crudl_mock_model, 1, force) assert not instance_update_mock.called
def test_update_method_asks_for_confirmation_when_no_force(): """ Este test comprueba que el método `update` pregunta al usuario la confirmación usando el método `click.confirm` cuando el parámetro `force` es False """ from peewee2click import CRUDL model = MagicMock() # Queremos que la interfaz de execute sea realista y devuelva un entero, # simulando ser el número de filas afectadas. model.update.return_value.where.return_value.execute.return_value = 0 with patch('peewee2click.click.confirm') as click_mock: CRUDL.update(model, 1, False, new_field="whatever") click_mock.assert_called_once_with(ANY)
def test_update_method_returns_false_if_invalid_id(crudl_mock_model): """ Este test comprueba que el método `update` devuelve False cuando se le pasa el pk de un objeto no existente """ from peewee2click import CRUDL new_attrs = {'text_attr': 'foo'} assert CRUDL.update(crudl_mock_model, 1, True, **new_attrs) is False
def test_update_method_returns_false_if_no_changes(crudl_mock_model, force): """ Este test comprueba que el método `update` devuelve False cuando se intenta actualizar un objeto sin pasarle parámetros a actualizar """ from peewee2click import CRUDL crudl_mock_model.create(text_attr="mock", char_attr="", int_attr=1, bool_attr=True) assert CRUDL.update(crudl_mock_model, 1, force) is False
def test_update_method_returns_true_if_valid_id(crudl_mock_model): """ Este test comprueba que el método `update` devuelve True cuando se le pasa el pk de un objeto existente """ from peewee2click import CRUDL new_attrs = {'text_attr': 'foo'} crudl_mock_model.create(text_attr="mock", char_attr="", int_attr=1, bool_attr=True) assert CRUDL.update(crudl_mock_model, 1, True, **new_attrs) is True