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"); } }
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))); }
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)); }
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 }); }
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); }
public async Task <IActionResult> AddMusicAsync([FromBody] MusicAddRequest request) { return(this.Ok(await this._service.AddMusicAsync(request: request))); }