protected override List <TestResult> GetTestResults()
        {
            var testResults = new List <TestResult>();

            if (_filesNotFound.Any())
            {
                foreach (var fileNotFound in _filesNotFound)
                {
                    testResults.Add(new TestResult(ResultType.Error, new Location(string.Empty),
                                                   string.Format(Noark5Messages.FileNotFound, fileNotFound)));
                }

                return(testResults);
            }

            var archiveDates = new StartAndEndDate(
                _registrationCreationDates.First(),
                _registrationCreationDates.Last()
                );
            var publicJournalDates = new StartAndEndDate(
                _headPublicJournal.JournalStartDate,
                _headPublicJournal.JournalEndDate
                );
            var runningJournalDates = new StartAndEndDate(
                _headRunningJournal.JournalStartDate,
                _headRunningJournal.JournalEndDate
                );

            testResults.AddRange(new[]
            {
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesArchive,
                                   archiveDates.StartDate(), archiveDates.EndDate()
                                   )),
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesPublicJournal,
                                   publicJournalDates.StartDate(), publicJournalDates.EndDate()
                                   )),
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesRunningJournal,
                                   runningJournalDates.StartDate(), runningJournalDates.EndDate()
                                   ))
            });

            if (!StartAndEndDate.Equals(publicJournalDates, runningJournalDates))
            {
                testResults.Add(new TestResult(ResultType.Error, new Location(""),
                                               Noark5Messages.ArchiveStartAndEndDateControlMessage_UnEqualJournalDates));
            }

            if (PeriodSeparationIsSharp() &&
                !StartAndEndDate.Equals(archiveDates, publicJournalDates, runningJournalDates))
            {
                testResults.Add(new TestResult(ResultType.Error, new Location(""),
                                               Noark5Messages.ArchiveStartAndEndDateControlMessage_UnEqualJournalAndArchiveDates));
            }

            return(testResults);
        }
    public void QueryExecutionThrowsValidationExceptionWhenInvalid()
    {
        var query = new StartAndEndDate
        {
            Start = DateTime.Now,
            End   = DateTime.Now.AddHours(-1)
        };

        Assert.ThrowsAsync <ValidationException>(async() => await this.requestProcessor.HandleAsync(query, default));
    }
    public async Task QueryExecutionSucceedsWhenValid()
    {
        var query = new StartAndEndDate
        {
            Start = DateTime.Now,
            End   = DateTime.Now.AddHours(1)
        };

        var result = await this.requestProcessor.HandleAsync(query, default);

        Assert.IsTrue(result);
    }
    public void QueryValidationFailsWhenEndIsBeforeStart()
    {
        var query = new StartAndEndDate
        {
            Start = DateTime.Now,
            End   = DateTime.Now.AddHours(-1)
        };

        var validators = this.GetAllValidators <StartAndEndDate>();
        var isValid    = validators.All(v => v.Validate(query).IsValid);

        Assert.IsFalse(isValid);
    }
    public void QueryValidationSucceedsWhenEndIsAfterStart()
    {
        var query = new StartAndEndDate
        {
            Start = DateTime.Now,
            End   = DateTime.Now.AddHours(1)
        };

        var validators = this.GetAllValidators <StartAndEndDate>();
        var isValid    = validators.All(v => v.Validate(query).IsValid);

        Assert.IsTrue(isValid);
    }
 public bool Equals(StartAndEndDate startAndEndDate)
 {
     return(startAndEndDate._startDate.Equals(_startDate) &&
            startAndEndDate._endDate.Equals(_endDate));
 }
        protected override List <TestResult> GetTestResults()
        {
            var testResults = new List <TestResult>();

            JournalHead headPublicJournal;
            JournalHead headRunningJournal;

            ArchiveXmlFile publicJournal  = _archive.GetArchiveXmlFile(ArkadeConstants.PublicJournalXmlFileName);
            ArchiveXmlFile runningJournal = _archive.GetArchiveXmlFile(ArkadeConstants.RunningJournalXmlFileName);

            try
            {
                headPublicJournal  = JournalGuillotine.Behead(publicJournal);
                headRunningJournal = JournalGuillotine.Behead(runningJournal);
            }
            catch
            {
                testResults.Add(new TestResult(
                                    ResultType.Error, new Location(string.Empty), Noark5Messages.CouldNotReadFromFiles)
                                );

                return(testResults);
            }

            var archiveDates = new StartAndEndDate(
                _registrationCreationDates.First(),
                _registrationCreationDates.Last()
                );
            var publicJournalDates = new StartAndEndDate(
                headPublicJournal.JournalStartDate,
                headPublicJournal.JournalEndDate
                );
            var runningJournalDates = new StartAndEndDate(
                headRunningJournal.JournalStartDate,
                headRunningJournal.JournalEndDate
                );

            testResults.AddRange(new[]
            {
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesArchive,
                                   archiveDates.StartDate(), archiveDates.EndDate()
                                   )),
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesPublicJournal,
                                   publicJournalDates.StartDate(), publicJournalDates.EndDate()
                                   )),
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesRunningJournal,
                                   runningJournalDates.StartDate(), runningJournalDates.EndDate()
                                   ))
            });

            if (!StartAndEndDate.Equals(publicJournalDates, runningJournalDates))
            {
                testResults.Add(new TestResult(ResultType.Error, new Location(""),
                                               Noark5Messages.ArchiveStartAndEndDateControlMessage_UnEqualJournalDates));
            }


            if (_periodSeparationIsSharp && !StartAndEndDate.Equals(archiveDates, publicJournalDates, runningJournalDates))
            {
                testResults.Add(new TestResult(ResultType.Error, new Location(""),
                                               Noark5Messages.ArchiveStartAndEndDateControlMessage_UnEqualJournalAndArchiveDates));
            }

            return(testResults);
        }