コード例 #1
0
        public async Task GivenQuestionList_WhenICallGetSummary_ThenASummaryIsReturnedWithASetOfDistinctTags()
        {
            // Arrange
            DateTime        dateTime  = new DateTime(2013, 01, 4);
            List <Question> questions = new List <Question>
            {
                new Question(new CreateQuestionDto {
                    Tags = new[] { "x", "b", "z" }
                }),
                new Question(new CreateQuestionDto {
                    Tags = new[] { "a", "c", "z" }
                }),
                new Question(new CreateQuestionDto {
                    Tags = new[] { "z" }
                }),
            };

            _questionRepositoryMock
            .Setup(x => x.GetAllForDate(dateTime))
            .ReturnsAsync(questions);

            // Act
            DaySummaryDto daySummaryDto = await _daySummaryService.GetSummaryAsync(dateTime);

            // Assert
            Assert.That(daySummaryDto.UniqueTags.Count(), Is.EqualTo(5));
        }
コード例 #2
0
        public async Task GivenQuestionList_WhenICallGetSummary_ThenASummaryIsReturnedWithAViewTotal()
        {
            // Arrange
            DateTime        dateTime  = new DateTime(2013, 01, 4);
            List <Question> questions = new List <Question>
            {
                new Question(new CreateQuestionDto {
                    ViewTotal = 3
                }),
                new Question(new CreateQuestionDto {
                    ViewTotal = 4
                }),
                new Question(new CreateQuestionDto {
                    ViewTotal = 1
                }),
            };

            _questionRepositoryMock
            .Setup(x => x.GetAllForDate(dateTime))
            .ReturnsAsync(questions);

            // Act
            DaySummaryDto daySummaryDto = await _daySummaryService.GetSummaryAsync(dateTime);

            // Assert
            Assert.That(daySummaryDto.ViewTotal, Is.EqualTo(8));
        }
コード例 #3
0
        public async Task GivenValidDate_WhenIRun_ThenASummaryIsOutput()
        {
            // Arrange
            string   validDate = "2019-03-01";
            DateTime?dateTime  = new DateTime(2019, 3, 1);

            _dateParserMock.Setup(x => x.Parse(validDate)).Returns(dateTime);

            DaySummaryDto daySummaryDto = new DaySummaryDto
            {
                QuestionTotal = 14,
                ViewTotal     = 15415,
                UniqueTags    = new[] { "z" }
            };

            _daySummaryServiceMock
            .Setup(x => x.GetSummaryAsync(dateTime.Value))
            .ReturnsAsync(daySummaryDto);

            string formattedTags = "tags!";

            _tagFormatterMock.Setup(x => x.Format(daySummaryDto.UniqueTags)).Returns(formattedTags);

            // Act
            await _consoleAppService.Run(new[] { validDate });

            // Assert
            string[] outputs = _testAppOutput.Outputs.ToArray();
            Assert.That(outputs[0], Is.EqualTo("Summary for date: " + validDate));
            Assert.That(outputs[1], Is.EqualTo($"Total questions: {daySummaryDto.QuestionTotal}"));
            Assert.That(outputs[2], Is.EqualTo($"Total views: {daySummaryDto.ViewTotal}"));
            Assert.That(outputs[4], Is.EqualTo(formattedTags));
        }
コード例 #4
0
        public async Task Run(string[] args)
        {
            // An argument parser could be used here
            if (args.Length == 0)
            {
                _appOutput.WriteLine("A date must be provided in the format yyyy-MM-dd");

                // No date provided so terminate early
                return;
            }

            DateTime?dateTime = _dateParser.Parse(args[0]);

            if (!dateTime.HasValue)
            {
                _appOutput.WriteLine($"the input date '{args[0]}' must be provided in the format yyyy-MM-dd");

                // No date could be parsed so terminate early
                return;
            }

            DaySummaryDto daySummaryDto = await _daySummaryService.GetSummaryAsync(dateTime.Value);

            if (daySummaryDto == null)
            {
                _appOutput.WriteLine(
                    $"an error occured when trying to retrieve the summary for the date '{dateTime.Value}'. " +
                    $"Please try again.");

                // Unable to retrieve summary properly, so terminate early
                return;
            }

            _appOutput.WriteLine($"Summary for date: {dateTime.Value:yyyy-MM-dd}");
            _appOutput.WriteLine($"Total questions: {daySummaryDto.QuestionTotal}");
            _appOutput.WriteLine($"Total views: {daySummaryDto.ViewTotal}");
            _appOutput.WriteLine("Tags:");

            string tags = _tagFormatter.Format(daySummaryDto.UniqueTags);

            _appOutput.WriteLine(tags);
        }