示例#1
0
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()
示例#2
0
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()
示例#3
0
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
示例#4
0
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)
示例#5
0
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
示例#6
0
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
示例#7
0
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