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();