ThrowIfInvalidLabelTests.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.ComponentModel.DataAnnotations;
  2. using RackPeek.Domain.Helpers;
  3. namespace Tests.Unit.Helpers;
  4. public class ThrowIfInvalidLabelTests
  5. {
  6. [Fact]
  7. public void label_key__valid_key__does_not_throw()
  8. {
  9. var ex = Record.Exception(() => ThrowIfInvalid.LabelKey("env"));
  10. Assert.Null(ex);
  11. }
  12. [Theory]
  13. [InlineData("")]
  14. [InlineData(" ")]
  15. public void label_key__empty_or_whitespace__throws_validation_exception(string key)
  16. {
  17. Assert.Throws<ValidationException>(() => ThrowIfInvalid.LabelKey(key));
  18. }
  19. [Fact]
  20. public void label_key__exceeds_50_chars__throws_validation_exception()
  21. {
  22. var longKey = new string('k', 51);
  23. var ex = Assert.Throws<ValidationException>(() => ThrowIfInvalid.LabelKey(longKey));
  24. Assert.Contains("too long", ex.Message);
  25. }
  26. [Fact]
  27. public void label_key__exactly_50_chars__does_not_throw()
  28. {
  29. var key = new string('k', 50);
  30. var ex = Record.Exception(() => ThrowIfInvalid.LabelKey(key));
  31. Assert.Null(ex);
  32. }
  33. [Fact]
  34. public void label_value__valid_value__does_not_throw()
  35. {
  36. var ex = Record.Exception(() => ThrowIfInvalid.LabelValue("production"));
  37. Assert.Null(ex);
  38. }
  39. [Theory]
  40. [InlineData("")]
  41. [InlineData(" ")]
  42. public void label_value__empty_or_whitespace__throws_validation_exception(string value)
  43. {
  44. Assert.Throws<ValidationException>(() => ThrowIfInvalid.LabelValue(value));
  45. }
  46. [Fact]
  47. public void label_value__exceeds_200_chars__throws_validation_exception()
  48. {
  49. var longValue = new string('v', 201);
  50. var ex = Assert.Throws<ValidationException>(() => ThrowIfInvalid.LabelValue(longValue));
  51. Assert.Contains("too long", ex.Message);
  52. }
  53. [Fact]
  54. public void label_value__exactly_200_chars__does_not_throw()
  55. {
  56. var value = new string('v', 200);
  57. var ex = Record.Exception(() => ThrowIfInvalid.LabelValue(value));
  58. Assert.Null(ex);
  59. }
  60. }