public async void FindById__if_Ids_do_not_match__Return_null()
        {
            // Arrange
            var data = new List <ConfirmationReport> {
                new ConfirmationReport {
                    Id = 1, CustomerName = "Customer 1"
                },
                new ConfirmationReport {
                    Id = 2, CustomerName = "Customer 2"
                },
                new ConfirmationReport {
                    Id = 3, CustomerName = "Customer 3"
                },
                new ConfirmationReport {
                    Id = 4, CustomerName = "Customer 4"
                }
            };

            // Create a DbSet substitute.
            var set = Substitute.For <DbSet <ConfirmationReport>, IQueryable <ConfirmationReport>, IDbAsyncEnumerable <ConfirmationReport> >()
                      .SetupData(data);

            db.DbSet.Returns(set);
            // mapping not relevant for test
            ConfirmationReport result = null;

            mapper.Map <ConfirmationReportViewModel>(Arg.Do <ConfirmationReport>(l => result = l));
            var service = new ConfirmationReportQueryService(db, mapper);

            // Act
            var actual = await service.FindById(5);

            // Assert
            Assert.IsNull(result);
        }
        public void Save__overlapped_details__Throw_OverlappedDetailException()
        {
            // Arrange
            var reportView = new ConfirmationReportViewModel
            {
                Details = new List <ConfirmationReportDetailViewModel>
                {
                    new ConfirmationReportDetailViewModel
                    {
                        Date     = new DateTime(2016, 2, 1),
                        FromTime = new DateTime(2016, 2, 1, 8, 0, 0),
                        ToTime   = new DateTime(2016, 2, 1, 18, 0, 0)
                    },
                    new ConfirmationReportDetailViewModel
                    {
                        Date     = new DateTime(2016, 2, 1),
                        FromTime = new DateTime(2016, 2, 1, 8, 0, 0),
                        ToTime   = new DateTime(2016, 2, 1, 18, 0, 0)
                    }
                }
            };

            var report = new ConfirmationReport();

            //Act
            report.Save(reportView);
        }
        public void Constructor__new_instance_should_be_with_DRAFT_status()
        {
            // Arrange
            var report = new ConfirmationReport();

            // Assert
            Assert.That(report.Status, Is.EqualTo(Domain.Model.ReportStatus.Draft));
        }
        public void Constructor__new_instance_should_have_empty_initialized_details_list()
        {
            // Arrange
            var report = new ConfirmationReport();

            // Assert
            Assert.That(report.Details, Is.Not.Null);
            Assert.That(report.Details, Is.Empty);
            Assert.That(report.Details.Count(), Is.EqualTo(0));
        }
        public bool CheckOverlappedDetails__TestMethod(ConfirmationReportDetail A, ConfirmationReportDetail B)
        {
            // Arrange
            var report = new ConfirmationReport();

            report.AddDetail(A);
            report.AddDetail(B);

            // Act
            return(report.CheckOverlappedDetails());
        }
        public void SaveDraft__Report__should_be_marked_as_DRAFT()
        {
            // Arrange
            var reportView = new ConfirmationReportViewModel {
            };
            var report     = new ConfirmationReport();

            // Act
            report.SaveDraft(reportView);

            // Assert
            Assert.That(report.Status, Is.EqualTo(Domain.Model.ReportStatus.Draft));
        }
        public void Save__Report__should_be_marked_as_COMPLETED()
        {
            // Arrange
            var reportView = new ConfirmationReportViewModel {
            };
            var report     = new ConfirmationReport();

            // Act
            report.Save(reportView);

            // Assert
            Assert.That(report.Status, Is.EqualTo(Domain.Model.ReportStatus.Completed));
        }
        public async Task SaveDraft__ConfirmationReportViewModel_with_Id_Zero__Should_not_get_ConfirmationReport_from_Repo()
        {
            // Arrange
            ConfirmationReportViewModel model = new ConfirmationReportViewModel {
            };
            ConfirmationReport domainModel    = new ConfirmationReport {
            };
            var service = new ConfirmationReportCommandService(repo, mapper);

            // Act
            await service.SaveDraft(model);

            // Assert
            await repo.DidNotReceive().GetById(Arg.Any <int>());
        }
        public async Task SaveDraft__ConfirmationReportViewModel_not_Empty__Should_call_SaveDraft_on_Domain()
        {
            // Arrange
            ConfirmationReportViewModel model = new ConfirmationReportViewModel {
                Id = 1
            };
            ConfirmationReport domainModel = Substitute.For <ConfirmationReport>();

            repo.GetById(model.Id).Returns(domainModel);
            var service = new ConfirmationReportCommandService(repo, mapper);

            // Act
            await service.SaveDraft(model);

            // Assert
            domainModel.Received().SaveDraft(model);
        }
        public async Task SaveDraft__ConfirmationReportViewModel_with_Id_not_Zero__Should_get_ConfirmationReport_from_Repo()
        {
            // Arrange
            ConfirmationReportViewModel model = new ConfirmationReportViewModel {
                Id = 1
            };
            ConfirmationReport domainModel = new ConfirmationReport {
            };

            repo.GetById(model.Id).Returns(domainModel);
            var service = new ConfirmationReportCommandService(repo, mapper);

            // Act
            await service.SaveDraft(model);

            // Assert
            await repo.Received().GetById(model.Id);
        }