@@ -6,29 +6,57 @@ def tracker():
66 return ExpenseTracker ()
77
88def test_add_expense_stores_amount (tracker ):
9+ # Act
910 tracker .add_expense (50 )
11+ # Assert
1012 assert tracker .expenses [0 ]['amount' ] == 50
1113
12- def test_add_expense_with_category (tracker ):
14+ def test_add_expense_updates_total (tracker ):
15+ # Act
16+ tracker .add_expense (10 )
17+ # Assert
18+ assert tracker .total == 10
19+
20+ def test_add_multiple_expenses (tracker ):
21+ # Act
22+ tracker .add_expense (10 )
23+ tracker .add_expense (5 )
24+ # Assert
25+ assert tracker .total == 15
26+
27+ def test_add_expense_with_negative_amount_fails (tracker ):
28+ # Act and Assert
29+ with pytest .raises (ValueError ):
30+ tracker .add_expense (- 10 )
31+
32+ def test_add_expense_can_store_category (tracker ):
33+ # Act
1334 tracker .add_expense (10 , category = "food" )
35+ # Assert
1436 assert tracker .expenses [0 ]['category' ] == "food"
1537
1638def test_list_expenses_by_category_returns_only_requested_category (tracker ):
1739 # Arrange
1840 tracker .add_expense (10.00 , category = "food" )
1941 tracker .add_expense (20.00 , category = "travel" )
2042 tracker .add_expense (5.00 , category = "food" )
21-
2243 # Act
2344 results = tracker .list_expenses_by_category ("food" )
24-
2545 # Assert
2646 assert isinstance (results , list )
27- # Only "food" expenses should be returned
2847 assert all (item ["category" ] == "food" for item in results )
29- # Amounts for the returned items should match the two "food" entries
3048 assert sorted (item ["amount" ] for item in results ) == [5.00 , 10.00 ]
3149
50+ def test_edit_expense (tracker ):
51+ # Arrange
52+ expense_id = tracker .add_expense (10 , category = "food" )
53+ # Act
54+ tracker .edit_expense (expense_id , new_amount = 12.50 , new_category = "dining" )
55+ edited_expense = tracker .get_expense (expense_id )
56+ # Assert
57+ assert tracker .total == 12.50
58+ assert edit_expense ["category" ] == "dining"
59+
3260def test_delete_expense (tracker ):
3361 # Arrange: Add an expense to delete
3462 expense_id = tracker .add_expense (20 , "entertainment" )
0 commit comments