def test_get_queries(self): db = DatabaseWithMockedRow(mocked_row=['foo']) # query method is not memoized, so let's count all queries (even the same ones) for _ in range(5): self.assertEqual(db.query_row('SELECT FOO'), ['foo']) self.assertEqual(len(db.get_queries()), 5) self.assertEqual(db.get_queries()[0], 'SELECT FOO')
def test_cached_get_tables(self): tables_list = ['foo'] db = DatabaseWithMockedRow(mocked_row=tables_list) # this would made five queries to database if not memoization in get_tables for _ in range(5): self.assertEqual(db.get_tables(), tables_list) # however, only one is made :) self.assertEqual(len(db.get_queries()), 1)
def test_cached_get_table_schema(self): db = DatabaseWithMockedRow(mocked_row=[None, 'CREATE TABLE foo;']) # this would made ten queries to database if not memoization in get_table_schema # also test that @memoize decorator correctly handles different arguments for _ in range(5): schema = db.get_table_schema('0000_the_table') self.assertEqual(schema, 'CREATE TABLE foo;') schema = db.get_table_schema('0002_not_used_indices') self.assertEqual(schema, 'CREATE TABLE foo;') queries = db.get_queries() print(queries) # however, only two are made :) self.assertEqual(len(queries), 2) self.assertEqual('SHOW CREATE TABLE `0000_the_table`', str(queries[0])) self.assertEqual('SHOW CREATE TABLE `0002_not_used_indices`', str(queries[1]))