PageRenderTime 46ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Demo.TDD.November.2012/FrozenBytes.Tdd.Demo.Session1nd2/FrozenBytes.Tdd.Demo.After/FrozenBytes.Tdd.Demo.UnitTests/RiderServiceTests1.cs

https://github.com/segilbert/presentations
C# | 129 lines | 78 code | 23 blank | 28 comment | 0 complexity | 57f3612e663b0847e186b72f32cc9037 MD5 | raw file
  1. // -----------------------------------------------------------------------
  2. // <copyright file="RiderServiceTests1.cs" company="Microsoft">
  3. // TODO: Update copyright text.
  4. // </copyright>
  5. // -----------------------------------------------------------------------
  6. namespace FrozenBytes.Tdd.Demo.UnitTests
  7. {
  8. using System;
  9. using FluentAssertions;
  10. using FrozenBytes.Tdd.Legacy.Demo.Infrastructure.Repositories;
  11. using NSubstitute;
  12. using NUnit.Framework;
  13. using StriderCupRacing.Models;
  14. /// <summary>
  15. /// TODO: Update summary.
  16. /// </summary>
  17. public class RiderServiceTests1
  18. {
  19. // Rider who want to register for a BMX
  20. // Quickly _rider with min info
  21. // 1. first name
  22. // 2. last name
  23. // 3. DOB
  24. // Once _rider is register or created assign a number
  25. //
  26. [Test]
  27. public void CreateNewRider_WithAllRequiredInformation_ShouldReturnRiderNumber()
  28. {
  29. // AAA
  30. // Arrange
  31. IRiderRepository riderRepository = Substitute.For<IRiderRepository>();
  32. riderRepository.Add(Arg.Any<Rider>()).Returns(
  33. new Rider() { DateOfBirth = DateTime.Parse("08/03/2000"),
  34. FirstName = "Try",
  35. LastName = "Me",
  36. Number = 1 });
  37. RiderService riderService = new RiderService(riderRepository);
  38. Rider rider = new Rider()
  39. {
  40. DateOfBirth = DateTime.Parse("08/03/2000"),
  41. FirstName = "Try",
  42. LastName = "Me"
  43. };
  44. // Act
  45. int riderNumber = riderService.CreateNewRider( rider.FirstName,
  46. rider.LastName,
  47. rider.DateOfBirth);
  48. // Assert
  49. riderNumber.Should().Be(1);
  50. }
  51. [Test]
  52. //[ExpectedException(typeof(ArgumentNullException))]
  53. public void CreateNewRider_WithNoLastName_ShouldRaiseAnExpecption()
  54. {
  55. // AAA
  56. // Arrange
  57. TestableRiderService riderService = TestableRiderService.Create();
  58. riderService.Rider.LastName = string.Empty;
  59. // Act
  60. //int riderNumber = riderService.CreateNewRider(
  61. // rider.FirstName,
  62. // rider.LastName,
  63. // rider.DateOfBirth);
  64. // Assert
  65. Assert.Throws<ArgumentNullException>(
  66. delegate
  67. {
  68. int riderNumber = riderService.CreateNewRider(
  69. riderService.Rider.FirstName,
  70. riderService.Rider.LastName,
  71. riderService.Rider.DateOfBirth);
  72. });
  73. }
  74. }
  75. public class TestableRiderService : RiderService
  76. {
  77. private IRiderRepository _riderRepository;
  78. public TestableRiderService(IRiderRepository pxRepository, Rider pxRider)
  79. : base(pxRepository)
  80. {
  81. this._riderRepository = pxRepository;
  82. this.Rider = pxRider;
  83. }
  84. public Rider Rider { get; set; }
  85. public static TestableRiderService Create()
  86. {
  87. IRiderRepository riderRepository = Substitute.For<IRiderRepository>();
  88. riderRepository.Add(Arg.Any<Rider>()).Returns(
  89. new Rider()
  90. {
  91. DateOfBirth = DateTime.Parse("08/03/2000"),
  92. FirstName = "Try",
  93. LastName = "Me",
  94. Number = 1
  95. }
  96. );
  97. Rider rider = new Rider()
  98. {
  99. DateOfBirth = DateTime.Parse("08/03/2000"),
  100. FirstName = "Try",
  101. LastName = "Me"
  102. };
  103. return new TestableRiderService(riderRepository, rider);
  104. }
  105. }
  106. }