94 lines
No EOL
3.3 KiB
Python
94 lines
No EOL
3.3 KiB
Python
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() |