Esempio n. 1
0
    def test_migrate_from_v4(self):

        # Create version 3 database
        self._create_v4()

        # Verify
        engine = self._get_engine()
        self.assertTrue(engine.has_table("shows"))
        self.assertTrue(engine.has_table("episodes"))
        self.assertTrue(engine.has_table("meta"))

        columns = self._tables_dict(engine, "shows")
        self.assertIsNotNone(columns.get("url"))
        self.assertIsNotNone(columns.get("enabled"))
        self.assertIsNotNone(columns.get("status"))

        columns = self._tables_dict(engine, "episodes")
        self.assertIsNotNone(columns.get("notified"))
        engine.dispose()

        # Migrate to latest version (noop)
        self._migrate(self.path)

        db = Database("sqlite:///%s" % self.path)
        self.assertEqual(4, db.get_schema_version())
        db.close()
Esempio n. 2
0
	def test_using_existing_database(self):

		path = mktemp()
		self.tempfiles.append(path)

		db = Database(path)
		self.assertEqual(len(db.get_shows()), 0)
		db.close()

		db = Database(path)
		self.assertEqual(len(db.get_shows()), 0)
		db.close()
Esempio n. 3
0
    def test_disable_auto_migration(self):

        # Create a custom database
        self._create_custom()

        # Verify
        engine = self._get_engine()
        self.assertTrue(engine.has_table("shows"))
        self.assertFalse(engine.has_table("episodes"))
        self.assertTrue(engine.has_table("meta"))

        columns = self._tables_dict(engine, "shows")
        self.assertIsNotNone(columns.get("my_int"))
        self.assertIsNone(columns.get("url"))
        self.assertIsNone(columns.get("enabled"))
        self.assertIsNone(columns.get("status"))
        engine.dispose()

        # Migrate to latest version -> noop
        self._migrate(self.path)

        # Check result
        engine = self._get_engine()
        self.assertTrue(engine.has_table("shows"))
        self.assertFalse(engine.has_table("episodes"))
        self.assertTrue(engine.has_table("meta"))

        columns = self._tables_dict(engine, "shows")
        self.assertIsNotNone(columns.get("my_int"))
        self.assertIsNone(columns.get("url"))
        self.assertIsNone(columns.get("enabled"))
        self.assertIsNone(columns.get("status"))
        engine.dispose()

        # Check new schema version
        db = Database("sqlite:///%s" % self.path)
        self.assertEqual(-1, db.get_schema_version())
        db.close()
Esempio n. 4
0
    def test_migrate_from_v2(self):

        # Create version 2 database
        self._create_v2()

        # Verify
        engine = self._get_engine()
        self.assertTrue(engine.has_table("shows"))
        self.assertTrue(engine.has_table("episodes"))
        self.assertTrue(engine.has_table("meta"))

        columns = self._tables_dict(engine, "shows")
        self.assertIsNotNone(columns.get("url"))
        self.assertIsNone(columns.get("enabled"))
        self.assertIsNone(columns.get("status"))

        columns = self._tables_dict(engine, "episodes")
        self.assertIsNone(columns.get("notified"))
        engine.dispose()

        # Migrate to latest version
        self._migrate(self.path)

        # Check result - version 3 adds shows.enabled and shows.status
        engine = self._get_engine()
        columns = self._tables_dict(engine, "shows")
        self.assertIsNotNone(columns.get("enabled"))
        self.assertIsNotNone(columns.get("status"))

        # Version 4 adds episodes.notified
        columns = self._tables_dict(engine, "episodes")
        self.assertIsNotNone(columns.get("notified"))
        engine.dispose()

        # Check new schema version
        db = Database("sqlite:///%s" % self.path)
        self.assertEqual(4, db.get_schema_version())
        db.close()
Esempio n. 5
0
    def _migrate(self, filename):

        db = Database(filename)
        db.migrate()
        db.close()