public async Task EventUseCaseTest_GetListAsync_Success() { // Arrange var eventInput = EventInputFaker.Create().Generate(); var eventDataWrapper = EventDataWrapperFaker.Create().Generate(); // Setup _eventRepository .Setup(p => p.GetEventsByCharacter(1, eventInput)) .Returns(Task.FromResult(eventDataWrapper)); // Act var result = await _eventUseCase.GetListAsync(1, eventInput); //Assert Assert.True(result.Data.Results.Any()); }
public async Task <EventDataWrapper> GetEventsByCharacter(int characterId, EventInput eventInput) { var query = _context.Set <Event>().AsNoTracking().AsQueryable(); var creatorIds = DataHelper.GetIdList(eventInput.Creators); var comicIds = DataHelper.GetIdList(eventInput.Comics); var serieIds = DataHelper.GetIdList(eventInput.Series); var storyIds = DataHelper.GetIdList(eventInput.Stories); query = query .Include(i => i.CharacterEvents).ThenInclude(t => t.Character) .Include(i => i.ComicEvents).ThenInclude(t => t.Comic) .Include(i => i.EventCreators).ThenInclude(t => t.Creator) .Include(i => i.EventSeries).ThenInclude(t => t.Serie) .Include(i => i.EventStories).ThenInclude(t => t.Story) .Include(i => i.Thumbnail) .Include(i => i.Urls) .Where(w => (w.CharacterEvents.Any(a => a.CharacterId == characterId)) && (string.IsNullOrEmpty(eventInput.Name) || w.Title.ToLowerInvariant().Contains(eventInput.Name.ToLowerInvariant())) && (string.IsNullOrEmpty(eventInput.NameStartsWith) || w.Title.ToLowerInvariant().StartsWith(eventInput.NameStartsWith.ToLowerInvariant())) && (!eventInput.ModifiedSince.HasValue || w.Modified.Date > eventInput.ModifiedSince.Value.Date) && (!creatorIds.Any() || w.EventCreators.Any(s => creatorIds.Contains(s.CreatorId))) && (!comicIds.Any() || w.ComicEvents.Any(s => comicIds.Contains(s.EventId))) && (!serieIds.Any() || w.EventSeries.Any(s => serieIds.Contains(s.SerieId))) && (!storyIds.Any() || w.EventStories.Any(s => storyIds.Contains(s.StoryId))) ); switch (eventInput.OrderBy) { case Domain.Enums.EventOrderByEnum.name: query = query.OrderBy(o => o.Title); break; case Domain.Enums.EventOrderByEnum.startDate: query = query.OrderBy(o => o.Start); break; case Domain.Enums.EventOrderByEnum.modified: query = query.OrderBy(o => o.Modified); break; case Domain.Enums.EventOrderByEnum.nameDesc: query = query.OrderByDescending(o => o.Title); break; case Domain.Enums.EventOrderByEnum.startDateDesc: query = query.OrderByDescending(o => o.Start); break; case Domain.Enums.EventOrderByEnum.modifiedDesc: query = query.OrderByDescending(o => o.Modified); break; default: query = query.OrderByDescending(o => o.Title); break; } var result = await query.ToPagedListAsync(eventInput.Offset.Value, eventInput.Limit.Value); var eventDataWrapper = EventDataWrapperFaker.Create().Generate(); eventDataWrapper.Data = new EventDataContainer() { Count = result.Count, Limit = result.Limit, Offset = result.Offset, Total = result.Total, Results = result.Results.Select(s => new EventModel() { Id = s.Id, Title = s.Title, Description = s.Description, ResourceUri = s.ResourceUri, Urls = s.Urls.Select(s1 => new UrlModel() { Type = s1.Type, Url = s1.FullUrl }).ToList(), Modified = s.Modified, Start = s.Start, End = s.End, Thumbnail = new ThumbnailModel() { Extension = s.Thumbnail.Extension, Path = s.Thumbnail.Path }, Comics = new ComicList() { Available = s.ComicEvents.Count, CollectionURI = Guid.NewGuid().ToString(), Returned = s.ComicEvents.Count, Items = s.ComicEvents.Select(s1 => new ComicSummary() { Name = s1.Comic.Title, ResourceURI = Guid.NewGuid().ToString() }).ToList() }, Stories = new StoryList() { Available = s.EventStories.Count, CollectionURI = Guid.NewGuid().ToString(), Returned = s.EventStories.Count, Items = s.EventStories.Select(s1 => new StorySummary() { Name = s1.Story.Title, ResourceURI = Guid.NewGuid().ToString(), Type = s1.Story.Type }).ToList() }, Series = new SerieList() { Available = s.EventSeries.Count, CollectionURI = Guid.NewGuid().ToString(), Returned = s.EventSeries.Count, Items = s.EventSeries.Select(s1 => new SerieSummary() { Name = s1.Serie.Title, ResourceURI = Guid.NewGuid().ToString() }).ToList() }, Characters = new CharacterList() { Available = s.CharacterEvents.Count, CollectionURI = Guid.NewGuid().ToString(), Returned = s.CharacterEvents.Count, Items = s.CharacterEvents.Select(s1 => new CharacterSummary() { Name = s1.Character.Name, ResourceURI = Guid.NewGuid().ToString() }).ToList() }, Creators = new CreatorList() { Available = s.EventCreators.Count, CollectionURI = Guid.NewGuid().ToString(), Returned = s.EventCreators.Count, Items = s.EventCreators.Select(s1 => new CreatorSummary() { Name = s1.Creator.Name, ResourceUri = Guid.NewGuid().ToString(), Role = s1.Creator.Role }).ToList() } }).ToList() }; return(eventDataWrapper); }