public IActionResult AddSong(SongPostIndexModel model) { if (model == null) { RedirectToAction("ArtistInfo", new { id = model.Artist.Id }); } var artistModel = model.Artist; var songModel = model.Song; //add the song - populate an Song instance with values from the form var newSong = new Song { Name = songModel.Name, Duration = songModel.Duration, }; _song.Add(newSong); //insert association record for AlbumId, ArtistId, SongId if (model.Album.Id != 0) { _albumSong.Add(model.Album.Id, artistModel.Id, model.Song.TrackNumber, newSong.Id); } else { //song is not associated to an album _albumSong.Add(0, artistModel.Id, model.Song.TrackNumber, newSong.Id); } return(RedirectToAction("Index", "SongPost", new { albumId = model.Album.Id, artistId = model.Artist.Id })); }
public async Task Post_ShouldReturnNewSong_With_SongEndpoint() { var songRequest = new SongRequest { Artist = "Artist1", Difficulty = "Hard", Level = 5, Name = "Song1" }; var songGuid = Guid.Parse("F531D138-44F2-4400-A21B-C3D9A3C8D485"); var expectedSongResponse = new SongResponse { Artist = songRequest.Artist, Difficulty = songRequest.Difficulty, Id = songGuid, Level = songRequest.Level, Name = songRequest.Name }; _songService.Add(Arg.Any <Song>()).Returns( args => Task.FromResult <Song>(new Song { Id = songGuid, Artist = args.ArgAt <Song>(0).Artist, Difficulty = args.ArgAt <Song>(0).Difficulty, Level = args.ArgAt <Song>(0).Level, Name = args.ArgAt <Song>(0).Name })); var actionResult = await _songsController.Post(songRequest); var createdResult = Assert.IsType <CreatedResult>(actionResult.Result); Assert.Equal($"/songs/{songGuid}", createdResult.Location); var songResponse = Assert.IsType <SongResponse>(createdResult.Value); Assert.Equal(expectedSongResponse, songResponse); await _coreDataService.Received(1).SaveChanges(); }