def test_given_title_module_contact_then_no_error_raised(self, mock_csv):
        modules = ["test_module"]
        area = "test_area"
        imp = "test_file"
        mock_csv.reader.return_value = \
            [["Module", "Contact", "Contact Name", "CC", "CC Name"],
             ["test_module", "user1", "user1"]]

        with patch.object(builtins, 'open', mock_open(read_data="mock_read")):
            dls_module_contacts.import_from_csv(modules, area, imp)
    def test_given_title_module_contact_and_cc_then_no_error_raised(self, mock_csv):
        modules = ["test_module"]
        area = "test_area"
        imp = "test_file"
        mock_csv.reader.return_value = \
            [["Module", "Contact", "Contact Name", "CC", "CC Name"],
             ["test_module", "user1", "user1", "user2", "user2"]]

        with patch.object(builtins, 'open', mock_open(read_data="mock_read")):
            dls_module_contacts.import_from_csv(modules, area, imp)
    def test_given_title_module_no_contact_then_error_raised(self, mock_csv):
        modules = ["test_module"]
        area = "test_area"
        imp = "test_file"
        expected_error_message = "Module test_module has no corresponding contact in CSV file"
        mock_csv.reader.return_value = [["Module", "Contact", "Contact Name", "CC", "CC Name"], ["test_module"]]

        try:
            with patch.object(builtins, 'open', mock_open(read_data="mock_read")):
                dls_module_contacts.import_from_csv(modules, area, imp)
        except Exception as error:
            self.assertEqual(str(error), expected_error_message)
    def test_given_empty_file_then_error_raised(self, mock_csv):
        modules = []
        area = "test_area"
        imp = "test_file"
        expected_error_message = "CSV file is empty"
        mock_csv.reader.return_value = []

        try:
            with patch.object(builtins, 'open', mock_open(read_data="mock_read")):
                dls_module_contacts.import_from_csv(modules, area, imp)
        except Exception as error:
            self.assertEqual(str(error), expected_error_message)
    def test_given_empty_file_then_error_raised(self, mock_csv):
        modules = []
        area = "test_area"
        imp = "test_file"
        expected_error_message = "CSV file is empty"
        mock_csv.reader.return_value = []

        try:
            with patch.object(builtins, 'open',
                              mock_open(read_data="mock_read")):
                dls_module_contacts.import_from_csv(modules, area, imp)
        except Exception as error:
            self.assertEqual(str(error), expected_error_message)
    def test_given_title_module_no_contact_then_error_raised(self, mock_csv):
        modules = ["test_module"]
        area = "test_area"
        imp = "test_file"
        expected_error_message = "Module test_module has no corresponding contact in CSV file"
        mock_csv.reader.return_value = [[
            "Module", "Contact", "Contact Name", "CC", "CC Name"
        ], ["test_module"]]

        try:
            with patch.object(builtins, 'open',
                              mock_open(read_data="mock_read")):
                dls_module_contacts.import_from_csv(modules, area, imp)
        except Exception as error:
            self.assertEqual(str(error), expected_error_message)