No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

77 líneas
2.2KB

  1. using CartWise.Domain.Entities;
  2. using CartWise.Domain.Enums;
  3. namespace CartWise.Domain.Tests;
  4. public class HouseholdTests
  5. {
  6. private static readonly DateTime Now = new(2026, 8, 10, 12, 0, 0, DateTimeKind.Utc);
  7. [Fact]
  8. public void Constructor_CreatesOwnerMembershipForCreator()
  9. {
  10. var household = new Household("The Smiths", "user-1", Now);
  11. var member = Assert.Single(household.Members);
  12. Assert.Equal("user-1", member.UserId);
  13. Assert.Equal(HouseholdRole.Owner, member.Role);
  14. Assert.Equal(household.HouseholdId, member.HouseholdId);
  15. Assert.Equal(Now, member.JoinedUtc);
  16. }
  17. [Fact]
  18. public void Constructor_TrimsName()
  19. {
  20. var household = new Household(" The Smiths ", "user-1", Now);
  21. Assert.Equal("The Smiths", household.Name);
  22. }
  23. [Theory]
  24. [InlineData("")]
  25. [InlineData(" ")]
  26. [InlineData(null)]
  27. public void Constructor_ThrowsWhenNameIsMissing(string? name)
  28. {
  29. Assert.Throws<ArgumentException>(() => new Household(name!, "user-1", Now));
  30. }
  31. [Theory]
  32. [InlineData("")]
  33. [InlineData(" ")]
  34. [InlineData(null)]
  35. public void Constructor_ThrowsWhenCreatedByUserIdIsMissing(string? userId)
  36. {
  37. Assert.Throws<ArgumentException>(() => new Household("The Smiths", userId!, Now));
  38. }
  39. [Fact]
  40. public void AddMember_AddsMemberWithGivenRole()
  41. {
  42. var household = new Household("The Smiths", "user-1", Now);
  43. var member = household.AddMember("user-2", HouseholdRole.Member, Now);
  44. Assert.Equal(2, household.Members.Count);
  45. Assert.Equal("user-2", member.UserId);
  46. Assert.Equal(HouseholdRole.Member, member.Role);
  47. }
  48. [Fact]
  49. public void AddMember_ThrowsWhenUserIsAlreadyAMember()
  50. {
  51. var household = new Household("The Smiths", "user-1", Now);
  52. Assert.Throws<InvalidOperationException>(() => household.AddMember("user-1", HouseholdRole.Member, Now));
  53. }
  54. [Fact]
  55. public void IsMember_ReturnsTrueForExistingMemberAndFalseOtherwise()
  56. {
  57. var household = new Household("The Smiths", "user-1", Now);
  58. Assert.True(household.IsMember("user-1"));
  59. Assert.False(household.IsMember("user-2"));
  60. }
  61. }

Powered by TurnKey Linux.