Exemple #1
0
        public async Task CanUpdateFavoriteMusic()
        {
            // ARRANGE
            string id = Guid.NewGuid().ToString();
            MusicUpdateFavoriteRequest favoriteRequest = new MusicUpdateFavoriteRequest
            {
                IsFavorite = true
            };

            MusicDocument doc1 = new MusicDocument
            {
                Id     = id,
                Artist = "Linkin Park",
                ArtistAlphabetIndex = AlphabetType.L,
                IsFavorite          = false
            };

            this._repo
            .Setup(m => m.UpdateFavoriteAsync(id, It.IsAny <UpdateMusicRequest>()))
            .Callback(() => doc1.IsFavorite = favoriteRequest.IsFavorite)
            .Returns(Task.CompletedTask);

            // ACT
            await this._service.UpdateFavoriteAsync(id, favoriteRequest);

            // ASSERT
            Assert.Equal(doc1.IsFavorite, favoriteRequest.IsFavorite);
            this._repo.Verify(m => m.UpdateFavoriteAsync(id, It.IsAny <UpdateMusicRequest>()), Times.Once);
        }
Exemple #2
0
        public async Task CanGetMusic()
        {
            // ARRANGE
            string        id  = Guid.NewGuid().ToString();
            MusicDocument doc = new MusicDocument
            {
                Id     = id,
                Artist = "Linkin Park",
                Album  = "Meteora",
                ArtistAlphabetIndex = AlphabetType.L,
                IsFavorite          = true,
                Length      = 185, // 3 mins and 5 secs
                Title       = "Numb",
                Path        = "www.google.com/numb.mp3",
                CreatedDate = DateTime.UtcNow,
                UpdatedDate = DateTime.UtcNow
            };

            this._repo
            .Setup(m => m.GetMusicAsync(id))
            .ReturnsAsync(doc);

            // ACT
            MusicResponse response = await this._service.GetMusicAsync(id);

            // ASSERT
            Assert.NotNull(response);
            AssertEqual(expected: response, actual: doc);
            this._repo.Verify(m => m.GetMusicAsync(id), Times.Once);
        }
Exemple #3
0
 public void Insert(MusicDocument musicDoc)
 {
     if (musicDoc != null)
     {
         _musicDocs.InsertOne(musicDoc);
     }
 }
Exemple #4
0
        public async Task <MusicResponse> AddMusicAsync(MusicAddRequest request)
        {
            this._validationService.ThrowIfInvalid(request: request);

            MusicDocument doc = MusicMongoMapper.Map(request: request);

            return(MusicMapper.Map(await this._musicRepo.AddMusicAsync(doc)));
        }
Exemple #5
0
        public async Task CanSearchAllMusic()
        {
            // ARRANGE
            MusicDocument doc1 = new MusicDocument
            {
                Id     = Guid.NewGuid().ToString(),
                Artist = "Linkin Park",
                Album  = "Meteora",
                ArtistAlphabetIndex = AlphabetType.L,
                IsFavorite          = true,
                Length      = 185, // 3 mins and 5 secs
                Title       = "Numb",
                Path        = "www.google.com/numb.mp3",
                CreatedDate = DateTime.UtcNow,
                UpdatedDate = DateTime.UtcNow
            };

            MusicDocument doc2 = new MusicDocument
            {
                Id     = Guid.NewGuid().ToString(),
                Artist = "Vanessa Carlton",
                Album  = "Legally Blonde",
                ArtistAlphabetIndex = AlphabetType.V,
                IsFavorite          = true,
                Length      = 240, // 4 mins
                Title       = "A Thousand Miles",
                Path        = "/music/1000Miles.mp3",
                CreatedDate = DateTime.UtcNow,
                UpdatedDate = DateTime.UtcNow
            };

            List <MusicDocument> expectedResponse = new List <MusicDocument>
            {
                doc1,
                doc2
            };

            MusicSearchRequest request = new MusicSearchRequest
            {
                IsFavorite = null
            };

            this._repo
            .Setup(m => m.SearchMusicAsync(It.IsAny <SearchMusicRequest>()))
            .ReturnsAsync(expectedResponse);

            // ACT
            List <MusicResponse> response = await this._service.SearchMusicAsync(request : request);

            // ASSERT
            Assert.NotNull(response);
            Assert.Collection(response,
                              x => AssertEqual(x, expectedResponse),
                              x => AssertEqual(x, expectedResponse)
                              );
            this._repo.Verify(m => m.SearchMusicAsync(It.IsAny <SearchMusicRequest>()), Times.Once);
        }
Exemple #6
0
 private void AssertEqual(MusicResponse expected, MusicDocument actual)
 {
     Assert.Equal(expected.Id, actual.Id);
     Assert.Equal(expected.Artist, actual.Artist);
     Assert.Equal(expected.ArtistAlphabetCategory, actual.ArtistAlphabetIndex);
     Assert.Equal(expected.IsFavorite, actual.IsFavorite);
     Assert.Equal(expected.Length, actual.Length);
     Assert.Equal(expected.Path, actual.Path);
     Assert.Equal(expected.Title, actual.Title);
 }
Exemple #7
0
        public MusicDocument ParseFileName(string fileName)
        {
            // "Z:\\0_MEDIA\\Music\\Led Zeppelin\\01 - Studio albums\\CD remastered\\1971 - Led Zeppelin IV [1994, Atlantic, 82638-2]\\06. Four Sticks.mp3"
            var tmp = new MusicDocument();

            string songName = fileName.Split("\\").Last();
            string number   = songName.Split(" ").FirstOrDefault();

            tmp.SongName   = songName;
            tmp.SongNumber = number;

            return(tmp);
        }
Exemple #8
0
 internal static MusicResponse Map(MusicDocument music)
 {
     return(new MusicResponse
     {
         Album = music.Album,
         Artist = music.Artist,
         ArtistAlphabetCategory = music.ArtistAlphabetIndex,
         Id = music.Id,
         IsFavorite = music.IsFavorite,
         Length = music.Length,
         Path = music.Path,
         Title = music.Title,
     });
 }
Exemple #9
0
        private void AssertEqual(MusicResponse expected, IEnumerable <MusicDocument> actual)
        {
            int foundCount = 0;

            MusicDocument doc = actual.FirstOrDefault(x => x.Id == expected.Id);

            if (doc != null)
            {
                AssertEqual(expected: expected, actual: doc);
                foundCount++;
            }

            Assert.Equal(foundCount, 1);
        }
Exemple #10
0
        public async Task <MusicResponse> GetMusicAsync(string id)
        {
            MusicDocument music = await this._musicRepo.GetMusicAsync(id : id);

            return(MusicMapper.Map(music: music));
        }