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.
This commit is contained in:
parent
1a12e6d3c5
commit
51a1697c83
18 changed files with 866 additions and 166 deletions
37
tests/test_engine.py
Normal file
37
tests/test_engine.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue