class TestsProjectImporterCSVUpdate(HPCStatsTestCase): @mock.patch("HPCStats.DB.HPCStatsDB.psycopg2", mock_psycopg2()) def setUp(self): self.filename = 'fake' self.cluster = 'testcluster' HPCStatsConf.__bases__ = (MockConfigParser, object) self.conf = HPCStatsConf(self.filename, self.cluster) self.conf.conf = CONFIG self.app = None self.db = HPCStatsDB(self.conf) self.db.bind() self.importer = ProjectImporterCSV(self.app, self.db, self.conf) def test_update(self): """ProjectImporterCSV.update() works with simple data """ domain1 = Domain('dom1', 'domain name 1') project1 = Project(domain1, 'code1', 'project description 1') MockPg2.PG_REQS['save_project'].set_assoc( params=( project1.code, project1.description, domain1.key ), result=[ [ 1 ] ] ) self.importer.projects = [ project1 ] self.importer.domains = [ domain1 ] self.importer.update()
class TestsProjectImporterCSVUpdate(HPCStatsTestCase): @mock.patch("HPCStats.DB.HPCStatsDB.psycopg2", mock_psycopg2()) def setUp(self): self.filename = 'fake' self.cluster = 'testcluster' HPCStatsConf.__bases__ = (MockConfigParser, object) self.conf = HPCStatsConf(self.filename, self.cluster) self.conf.conf = CONFIG self.app = None self.db = HPCStatsDB(self.conf) self.db.bind() self.importer = ProjectImporterCSV(self.app, self.db, self.conf) def test_update(self): """ProjectImporterCSV.update() works with simple data """ domain1 = Domain('dom1', 'domain name 1') project1 = Project(domain1, 'code1', 'project description 1') MockPg2.PG_REQS['save_project'].set_assoc(params=(project1.code, project1.description, domain1.key), result=[[1]]) self.importer.projects = [project1] self.importer.domains = [domain1] self.importer.update()
def setUp(self): self.filename = 'fake' self.cluster = 'testcluster' HPCStatsConf.__bases__ = (MockConfigParser, object) self.conf = HPCStatsConf(self.filename, self.cluster) self.conf.conf = CONFIG self.app = None self.db = None self.importer = ProjectImporterCSV(self.app, self.db, self.conf)
class TestsProjectImporterCSVLoad(HPCStatsTestCase): def setUp(self): self.filename = 'fake' self.cluster = 'testcluster' HPCStatsConf.__bases__ = (MockConfigParser, object) self.conf = HPCStatsConf(self.filename, self.cluster) self.conf.conf = CONFIG self.app = None self.db = None self.importer = ProjectImporterCSV(self.app, self.db, self.conf) def test_init(self): """ProjectImporterCSV.__init__() runs w/o problem """ pass @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') 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') @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') 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') @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain format is invalid", self.importer.load) @mock.patch("%s.os.path.isfile" % module) def test_load_domain_empty_key(self, m_isfile): """ProjectImporterCSV.load() raise exception when domain key is empty """ m_isfile.return_value = True keys = [ '', " ", " " ] for key in keys: csv = "code1;project description 1;" \ "[%s] domain name 1;[sect1] sector name 1" % (key) m_open = mock.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain key is empty", self.importer.load) @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain name is empty", self.importer.load) @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') 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') @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "duplicated project code code1 in CSV file", self.importer.load)
class TestsProjectImporterCSVLoad(HPCStatsTestCase): def setUp(self): self.filename = 'fake' self.cluster = 'testcluster' HPCStatsConf.__bases__ = (MockConfigParser, object) self.conf = HPCStatsConf(self.filename, self.cluster) self.conf.conf = CONFIG self.app = None self.db = None self.importer = ProjectImporterCSV(self.app, self.db, self.conf) def test_init(self): """ProjectImporterCSV.__init__() runs w/o problem """ pass @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') 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') @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') 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') @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain format is invalid", self.importer.load) @mock.patch("%s.os.path.isfile" % module) def test_load_domain_empty_key(self, m_isfile): """ProjectImporterCSV.load() raise exception when domain key is empty """ m_isfile.return_value = True keys = ['', " ", " "] for key in keys: csv = "code1;project description 1;" \ "[%s] domain name 1;[sect1] sector name 1" % (key) m_open = mock.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain key is empty", self.importer.load) @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "Project CSV code1 domain name is empty", self.importer.load) @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') 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') @mock.patch("%s.os.path.isfile" % module) 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.mock_open(read_data=csv) m_open.return_value.__iter__ = lambda self: iter(self.readline, '') with mock.patch("%s.open" % (module), m_open, create=True): self.assertRaisesRegexp( HPCStatsSourceError, "duplicated project code code1 in CSV file", self.importer.load)