public void GivenCustomerCsvWhenCustomerIsNullThenReturnNullReferenceException()
        {
            // Arrange
            var mockInvitationService = new Mock <IInvitationService>();
            var mockCsvReader         = new Mock <ICsvReader>();

            mockCsvReader.Setup(x => x.Parse <Customer>(It.IsAny <string>()));
            var controller = new LetterGeneratorController(mockCsvReader.Object, mockInvitationService.Object);

            // Act
            Action actual = () => controller.Get();

            // Assert
            Assert.ThrowsException <NullReferenceException>(actual);
        }
        public void GivenCustomerCsvWhenCustomerStreamIsPresentThenGenerateRenewalInvitationLetters()
        {
            // Arrange
            var mockInvitationService = new Mock <IInvitationService>();
            var mockCsvReader         = new Mock <ICsvReader>();

            var customers = this.GetCustomersMock();

            mockCsvReader.Setup(x => x.Parse <Customer>(It.IsAny <string>())).Returns(customers);
            mockInvitationService.Setup(x => x.GenerateInvitationLetter(It.IsAny <Customer>()));
            var controller = new LetterGeneratorController(mockCsvReader.Object, mockInvitationService.Object);

            // Act
            var result = controller.Get();

            // Assert
            mockCsvReader.Verify(c => c.Parse <Customer>(It.IsAny <string>()), Times.Once);
            Assert.IsTrue(result);
        }