public async Task GetAllBySeasonAndTypeAsync_GivenMultipleAnimeOnlyOneInSeasonWithType_ShouldReturnSingle()
        {
            // Given
            var               dbContext   = InMemoryDbProvider.GetDbContext();
            var               repository  = new AnimeRepository(dbContext);
            const int         seasonId1   = 100;
            const int         seasonId2   = 101;
            const AnimeTypeId animeTypeId = AnimeTypeId.TV;
            var               animeType   = new AnimeTypeBuilder().WithId(animeTypeId).Build();
            var               season1     = new SeasonBuilder().WithId(seasonId1).WithName("Winter").WithYear(2000).Build();
            var               season2     = new SeasonBuilder().WithId(seasonId2).WithName("Spring").WithYear(2000).Build();
            var               anime1      = new AnimeBuilder().WithTitle("Test1").WithSeason(season1).WithAnimeType(animeType).Build();
            var               anime2      = new AnimeBuilder().WithTitle("Test2").WithSeason(season1).WithAnimeType(animeType).Build();
            var               anime3      = new AnimeBuilder().WithTitle("Test3").WithSeason(season2).WithAnimeType(animeType).Build();

            await dbContext.Animes.AddAsync(anime1);

            await dbContext.Animes.AddAsync(anime2);

            await dbContext.Animes.AddAsync(anime3);

            await dbContext.SaveChangesAsync();

            // When
            var result = await repository.GetAllBySeasonAndTypeAsync(seasonId2, animeTypeId);

            // Then
            result.Should().ContainSingle();
        }
 public AnimeTypeBuilder WithId(AnimeTypeId id)
 {
     _id = id;
     return(this);
 }
 public async Task <IReadOnlyList <Anime> > GetAllBySeasonAndTypeAsync(long seasonId, AnimeTypeId animeTypeId)
 => await _dbContext.Animes
 .Include(a => a.Type)
 .Include(a => a.Status)
 .Include(a => a.Season)
 .Where(x => x.SeasonId == seasonId && (x.TypeId == animeTypeId || animeTypeId == AnimeTypeId.AllTypes))
 .ToListAsync();