예제 #1
0
        public async Task <IActionResult> Put([FromRoute] Guid id, [FromBody] UpdateWorkEntryRequest request)
        {
            var entry = request.ToWorkEntry();

            entry.Id = id;

            entry = await _workEntriesService.UpdateAsync(entry);

            return(entry == null
                ? (IActionResult)NotFound()
                : Ok(new WorkEntryDto(entry)));
        }
예제 #2
0
        public async Task Put_CorrectId_UpdatesEntry()
        {
            // Arrange
            var user = await CreateTestUserAsync();

            var entry = TestWorkEntryFactory.CreateWorkEntry(DateTime.UtcNow.Date, user.Id, TestServerFixture.DbContext);
            await TestServerFixture.DbContext.SaveChangesAsync();

            await HttpClient.AuthAs(user.Email, TestUserFactory.TestPassword);

            // Act
            var request = new UpdateWorkEntryRequest
            {
                Date       = DateTime.Now.AddYears(20),
                HoursSpent = TestWorkEntryFactory.HoursSpent + 5,
                Notes      = "updated note"
            };

            var responseMessage = await HttpClient.PutAsync("/api/WorkEntries/" + entry.Id, request);

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
            var responseEntry = await responseMessage.ReadContentAsync <WorkEntryDto>();

            // validate response
            Assert.Equal(entry.Id, responseEntry.Id);
            Assert.Equal(request.Date, responseEntry.Date);
            Assert.Equal(request.Notes, responseEntry.Notes);
            Assert.Equal(request.HoursSpent, responseEntry.HoursSpent);

            // validate DB entry
            await TestServerFixture.DbContext.Entry(entry).ReloadAsync();

            Assert.Equal(request.Date, entry.Date);
            Assert.Equal(request.Notes, entry.Notes);
            Assert.Equal(request.HoursSpent, entry.HoursSpent);
        }