コード例 #1
0
ファイル: ValidationService.cs プロジェクト: pacna/Api.Music
        public void ThrowIfInvalid(MusicAddRequest request)
        {
            if (string.IsNullOrEmpty(request.Album))
            {
                throw new HttpException(statusCode: HttpStatusCode.PreconditionFailed, msg: $"{nameof(request.Album)} is required");
            }

            if (string.IsNullOrWhiteSpace(request.Artist))
            {
                throw new HttpException(statusCode: HttpStatusCode.PreconditionFailed, msg: $"{nameof(request.Artist)} is required");
            }

            if (request.Length == 0)
            {
                throw new HttpException(statusCode: HttpStatusCode.PreconditionFailed, msg: $"{nameof(request.Length)} is required");
            }

            if (string.IsNullOrWhiteSpace(request.Path))
            {
                throw new HttpException(statusCode: HttpStatusCode.PreconditionFailed, msg: $"{nameof(request.Path)} is required");
            }

            if (string.IsNullOrWhiteSpace(request.Title))
            {
                throw new HttpException(statusCode: HttpStatusCode.PreconditionFailed, msg: $"{nameof(request.Title)} is required");
            }
        }
コード例 #2
0
ファイル: MusicService.cs プロジェクト: pacna/Api.Music
        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)));
        }
コード例 #3
0
        public void CanValidateAddRequest()
        {
            // ARRANGE
            MusicAddRequest request = new MusicAddRequest
            {
                Artist     = "Linkin Park",
                IsFavorite = true,
                Length     = 185, // 3 mins and 5 secs
                Title      = "Numb",
                Path       = "www.google.com/numb.mp3",
            };

            // ACT/ASSERT
            Assert.Throws <HttpException>(() => this._service.ThrowIfInvalid(request: request));
        }
コード例 #4
0
ファイル: MusicMongoMapper.cs プロジェクト: pacna/Api.Music
 internal static MusicDocument Map(MusicAddRequest request)
 {
     return(new MusicDocument
     {
         Album = request.Album,
         Artist = request.Artist,
         ArtistAlphabetIndex = MusicHelper.CalculateAlphabetIndex(artistFirstChar: request.Artist[0]),
         IsFavorite = request.IsFavorite,
         Length = request.Length,
         Path = request.Path,
         Title = request.Title,
         CreatedDate = DateTime.UtcNow,
         UpdatedDate = DateTime.UtcNow
     });
 }
コード例 #5
0
ファイル: MusicServiceTests.cs プロジェクト: pacna/Api.Music
        public async Task CanAddMusic()
        {
            // ARRANGE
            MusicAddRequest request = new MusicAddRequest
            {
                Album      = "Meteora",
                Artist     = "Linkin Park",
                IsFavorite = true,
                Length     = 185, // 3 mins and 5 secs
                Title      = "Numb",
                Path       = "www.google.com/numb.mp3",
            };

            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
            };

            this._repo
            .Setup(m => m.AddMusicAsync(It.IsAny <MusicDocument>()))
            .ReturnsAsync(doc1);

            // ACT
            MusicResponse response = await this._service.AddMusicAsync(request);

            // ASSERT
            Assert.NotNull(response);
            AssertEqual(expected: response, actual: doc1);
            this._repo.Verify(m => m.AddMusicAsync(It.IsAny <MusicDocument>()), Times.Once);
        }
コード例 #6
0
 public async Task <IActionResult> AddMusicAsync([FromBody] MusicAddRequest request)
 {
     return(this.Ok(await this._service.AddMusicAsync(request: request)));
 }