pen-tracker/tests/test_engine.py
Don Harper 51a1697c83 feat: Implement CLI and TUI for Fountain Pen Tracker
- Added CLI functionality for adding, editing, viewing, and deleting fountain pens.
- Introduced TUI using Textual for a more interactive experience.
- Created Pen and PenTracker classes to manage pen data and CSV storage.
- Implemented input validation for date fields.
- Added export functionality to JSON format.
- Updated project version to 0.2.0.
- Added unit tests for PenTracker functionality.
2026-04-26 23:00:52 -05:00

37 lines
No EOL
1.2 KiB
Python

import unittest
import tempfile
import os
from pen_tracker.engine import PenTracker, Pen
class TestPenTracker(unittest.TestCase):
def setUp(self):
self.temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.csv')
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")
if __name__ == '__main__':
unittest.main()