public async Task Execute_WithOutOfOrderTitles_IsOrderedByTitle() { const string FIRST_TITLE = "Aardvarks"; const string LAST_TITLE = "Zoology"; var mediaApi = new MockMediaRepository(); mediaApi.AddAlbum(1, "Good times", 1); mediaApi.AddAlbum(2, LAST_TITLE, 1); mediaApi.AddAlbum(3, FIRST_TITLE, 1); var query = new SearchAlbumsQuery(); var handler = new SearchAlbumsQueryHandler(mediaApi, NullLogger <SearchAlbumsQueryHandler> .Instance); var result = await handler.ExecuteAsync(query); var firstTitle = result .Select(a => a.Title) .FirstOrDefault(); var lastTitle = result .Select(a => a.Title) .Skip(2) .FirstOrDefault(); Assert.Equal(FIRST_TITLE, firstTitle); Assert.Equal(LAST_TITLE, lastTitle); }
public async Task Execute_WithUserId_FiltersToUser() { const int USER_ID = 3; var mediaApi = MockMediaRepository.CreateWithData( DEFAULT_NUM_ALBUMS, DEFAULT_NUM_USERS, DEFAULT_PHOTOS_PER_ALBUM ); var query = new SearchAlbumsQuery() { UserId = USER_ID }; var handler = new SearchAlbumsQueryHandler(mediaApi, NullLogger <SearchAlbumsQueryHandler> .Instance); var result = await handler.ExecuteAsync(query); var albumsPerUser = result.GroupBy(a => a.UserId); var firstGroup = albumsPerUser.FirstOrDefault(); Assert.NotNull(firstGroup); Assert.Single(albumsPerUser); Assert.Equal(USER_ID, firstGroup.Key); }
/// <summary> /// Creates a mock media respository with a set of basic seed data. The /// data is added with sequential ids. /// </summary> /// <param name="totalAlbums">The total number of albums to seed the respository with.</param> /// <param name="totalusers"> /// The total number of user to seed the respository with. Albums are distributed to users /// evenly throughout the collection. /// </param> /// <param name="photosPerAlbum">The number of photos to seed each album with.</param> public static MockMediaRepository CreateWithData( int totalAlbums, int totalusers, int photosPerAlbum ) { var mediaRepository = new MockMediaRepository(); int userId = 1; for (int albumId = 1; albumId <= totalAlbums; albumId++) { mediaRepository.AddAlbum(albumId, userId); for (int photoId = 1; photoId <= photosPerAlbum; photoId++) { mediaRepository.AddPhoto(photoId, albumId); } // distribute users evenly throughout the colleciton if (userId > totalusers) { userId = 1; } else { userId++; } } return(mediaRepository); }
public async Task Execute_WhenEmptyQuery_ReturnsAllAlbums() { var mediaApi = MockMediaRepository.CreateWithData( DEFAULT_NUM_ALBUMS, DEFAULT_NUM_USERS, DEFAULT_PHOTOS_PER_ALBUM ); var query = new SearchAlbumsQuery(); var handler = new SearchAlbumsQueryHandler(mediaApi, NullLogger <SearchAlbumsQueryHandler> .Instance); var result = await handler.ExecuteAsync(query); Assert.Equal(DEFAULT_NUM_ALBUMS, result.Count); }
public async Task Execute_WhenEmptyQuery_MapsPhotosToAlbums() { var mediaApi = MockMediaRepository.CreateWithData( DEFAULT_NUM_ALBUMS, DEFAULT_NUM_USERS, DEFAULT_PHOTOS_PER_ALBUM ); var query = new SearchAlbumsQuery(); var handler = new SearchAlbumsQueryHandler(mediaApi, NullLogger <SearchAlbumsQueryHandler> .Instance); var result = await handler.ExecuteAsync(query); var albumsWithCorrectNumberOfPhotos = result .Where(a => a.Photos.Count == DEFAULT_PHOTOS_PER_ALBUM); Assert.Equal(DEFAULT_NUM_ALBUMS, albumsWithCorrectNumberOfPhotos.Count()); }