public async Task Handle_GivenNullRequest_ShouldThrowArgumentNullException()
        {
            // Arrange
            var sut = new GetMatchesForPlayWeekQueryHandler(It.IsAny <IDeletableEntityRepository <PlayWeek> >(), It.IsAny <IDeletableEntityRepository <Match> >(), It.IsAny <IMapper>());

            // Act & Assert
            await Should.ThrowAsync <ArgumentNullException>(sut.Handle(null, It.IsAny <CancellationToken>()));
        }
        public async Task Handle_GivenInvalidRequest_ShouldThrowNotFoundException()
        {
            // Arrange
            var query = new GetMatchesForPlayWeekQuery {
                PlayWeekId = 121
            };
            var sut = new GetMatchesForPlayWeekQueryHandler(this.deletableEntityRepository, It.IsAny <IDeletableEntityRepository <Match> >(), It.IsAny <IMapper>());

            // Act & Assert
            await Should.ThrowAsync <NotFoundException>(sut.Handle(query, It.IsAny <CancellationToken>()));
        }
        public async Task Handle_GivenValidRequest_ShouldReturnViewModel()
        {
            // Arrange
            var query = new GetMatchesForPlayWeekQuery {
                PlayWeekId = 1
            };

            var matchesRepository = new EfDeletableEntityRepository <Match>(this.dbContext);

            var sut = new GetMatchesForPlayWeekQueryHandler(this.deletableEntityRepository, matchesRepository, this.mapper);

            // Act
            var viewModel = await sut.Handle(query, It.IsAny <CancellationToken>());

            // Assert
            viewModel.ShouldNotBeNull();
            viewModel.Matches.Count().ShouldBe(2);
            viewModel.WeekAsString.ShouldBe("11/08/2019 - 18/08/2019");
        }