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)
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)