def setUp(self): file_opener = mock.create_autospec(CompatibleWriteOpener).return_value object_converter = mock.create_autospec(CompatibleObjectConverter).return_value variables_sorter = mock.create_autospec(VariablesSorter).return_value instance_resolver = mock.create_autospec(InstanceResolver).return_value csv_writer_factory = mock.create_autospec(CsvWriterFactory).return_value self.object_writer_csv = ObjectWriterCsv(file_opener, object_converter, variables_sorter, instance_resolver, csv_writer_factory) self.object_writer_csv.writer = mock.create_autospec(csv.writer).return_value self.object_writer_csv.convert_to_strings_function = mock.Mock()
def create_object_writer_csv(self): file_opener = self.compatibility_factory.create_compatible_write_opener( ) object_converter = self.compatibility_factory.create_compatible_object_converter( ) object_writer_csv = ObjectWriterCsv(file_opener, object_converter) return object_writer_csv
class TestObjectWriterCsv(unittest.TestCase): def setUp(self): file_opener = mock.create_autospec(CompatibleWriteOpener).return_value object_converter = mock.create_autospec(CompatibleObjectConverter).return_value variables_sorter = mock.create_autospec(VariablesSorter).return_value instance_resolver = mock.create_autospec(InstanceResolver).return_value csv_writer_factory = mock.create_autospec(CsvWriterFactory).return_value self.object_writer_csv = ObjectWriterCsv(file_opener, object_converter, variables_sorter, instance_resolver, csv_writer_factory) self.object_writer_csv.writer = mock.create_autospec(csv.writer).return_value self.object_writer_csv.convert_to_strings_function = mock.Mock() @mock.patch.object(ObjectWriterCsv, 'open_file_and_create_writer') def test_open_file(self, mock_open_file_and_create_writer): mock_file_name = "mock.csv" mock_file = mock.Mock() mock_open_file_and_create_writer.return_value = mock_file result = self.object_writer_csv.open_file(mock_file_name) self.assertEquals(result, mock_file) def test_open_and_create_writer(self): mock_file_name = "mock.csv" mock_file = mock.Mock() mock_csv_writer = mock.create_autospec(csv.writer).return_value self.object_writer_csv.file_opener.open_file_write_strings.return_value = mock_file self.object_writer_csv.csv_writer_factory.create_csv_writer.return_value = mock_csv_writer result = self.object_writer_csv.open_file_and_create_writer(mock_file_name) self.assertEquals(self.object_writer_csv.writer, mock_csv_writer) self.assertEquals(result, mock_file) def test_write_headers_string_argument(self): mock_string = "mock" self.object_writer_csv.instance_resolver.is_unicode_or_byte_string.return_value = True self.object_writer_csv.write_headers(mock_string) self.object_writer_csv.instance_resolver.is_unicode_or_byte_string.assert_called_once_with(mock_string) @mock.patch.object(ObjectWriterCsv, 'write') def test_write_headers_object_argument(self, mock_write): mock_object = mock.Mock() mock_object_variables = { "width": 800, "height": 600, "title": "mock title" } mock_names = ["height", "mock title", "width"] self.object_writer_csv.instance_resolver.is_unicode_or_byte_string.return_value = False self.object_writer_csv.variables_sorter.get_list_of_variable_names_sorted_by_name.return_value = ["height", "mock title", "width"] self.object_writer_csv.write_headers(mock_object) mock_write.assert_called_once_with(mock_names) @mock.patch.object(ObjectWriterCsv, 'write') def test_write_object_string_argument(self, mock_write): mock_object = "Mock string" self.object_writer_csv.instance_resolver.is_unicode_or_byte_string.return_value = True self.object_writer_csv.write_object(mock_object) mock_write.assert_called_once_with([mock_object]) @mock.patch.object(ObjectWriterCsv, 'write_variables') def test_write_object_non_string_argument(self, mock_write_variables): mock_object = mock.Mock() self.object_writer_csv.instance_resolver.is_unicode_or_byte_string.return_value = False self.object_writer_csv.write_object(mock_object) mock_write_variables.assert_called_once_with(mock_object) @mock.patch.object(ObjectWriterCsv, 'write') def test_write_variable_values(self, mock_write): mock_object = mock.Mock() mock_object_variables = { "width": 800, "height": 600, "title": b"mock\x00title" } self.object_writer_csv.variables_sorter.get_list_of_variable_values_sorted_by_name.return_value = [600, b"mock\x00title", 800] self.object_writer_csv.object_converter.list_convert_to_string.return_value = ["600", b"mock\x00title", "800"] self.object_writer_csv.write_variables(mock_object) mock_write.assert_called_once_with(self.object_writer_csv.object_converter.list_convert_to_string.return_value) def test_write(self): mock_list_string = ["600", "mock title", "800"] self.object_writer_csv.write(mock_list_string) self.object_writer_csv.writer.writerow.assert_called_once_with(mock_list_string)