import os import tempfile import unittest from pen_tracker.engine import Ink, InkTracker, Pen, PenTracker class TestPenTracker(unittest.TestCase): def setUp(self): self.temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.db') self.temp_file.close() self.tracker = PenTracker(self.temp_file.name) def tearDown(self): os.unlink(self.temp_file.name) def test_add_and_load_pen(self): pen = Pen(Make="Pilot", Model="Metropolitan", Nib="F") self.tracker.pens.append(pen) self.tracker.save_data() # Load in new tracker new_tracker = PenTracker(self.temp_file.name) self.assertEqual(len(new_tracker.pens), 1) self.assertEqual(new_tracker.pens[0].Make, "Pilot") self.assertEqual(new_tracker.pens[0].Model, "Metropolitan") def test_sorting(self): self.tracker.pens = [ Pen(Make="Z", Model="A"), Pen(Make="A", Model="B") ] self.tracker.save_data() new_tracker = PenTracker(self.temp_file.name) self.assertEqual(new_tracker.pens[0].Make, "A") self.assertEqual(new_tracker.pens[1].Make, "Z") def test_pen_ink_history_records_changes(self): pen = Pen(Make="Pilot", Model="Metropolitan", Nib="F", Current_Ink="Blue") self.tracker.pens.append(pen) self.tracker.save_data() persisted = self.tracker.pens[0] history = self.tracker.get_ink_history(persisted.id) self.assertEqual(len(history), 1) self.assertEqual(history[0]['ink_name'], "Blue") persisted.Current_Ink = "N/A" self.tracker.save_data() history = self.tracker.get_ink_history(persisted.id) self.assertEqual(len(history), 2) self.assertEqual(history[-1]['ink_name'], "N/A") class TestInkTracker(unittest.TestCase): def setUp(self): self.temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.db') self.temp_file.close() self.tracker = InkTracker(self.temp_file.name) def tearDown(self): os.unlink(self.temp_file.name) def test_add_and_load_ink(self): ink = Ink(Vendor="Diamine", Name="Pumpkin", Color="Orange") self.tracker.inks.append(ink) self.tracker.save_data() new_tracker = InkTracker(self.temp_file.name) self.assertEqual(len(new_tracker.inks), 1) self.assertEqual(new_tracker.inks[0].Vendor, "Diamine") self.assertEqual(new_tracker.inks[0].Name, "Pumpkin") def test_sorting(self): self.tracker.inks = [ Ink(Vendor="Z", Name="A"), Ink(Vendor="A", Name="B") ] self.tracker.save_data() new_tracker = InkTracker(self.temp_file.name) self.assertEqual(new_tracker.inks[0].Vendor, "A") self.assertEqual(new_tracker.inks[1].Vendor, "Z") def test_save_and_load_ink(self): self.tracker.inks.append(Ink(Vendor='Waterman', Name='Intense Black', Color='Black', Notes='Good ink')) self.tracker.save_data() new_tracker = InkTracker(self.temp_file.name) self.assertEqual(len(new_tracker.inks), 1) self.assertEqual(new_tracker.inks[0].Vendor, 'Waterman') self.assertEqual(new_tracker.inks[0].Name, 'Intense Black') if __name__ == '__main__': unittest.main()