|
- using CartWise.Domain.Entities;
- using CartWise.Domain.Enums;
-
- namespace CartWise.Domain.Tests;
-
- public class ShoppingListItemTests
- {
- private static readonly DateTime Now = new(2026, 8, 10, 12, 0, 0, DateTimeKind.Utc);
-
- [Fact]
- public void TogglePurchased_MarksNeededItemAsPurchased()
- {
- var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
- var item = list.AddItem("Milk", null, null, "user-1", Now);
- var originalRowVersion = item.RowVersion;
-
- item.TogglePurchased(Now);
-
- Assert.Equal(ShoppingListItemStatus.Purchased, item.Status);
- Assert.Equal(Now, item.PurchasedUtc);
- Assert.NotEqual(originalRowVersion, item.RowVersion);
- }
-
- [Fact]
- public void TogglePurchased_UndoesPurchaseWhenAlreadyPurchased()
- {
- var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
- var item = list.AddItem("Milk", null, null, "user-1", Now);
- item.TogglePurchased(Now);
-
- item.TogglePurchased(Now.AddMinutes(5));
-
- Assert.Equal(ShoppingListItemStatus.Needed, item.Status);
- Assert.Null(item.PurchasedUtc);
- }
-
- [Fact]
- public void ToggleSkipped_MarksNeededItemAsSkipped()
- {
- var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
- var item = list.AddItem("Milk", null, null, "user-1", Now);
- var originalRowVersion = item.RowVersion;
-
- item.ToggleSkipped();
-
- Assert.Equal(ShoppingListItemStatus.Skipped, item.Status);
- Assert.NotEqual(originalRowVersion, item.RowVersion);
- }
-
- [Fact]
- public void ToggleSkipped_UnskipsWhenAlreadySkipped()
- {
- var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
- var item = list.AddItem("Milk", null, null, "user-1", Now);
- item.ToggleSkipped();
-
- item.ToggleSkipped();
-
- Assert.Equal(ShoppingListItemStatus.Needed, item.Status);
- }
- }
|