public async Task given_movie_not_found_then_FindScreening_returns_NotFoundResult(
            Guid movieId,
            Guid screeningId,
            IMovieReader readerStub,
            [NoAutoProperties] QueriesController sut)
        {
            var facade = new MovieReadModelFacade(readerStub);

            IActionResult actual = await
                                   sut.FindScreening(movieId, screeningId, facade);

            actual.Should().BeOfType <NotFoundResult>();
        }
        public async Task given_screening_not_found_then_FindScreening_returns_NotFoundResult(
            Movie movie,
            Guid screeningId,
            InMemoryMovieRepository readerStub,
            [NoAutoProperties] QueriesController sut)
        {
            readerStub.Data[movie.Id] = movie;
            var facade = new MovieReadModelFacade(readerStub);

            IActionResult actual = await
                                   sut.FindScreening(movie.Id, screeningId, facade);

            actual.Should().BeOfType <NotFoundResult>();
        }
        public async Task given_screening_found_then_FindScreening_returns_OkObjectResult(
            Movie movie,
            InMemoryMovieRepository readerStub,
            [NoAutoProperties] QueriesController sut)
        {
            readerStub.Data[movie.Id] = movie;
            var       facade    = new MovieReadModelFacade(readerStub);
            Screening screening = movie.Screenings.Shuffle().First();

            IActionResult actual = await
                                   sut.FindScreening(movie.Id, screening.Id, facade);

            actual.Should().BeOfType <OkObjectResult>();
        }
        public async Task given_screening_found_then_FindScreening_returns_transfer_object_as_content(
            Movie movie,
            InMemoryMovieRepository readerStub,
            [NoAutoProperties] QueriesController sut)
        {
            // Arrange
            readerStub.Data[movie.Id] = movie;
            var       facade    = new MovieReadModelFacade(readerStub);
            Screening screening = movie.Screenings.Shuffle().First();

            // Act
            dynamic result = await
                             sut.FindScreening(movie.Id, screening.Id, facade);

            // Assert
            object actual = result.Value;

            actual.Should().BeOfType <ScreeningDto>();
            actual.Should().BeEquivalentTo(
                expectation: screening,
                config: c => c.ExcludingMissingMembers());
        }