emmental/tests/db/test_decades.py

131 lines
4.8 KiB
Python

# Copyright 2022 (c) Anna Schumaker
"""Tests our decade Gio.ListModel."""
import emmental.db
import tests.util
class TestDecadeObject(tests.util.TestCase):
"""Tests our decade object."""
def setUp(self):
"""Set up common variables."""
tests.util.TestCase.setUp(self)
self.table = self.sql.decades
self.decade = emmental.db.decades.Decade(table=self.table,
propertyid=12345,
decade=2020, name="The 2020s")
def test_init(self):
"""Test that the Decade is set up properly."""
self.assertIsInstance(self.decade, emmental.db.playlist.Playlist)
self.assertEqual(self.decade.table, self.table)
self.assertEqual(self.decade.propertyid, 12345)
self.assertEqual(self.decade.decade, 2020)
self.assertEqual(self.decade.primary_key, 2020)
self.assertEqual(self.decade.name, "The 2020s")
self.assertIsNone(self.decade.parent)
class TestDecadeTable(tests.util.TestCase):
"""Tests our decade table."""
def setUp(self):
"""Set up common variables."""
super().setUp()
self.table = self.sql.decades
def test_init(self):
"""Test that the decade table is configured correctly."""
self.assertIsInstance(self.table, emmental.db.playlist.Table)
self.assertEqual(len(self.table), 0)
def test_construct(self):
"""Test constructing a decade playlist."""
decade = self.table.construct(propertyid=1980, decade=1980,
name="The 1980s")
self.assertIsInstance(decade, emmental.db.decades.Decade)
self.assertEqual(decade.table, self.table)
self.assertEqual(decade.propertyid, 1980)
self.assertEqual(decade.decade, 1980)
self.assertEqual(decade.name, "The 1980s")
self.assertFalse(decade.active)
def test_create(self):
"""Test creating a decade playlist."""
decade = self.table.create(1988)
self.assertIsInstance(decade, emmental.db.decades.Decade)
self.assertEqual(decade.decade, 1980)
self.assertEqual(decade.name, "The 1980s")
cur = self.sql("SELECT COUNT(decade) FROM decades")
self.assertEqual(cur.fetchone()["COUNT(decade)"], 1)
row = self.sql("""SELECT COUNT(*) FROM playlist_properties
WHERE propertyid=?""", decade.propertyid).fetchone()
self.assertEqual(row["COUNT(*)"], 1)
self.assertIsNone(self.table.create(1985))
def test_delete(self):
"""Test deleting a decade playlist."""
decade = self.table.create(1980)
self.assertTrue(decade.delete())
cur = self.sql("SELECT COUNT(decade) FROM decades")
self.assertEqual(cur.fetchone()["COUNT(decade)"], 0)
self.assertEqual(len(self.table), 0)
self.assertIsNone(self.table.get_item(0))
row = self.sql("""SELECT COUNT(*) FROM playlist_properties
WHERE propertyid=?""", decade.propertyid).fetchone()
self.assertEqual(row["COUNT(*)"], 0)
self.assertFalse(decade.delete())
def test_filter(self):
"""Test filtering a decade playlist."""
self.table.create(1980)
self.table.create(1990)
self.table.filter("*80*", now=True)
self.assertSetEqual(self.table.get_filter().keys, {1980})
self.table.filter("the*s", now=True)
self.assertSetEqual(self.table.get_filter().keys, {1980, 1990})
def test_get_sort_key(self):
"""Test getting the sort key for a decade playlist."""
decade = self.table.create(1980)
self.assertEqual(self.table.get_sort_key(decade), 1980)
def test_load(self):
"""Load the decade table from the database."""
self.table.create(1980)
self.table.create(1990)
decades2 = emmental.db.decades.Table(self.sql)
self.assertEqual(len(decades2), 0)
decades2.load(now=True)
self.assertEqual(len(decades2), 2)
self.assertEqual(decades2.get_item(0).decade, 1980)
self.assertEqual(decades2.get_item(0).name, "The 1980s")
self.assertEqual(decades2.get_item(1).decade, 1990)
self.assertEqual(decades2.get_item(1).name, "The 1990s")
def test_lookup(self):
"""Test looking up decade playlists."""
decade = self.table.create(1980)
self.assertEqual(self.table.lookup(1988), decade)
self.assertIsNone(self.table.lookup(1990))
def test_update(self):
"""Test updating decade attributes."""
decade = self.table.create(1980)
decade.active = True
row = self.sql("""SELECT active FROM playlist_properties
WHERE propertyid=?""", decade.propertyid).fetchone()
self.assertEqual(row["active"], True)