def test_header_is_written(self, mock_csv_dict_writer):
     csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                 writerows=mock.Mock())
     mock_csv_dict_writer.return_value = csv_dict_writer
     row_formatter = mock.Mock(format=mock.Mock())
     csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                 writerows=mock.Mock())
     mock_csv_dict_writer.return_value = csv_dict_writer
     writer = CSVWriter(column_names=self.COLUMN_NAMES,
                        row_formatter=row_formatter)
     writer.write(data=self.DATA,
                  options=WriteOptions(file_path="some file path",
                                       mode=OutputWriteOption.WRITE))
     csv_dict_writer.writeheader.assert_called_once_with()
 def test_file_and_columns_are_used_by_writer(self, mock_csv_dict_writer):
     with mock.patch("builtins.open", mock.mock_open()) as mock_file:
         csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                     writerows=mock.Mock())
         mock_csv_dict_writer.return_value = csv_dict_writer
         row_formatter = mock.Mock(format=mock.Mock())
         csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                     writerows=mock.Mock())
         mock_csv_dict_writer.return_value = csv_dict_writer
         writer = CSVWriter(column_names=self.COLUMN_NAMES,
                            row_formatter=row_formatter)
         writer.write(data=self.DATA,
                      options=WriteOptions(file_path="some file path",
                                           mode=OutputWriteOption.WRITE))
         mock_csv_dict_writer.assert_called_with(
             mock_file(), fieldnames=self.COLUMN_NAMES)
 def test_opens_correct_file(self, mock_csv_dict_writer):
     with mock.patch("builtins.open", mock.mock_open()) as mock_file:
         csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                     writerows=mock.Mock())
         mock_csv_dict_writer.return_value = csv_dict_writer
         row_formatter = mock.Mock(format=mock.Mock())
         csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                     writerows=mock.Mock())
         mock_csv_dict_writer.return_value = csv_dict_writer
         writer = CSVWriter(column_names=self.COLUMN_NAMES,
                            row_formatter=row_formatter)
         writer.write(data=self.DATA,
                      options=WriteOptions(file_path="some file path",
                                           mode=OutputWriteOption.WRITE))
         mock_file.assert_called_with("some file path",
                                      OutputWriteOption.WRITE.value,
                                      newline="",
                                      encoding="utf8")
 def test_rows_are_written(self, mock_csv_dict_writer):
     csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                 writerows=mock.Mock())
     mock_csv_dict_writer.return_value = csv_dict_writer
     row_formatter = mock.Mock(format=mock.Mock())
     csv_dict_writer = mock.Mock(wrteheader=mock.Mock(),
                                 writerows=mock.Mock())
     mock_csv_dict_writer.return_value = csv_dict_writer
     writer = CSVWriter(column_names=self.COLUMN_NAMES,
                        row_formatter=row_formatter)
     writer.write(data=self.DATA,
                  options=WriteOptions(file_path="some file path",
                                       mode=OutputWriteOption.WRITE))
     csv_dict_writer.writerows.assert_called_once_with(mock.ANY)
     self.assertEqual(3, row_formatter.format.call_count)
     row_formatter.format.assert_has_calls(calls=[
         mock.call("some"),
         mock.call("row"),
         mock.call("data"),
     ],
                                           any_order=False)