您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

62 行
1.9KB

  1. using CartWise.Domain.Entities;
  2. using CartWise.Domain.Enums;
  3. namespace CartWise.Domain.Tests;
  4. public class ShoppingListItemTests
  5. {
  6. private static readonly DateTime Now = new(2026, 8, 10, 12, 0, 0, DateTimeKind.Utc);
  7. [Fact]
  8. public void TogglePurchased_MarksNeededItemAsPurchased()
  9. {
  10. var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
  11. var item = list.AddItem("Milk", null, null, "user-1", Now);
  12. var originalRowVersion = item.RowVersion;
  13. item.TogglePurchased(Now);
  14. Assert.Equal(ShoppingListItemStatus.Purchased, item.Status);
  15. Assert.Equal(Now, item.PurchasedUtc);
  16. Assert.NotEqual(originalRowVersion, item.RowVersion);
  17. }
  18. [Fact]
  19. public void TogglePurchased_UndoesPurchaseWhenAlreadyPurchased()
  20. {
  21. var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
  22. var item = list.AddItem("Milk", null, null, "user-1", Now);
  23. item.TogglePurchased(Now);
  24. item.TogglePurchased(Now.AddMinutes(5));
  25. Assert.Equal(ShoppingListItemStatus.Needed, item.Status);
  26. Assert.Null(item.PurchasedUtc);
  27. }
  28. [Fact]
  29. public void ToggleSkipped_MarksNeededItemAsSkipped()
  30. {
  31. var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
  32. var item = list.AddItem("Milk", null, null, "user-1", Now);
  33. var originalRowVersion = item.RowVersion;
  34. item.ToggleSkipped();
  35. Assert.Equal(ShoppingListItemStatus.Skipped, item.Status);
  36. Assert.NotEqual(originalRowVersion, item.RowVersion);
  37. }
  38. [Fact]
  39. public void ToggleSkipped_UnskipsWhenAlreadySkipped()
  40. {
  41. var list = new ShoppingList(Guid.NewGuid(), "Groceries", "user-1", Now);
  42. var item = list.AddItem("Milk", null, null, "user-1", Now);
  43. item.ToggleSkipped();
  44. item.ToggleSkipped();
  45. Assert.Equal(ShoppingListItemStatus.Needed, item.Status);
  46. }
  47. }

Powered by TurnKey Linux.