Esempio n. 1
0
def test_list_method_adds_extra_fields():
    """
    Este test comprueba que el método `list` para un modelo, unos campos base
    y unos campos extra dados:
    1. Obtiene de BD todos los objetos de ese tipo con el método `select` de
       peewee
    2. Formatea dichos objetos con el método `format_multiple_elements`,
       usando como argumentos los campos base y los extra
    3. Imprime por pantalla el objeto formateado mediante el método
       `print_table` pasando como parámetro headers los campos base y los extra
    """

    from peewee2click import CRUDL

    format_func = 'peewee2click.CRUDL.format_multiple_elements'
    print_func = 'peewee2click.CRUDL.print_table'
    model_mock = MagicMock()
    base_fields = [MagicMock()]
    extra_fields = [MagicMock()]

    with patch(format_func) as format_mock, patch(print_func) as print_mock:
        CRUDL.list(model_mock, base_fields, extra_fields=extra_fields)

    model_mock.select.assert_called_once_with()
    format_mock.assert_called_once_with(model_mock.select.return_value,
                                        base_fields + extra_fields)
    print_mock.assert_called_once_with(format_mock.return_value,
                                       headers=base_fields + extra_fields)
Esempio n. 2
0
def test_list_method_removes_duplicated_fields():
    """
    Este test comprueba que el método `list` para un modelo, unos campos base
    y unos campos extra dados (ambos con elementos repetidos):
    1. Obtiene de BD todos los objetos de ese tipo con el método `select` de
       peewee
    2. Formatea dichos objetos con el método `format_multiple_elements`,
       usando como argumentos los campos base y los extra, pero con los
       elementos sin repetir en ambos casos
    3. Imprime por pantalla el objeto formateado mediante el método
       `print_table` pasando como parámetro headers los campos base y los
       extra, pero con los elementos sin repetir en ambos casos
    """

    from peewee2click import CRUDL

    format_func = 'peewee2click.CRUDL.format_multiple_elements'
    print_func = 'peewee2click.CRUDL.print_table'
    model_mock = MagicMock()
    field_mock = MagicMock()
    extra_field_mock = MagicMock()
    # Fields repetidos, comprobaremos que se limitan a dos (en lugar de cuatro)
    base_fields = [field_mock, field_mock]
    extra_fields = [extra_field_mock, extra_field_mock]

    with patch(format_func) as format_mock, patch(print_func) as print_mock:
        CRUDL.list(model_mock, base_fields, extra_fields=extra_fields)

    # En los asserts comparamos contra una lista que solo tiene dos fields
    expected_fields = [field_mock, extra_field_mock]

    model_mock.select.assert_called_once_with()
    format_mock.assert_called_once_with(model_mock.select.return_value,
                                        expected_fields)
    print_mock.assert_called_once_with(format_mock.return_value,
                                       headers=expected_fields)