Пример #1
0
 public ActionResult <User> UpdateMusician(MusicianViewModel model)
 {
     if (ModelState.IsValid)
     {
         User currUser = _userManager.FindByNameAsync(User.Identity.Name).Result;
         currUser.MusicianName = model.Name;
         currUser.Summary      = model.Summary;
         currUser.Location     = model.Location;
         currUser.ImageUrl     = model.ImageUrl;
         currUser.Instruments  = model.Instruments;
         foreach (Instrument inst in model.Instruments)
         {
             if (inst.InstrumentId == 0)
             {
                 _context.Instruments.Add(inst);
             }
             else
             {
                 _context.Instruments.Attach(inst);
             }
         }
         _context.SaveChanges();
         return(currUser);
     }
     return(NotFound());
 }
Пример #2
0
        public async Task ReturnsCreatedGivenValidData()
        {
            var musician = new MusicianViewModel
            {
                FirstName   = "A",
                LastName    = "B",
                DateOfBirth = DateTime.Today.AddYears(-90),
                DateOfDeath = DateTime.Today
            };
            HttpResponseMessage response = await _client.PostAsJsonAsync(BaseUrl, musician);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);

            var musicianCreated = JsonConvert.DeserializeObject <MusicianViewModel>(responseContent);

            Assert.Equal("A", musicianCreated.FirstName);
            Assert.Equal("B", musicianCreated.LastName);
            Assert.Equal(DateTime.Today.AddYears(-90), musicianCreated.DateOfBirth);
            Assert.Equal(DateTime.Today, musicianCreated.DateOfDeath);
            Assert.True(musicianCreated.Id > 0);

            Assert.Contains($"{BaseUrl}/{musicianCreated.Id}", response.Headers.Location.ToString(), StringComparison.InvariantCultureIgnoreCase);
        }
Пример #3
0
        public async Task <MusicianViewModel> Get(int id)
        {
            Musician musician = await _musicianRepository.GetByIdAsync(id);

            MusicianViewModel musicianViewModel = musician.Adapt <MusicianViewModel>();

            return(musicianViewModel);
        }
Пример #4
0
        public async Task ReturnsMusicianForValidId()
        {
            HttpResponseMessage response = await _client.GetAsync($"{BaseUrl}/4");

            response.EnsureSuccessStatusCode();

            string responseContent = await response.Content.ReadAsStringAsync();

            MusicianViewModel band = JsonConvert.DeserializeObject <MusicianViewModel>(responseContent);

            Assert.Equal("Thom", band.FirstName);
            Assert.Equal("Yorke", band.LastName);
        }
Пример #5
0
        public ViewResult Index()
        {
            ViewBag.Date = DateTime.Now.ToString("MM/dd/yyyy");
            var musicianVm = new MusicianViewModel {
                Authenticated = false
            };

            if (HttpContext.User.Identity.IsAuthenticated)
            {
                musicianVm.FirstName     = HttpContext.User.Identity.Name;
                musicianVm.Authenticated = true;
            }
            return(View(musicianVm));
        }
Пример #6
0
        public async Task ReturnsBadRequestGivenIdMismatch()
        {
            var musician = new MusicianViewModel
            {
                Id          = 4,
                FirstName   = "A",
                LastName    = "B",
                DateOfBirth = DateTime.Today.AddYears(-90),
                DateOfDeath = DateTime.Today
            };
            HttpResponseMessage response = await _client.PutAsJsonAsync($"{BaseUrl}/5", musician);

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
        }
Пример #7
0
        public async Task ReturnsBadRequestGivenNoLastName()
        {
            var musician = new MusicianViewModel
            {
                FirstName   = "A",
                DateOfBirth = DateTime.Today
            };
            HttpResponseMessage response = await _client.PostAsJsonAsync(BaseUrl, musician);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Contains("LastName", responseContent);
            Assert.Contains("The LastName field is required.", responseContent);
        }
Пример #8
0
        public async Task <IActionResult> Post([FromBody] MusicianViewModel model)
        {
            var musician = new Musician
            {
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                DateOfBirth = model.DateOfBirth,
                DateOfDeath = model.DateOfDeath
            };
            await _musicianRepository.AddAsync(musician);

            MusicianViewModel musicianViewModel = musician.Adapt <MusicianViewModel>();

            return(CreatedAtAction(nameof(Get), new { id = musician.Id }, musicianViewModel));
        }
Пример #9
0
        public async Task ReturnsBadRequestGivenDateOfBirthLessThan1January1900()
        {
            var musician = new MusicianViewModel
            {
                FirstName   = "A",
                LastName    = "B",
                DateOfBirth = new DateTime(1899, 12, 31)
            };
            HttpResponseMessage response = await _client.PostAsJsonAsync(BaseUrl, musician);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Contains("DateOfBirth", responseContent);
            Assert.Contains($"The field DateOfBirth must be between {new DateTime(1900, 1, 1)} and {DateTime.Today}.", responseContent);
        }
Пример #10
0
        public async Task ReturnsBadRequestGivenLastNameOver50Chars()
        {
            var musician = new MusicianViewModel
            {
                FirstName   = "A",
                LastName    = "B".PadLeft(51),
                DateOfBirth = DateTime.Today
            };
            HttpResponseMessage response = await _client.PostAsJsonAsync(BaseUrl, musician);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Contains("LastName", responseContent);
            Assert.Contains("The field LastName must be a string with a maximum length of 50.", responseContent);
        }
Пример #11
0
        public async Task ReturnsBadRequestGivenDateOfBirthGreaterThanDateOfDeath()
        {
            var musician = new MusicianViewModel
            {
                FirstName   = "A",
                LastName    = "B",
                DateOfBirth = DateTime.Today,
                DateOfDeath = DateTime.Today.AddDays(-1)
            };
            HttpResponseMessage response = await _client.PostAsJsonAsync(BaseUrl, musician);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Contains("Date of Birth must be prior to Date of Death.", responseContent);
        }
Пример #12
0
        public async Task ReturnsNotFoundForInvalidId()
        {
            var musician = new MusicianViewModel
            {
                Id          = 0,
                FirstName   = "A",
                LastName    = "B",
                DateOfBirth = DateTime.Today.AddYears(-90),
                DateOfDeath = DateTime.Today
            };
            HttpResponseMessage response = await _client.PutAsJsonAsync($"{BaseUrl}/0", musician);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
            Assert.Equal("0", responseContent);
        }
Пример #13
0
        public async Task ReturnsBadRequestGivenDateOfBirthGreaterThanToday()
        {
            var musician = new MusicianViewModel
            {
                Id          = 4,
                FirstName   = "A",
                LastName    = "B",
                DateOfBirth = DateTime.Today.AddDays(1)
            };
            HttpResponseMessage response = await _client.PutAsJsonAsync($"{BaseUrl}/4", musician);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Contains("DateOfBirth", responseContent);
            Assert.Contains($"The field DateOfBirth must be between {new DateTime(1900, 1, 1)} and {DateTime.Today}.", responseContent);
        }
Пример #14
0
        public async Task <IActionResult> Put(int id, [FromBody] MusicianViewModel model)
        {
            if (id != model.Id)
            {
                return(BadRequest());
            }

            Musician musician = await _musicianRepository.GetByIdAsync(id);

            musician.FirstName   = model.FirstName;
            musician.LastName    = model.LastName;
            musician.DateOfBirth = model.DateOfBirth;
            musician.DateOfDeath = model.DateOfDeath;
            await _musicianRepository.UpdateAsync(musician);

            return(NoContent());
        }