def setUp(self): self.dupeChecker = MECODupeChecker() self.p = MECOXMLParser(True) # run in testing mode self.dbConnect = MSGDBConnector(True) self.dbUtil = MSGDBUtil() self.conn = self.dbConnect.connectDB() self.cur = self.conn.cursor()
class TestMECODupeChecker(unittest.TestCase): """ Unit tests for duplicate checking. """ def setUp(self): self.dupeChecker = MECODupeChecker() self.p = MECOXMLParser(True) # run in testing mode self.dbConnect = MSGDBConnector(True) self.dbUtil = MSGDBUtil() self.conn = self.dbConnect.connectDB() self.cur = self.conn.cursor() def testInit(self): self.assertEqual(self.dupeChecker.__class__.__name__, "MECODupeChecker", "Dupe checker has been created.") def testFindIndividualDupe(self): """ Find a duplicate record when only one exists. """ self.dbUtil.eraseTestMeco() self.p.filename = "../../test-data/meco_v3-energy-test-data.xml" fileObject = open(self.p.filename, "rb") self.p.parseXML(fileObject, True) self.assertTrue( self.dupeChecker.readingBranchDupeExists(self.conn, '100000', '2013-04-08 00:30:00', '1', True), "Record should already exist") def testLoadOnTop(self): """ If the same data set is loaded in succession, all values will be duplicated. Verify that this is true. This is no longer possible as duplicates are dropped before insertion. """ pass def testLoadSingleMissingEntry(self): """ A reading will be inserted into the database where the reading does not currently exist as determined by the MeterName-IntervalEndTime-Channel tuple. """ pass def tearDown(self): self.dbConnect.closeDB(self.conn)
class TestMECOXMLParser(unittest.TestCase): """ Unit tests for MECO XML Parser. """ def setUp(self): self.p = MECOXMLParser(True) # run in testing mode self.dbConnect = MSGDBConnector(True) self.dbUtil = MSGDBUtil() self.conn = self.dbConnect.connectDB() self.cur = self.conn.cursor() def testMECOXMLParserCanBeInited(self): self.assertIsNotNone(self.p) def testEveryElementIsVisited(self): self.dbUtil.eraseTestMeco() self.p.filename = "../../test-data/meco_v3-energy-test-data.xml" fileObject = open(self.p.filename, "rb") expectedCount = 125 self.p.parseXML(fileObject, True) print "element count = %s" % self.p.processForInsertElementCount self.assertEqual(self.p.processForInsertElementCount, expectedCount) def testAllTableNamesArePresent(self): self.dbUtil.eraseTestMeco() self.p.filename = "../../test-data/meco_v3-energy-test-data.xml" fileObject = open(self.p.filename, "rb") self.p.parseXML(fileObject, True) fail = False for key in self.p.tableNameCount.keys(): print key + ": ", print self.p.tableNameCount[key] if self.p.tableNameCount[key] < 1: if key != 'ChannelStatus' and key != 'IntervalStatus' and key \ != 'EventData' and key != 'Event': print "table = %s" % key fail = True self.assertFalse(fail, "At least one table of each type should have been " "encountered.") def tearDown(self): self.dbConnect.closeDB(self.conn)
class TestMECOXMLParser(unittest.TestCase): """ Unit tests for MECO XML Parser. """ def setUp(self): self.p = MECOXMLParser(True) # run in testing mode self.dbConnect = MSGDBConnector(True) self.dbUtil = MSGDBUtil() self.conn = self.dbConnect.connectDB() self.cur = self.conn.cursor() def testMECOXMLParserCanBeInited(self): self.assertIsNotNone(self.p) def testEveryElementIsVisited(self): self.dbUtil.eraseTestMeco() self.p.filename = "../../test-data/meco_v3-energy-test-data.xml" fileObject = open(self.p.filename, "rb") expectedCount = 125 self.p.parseXML(fileObject, True) print "element count = %s" % self.p.processForInsertElementCount self.assertEqual(self.p.processForInsertElementCount, expectedCount) def testAllTableNamesArePresent(self): self.dbUtil.eraseTestMeco() self.p.filename = "../../test-data/meco_v3-energy-test-data.xml" fileObject = open(self.p.filename, "rb") self.p.parseXML(fileObject, True) fail = False for key in self.p.tableNameCount.keys(): print key + ": ", print self.p.tableNameCount[key] if self.p.tableNameCount[key] < 1: if key != 'ChannelStatus' and key != 'IntervalStatus' and key \ != 'EventData' and key != 'Event': print "table = %s" % key fail = True self.assertFalse( fail, "At least one table of each type should have been " "encountered.") def tearDown(self): self.dbConnect.closeDB(self.conn)
def __init__(self, testing=False): """ Constructor. :param testing: Flag indicating if testing mode is on. """ self.logger = SEKLogger(__name__) self.parser = MECOXMLParser(testing) self.configer = MSGConfiger()