public async Task GetShowsWithCast()
        {
            // arrange
            var s1 = new Infrastructure.Sql.Model.Show {
                Id = 42, Name = "HitchHikers Guide to the Galaxy"
            };
            var m = new Infrastructure.Sql.Model.CastMember {
                Id = 1, Name = "Ford Prefect", Birthdate = new DateTime(1500, 1, 1)
            };

            s1.ShowCastMembers.Add(new ShowCastMember {
                Show = s1, CastMember = m
            });
            m = new Infrastructure.Sql.Model.CastMember {
                Id = 2, Name = "Arthur Dent", Birthdate = new DateTime(1960, 12, 31)
            };
            s1.ShowCastMembers.Add(new ShowCastMember {
                Show = s1, CastMember = m
            });
            this.context.Shows.Add(s1);

            var s2 = new Infrastructure.Sql.Model.Show {
                Id = 12, Name = "Some other show"
            };

            m = new Infrastructure.Sql.Model.CastMember {
                Id = 5, Name = "Someone", Birthdate = new DateTime(1980, 12, 31)
            };
            s2.ShowCastMembers.Add(new ShowCastMember {
                Show = s2, CastMember = m
            });
            this.context.Shows.Add(s2);
            this.context.SaveChanges();

            // act
            var shows = await this.showService.GetShowsWithCast(0, 10, CancellationToken.None).ConfigureAwait(false);

            // assert
            shows.Should().NotBeNull();
            shows.Count.Should().Be(2, because: "I added 2 shows.");

            shows.Where(s => s.CastMembers.Any()).Count().Should().Be(2, because: "Both shows have cast.");
        }
        public async Task TestItemCount()
        {
            // arrange
            var s1 = new Infrastructure.Sql.Model.Show {
                Id = 42, Name = "HitchHikers Guide to the Galaxy"
            };
            var m = new Infrastructure.Sql.Model.CastMember {
                Id = 1, Name = "Ford Prefect", Birthdate = new DateTime(1500, 1, 1)
            };

            s1.ShowCastMembers.Add(new ShowCastMember {
                Show = s1, CastMember = m
            });
            m = new Infrastructure.Sql.Model.CastMember {
                Id = 2, Name = "Arthur Dent", Birthdate = new DateTime(1960, 12, 31)
            };
            s1.ShowCastMembers.Add(new ShowCastMember {
                Show = s1, CastMember = m
            });
            this.context.Shows.Add(s1);

            var s2 = new Infrastructure.Sql.Model.Show {
                Id = 12, Name = "Some other show"
            };

            m = new Infrastructure.Sql.Model.CastMember {
                Id = 5, Name = "Someone", Birthdate = new DateTime(1980, 12, 31)
            };
            s2.ShowCastMembers.Add(new ShowCastMember {
                Show = s2, CastMember = m
            });
            this.context.Shows.Add(s2);
            this.context.SaveChanges();

            // act
            var counts = await this.showService.GetCounts().ConfigureAwait(false);

            // assert
            counts.ShowCount.Should().Be(2, because: "I added 2.");
            counts.MemberCount.Should().Be(3, because: "I added 3.");
        }