コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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());
        }