emmental/tests/sidebar/test_decade.py

64 lines
2.5 KiB
Python

# Copyright 2022 (c) Anna Schumaker.
"""Tests our decade / year section and tree."""
import emmental.sidebar.decade
import tests.util
import unittest.mock
from gi.repository import Gtk
class TestDecade(tests.util.TestCase):
"""Test our Decade section."""
def setUp(self):
"""Set up common variables."""
super().setUp()
self.decades = emmental.sidebar.decade.Section(self.sql.decades,
self.sql.years)
def test_init(self):
"""Test that the decade section is set up correctly."""
self.assertIsInstance(self.decades, emmental.sidebar.section.Section)
self.assertEqual(self.decades._factory.row_type,
emmental.sidebar.decade.DecadeRow)
self.assertEqual(self.decades.table, self.sql.decades)
self.assertEqual(self.decades.year_table, self.sql.years)
self.assertEqual(self.decades.icon_name, "year-alt")
self.assertEqual(self.decades.title, "Decades & Years")
def test_subtitle(self):
"""Test that the subtitle property is set properly."""
self.assertEqual(self.decades.subtitle, "0 decades, 0 years")
self.sql.decades.create(1980)
self.assertEqual(self.decades.subtitle, "1 decade, 0 years")
self.sql.years.create(1985)
self.assertEqual(self.decades.subtitle, "1 decade, 1 year")
self.sql.years.create(1988)
self.assertEqual(self.decades.subtitle, "1 decade, 2 years")
self.sql.decades.create(1990)
self.assertEqual(self.decades.subtitle, "2 decades, 2 years")
def test_decade_row(self):
"""Test the decaderow widget."""
treeitem = Gtk.TreeListRow()
treeitem.get_item = unittest.mock.Mock()
listitem = Gtk.ListItem()
listitem.get_item = unittest.mock.Mock(return_value=treeitem)
treeitem.get_item.return_value = self.sql.decades.create(1980)
row = emmental.sidebar.decade.DecadeRow(listitem)
self.assertIsInstance(row, emmental.sidebar.row.TreeRow)
self.assertIsInstance(row.child, emmental.sidebar.row.Row)
self.assertTrue(row.indented)
row.bind()
self.assertEqual(row.child.name, "The 1980s")
self.assertEqual(row.child.year, 1980)
row.unbind()
treeitem.get_item.return_value = self.sql.years.create(1988)
row.bind()
self.assertEqual(row.child.name, "1988")
self.assertEqual(row.child.year, 1988)
row.unbind()