def test_load_duplicate_sectors_domains(self, m_isfile): """ProjectImporterCSV.load() does not create duplicate sectors and domains """ m_isfile.return_value = True csv = "code1;project description 1;" \ "[dom1] domain name 1;[sect1] sector name 1\n" \ "code2;project description 2;" \ "[dom1] domain name 1;[sect1] sector name 1\n" \ "code3;project description 3;" \ "[dom1] domain name 1;[sect2] sector name 2\n" \ "code4;project description 4;" \ "[dom2] domain name 2;[sect3] sector name 3\n" m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.importer.load() self.assertEquals(len(self.importer.projects), 4) self.assertEquals(len(self.importer.domains), 2) project2 = self.importer.projects[1] project4 = self.importer.projects[3] self.assertEquals(project2.code, 'code2') self.assertEquals(project4.description, 'project description 4') self.assertEquals(project2.domain.key, 'dom1') self.assertEquals(project4.domain.name, 'domain name 2')
def test_load_business_empty_description(self, m_isfile): """BusinessCodeImporterCSV.load() set description to None when empty. """ m_isfile.return_value = True descs = [ '', " ", " " ] for desc in descs: csv = "code1;%s" % desc m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.importer.load() self.assertIsNone(self.importer.businesses[0].description)
def test_load_1(self, m_isfile): """BusinessCodeImporterCSV.load() works with simple data """ m_isfile.return_value = True csv = "code1;business description 1" m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.importer.load() business = self.importer.businesses[0] self.assertEquals(business.code, 'code1') self.assertEquals(business.description, 'business description 1')
def test_load_domain_invalid(self, m_isfile): """ProjectImporterCSV.load() raise exception when domain format is invalid """ m_isfile.return_value = True csv = "code1;project description 1;" \ "domain name 1;[sect1] sector name 1" m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain format is invalid", self.importer.load)
def test_load_domain_empty_name(self, m_isfile): """ProjectImporterCSV.load() raise exception when domain name is empty """ m_isfile.return_value = True names = [ '', " ", " " ] for name in names: csv = "code1;project description 1;" \ "[dom1] %s;[sect1] sector name 1" % (name) m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain name is empty", self.importer.load)
def test_load_business_empty_code(self, m_isfile): """BusinessCodeImporterCSV.load() raise exception when business code is empty """ m_isfile.return_value = True codes = [ '', " ", " " ] for code in codes: csv = "%s;business description 1" % code m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "business code in CSV is empty", self.importer.load)
def test_load_invalid_line(self, m_isfile): """BusinessCodeImporterCSV.load() raise exception when a business code line in CSV file is invalid """ m_isfile.return_value = True csvs = [ "line without separator", "line;with;3_separators"] for csv in csvs: m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "business line format in CSV is invalid", self.importer.load)
def test_load_1(self, m_isfile): """ProjectImporterCSV.load() works with simple data """ m_isfile.return_value = True csv = "code1;project description 1;" \ "[dom1] domain name 1;[sect1] sector name 1" m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.importer.load() project = self.importer.projects[0] self.assertEquals(project.code, 'code1') self.assertEquals(project.description, 'project description 1') self.assertEquals(project.domain.key, 'dom1') self.assertEquals(project.domain.name, 'domain name 1')
def test_load_duplicate_project(self, m_isfile): """ProjectImporterCSV.load() raise Error when duplicate project codes found in CSV file """ m_isfile.return_value = True csv = "code1;project description 1;" \ "[dom1] domain name 1;[sect1] sector name 1\n" \ "code1;project description 2;" \ "[dom1] domain name 1;[sect1] sector name 1\n" m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "duplicated project code code1 in CSV file", self.importer.load)
def test_load_multiple_lines(self, m_isfile): """BusinessCodeImporterCSV.load() works with multiple lines """ m_isfile.return_value = True csv = "code1;business description 1\n" \ "code2;business description 2\n" m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.importer.load() self.assertEquals(len(self.importer.businesses), 2) business1 = self.importer.businesses[0] business2 = self.importer.businesses[1] self.assertEquals(business1.code, 'code1') self.assertEquals(business1.description, 'business description 1') self.assertEquals(business2.code, 'code2') self.assertEquals(business2.description, 'business description 2')
def test_load_multiple_lines(self, m_isfile): """ProjectImporterCSV.load() works with multiple lines """ m_isfile.return_value = True csv = "code1;project description 1;" \ "[dom1] domain name 1;[sect1] sector name 1\n" \ "code2;project description 2;" \ "[dom2] domain name 2;[sect2] sector name 2\n" m_open = mock_open(data=StringIO(csv)) with mock.patch("%s.open" % (module), m_open, create=True): self.importer.load() self.assertEquals(len(self.importer.projects), 2) project1 = self.importer.projects[0] project2 = self.importer.projects[1] self.assertEquals(project1.code, 'code1') self.assertEquals(project2.description, 'project description 2') self.assertEquals(project1.domain.key, 'dom1') self.assertEquals(project2.domain.name, 'domain name 2')