public async Task UpdateAsync_EntryDoesNotExists_ReturnsNull() { // Arrange using var dbContext = CreateDbContext(); var user = await CreateTestUserAsync(dbContext); var userContextAccessorMock = new Mock <IUserContextAccessor>(); userContextAccessorMock.Setup(m => m.GetUserId()).Returns(user.Id); userContextAccessorMock.Setup(m => m.IsAdminUser()).Returns(false); var workEntriesService = new WorkEntriesService(dbContext, Mock.Of <IDbErrorHandler>(), userContextAccessorMock.Object); // Act var entryToUpdate = new WorkEntry { Id = Guid.NewGuid(), Date = new DateTime(2021, 1, 1), HoursSpent = 6, UserId = user.Id + "1", Notes = "Some notes..." }; var entry = await workEntriesService.UpdateAsync(entryToUpdate); Assert.Null(entry); }
public async Task UpdateAsync_AnotherUser_ReturnsNull(bool isAdmin, bool isNullResult) { // Arrange using var dbContext = CreateDbContext(); var user = await CreateTestUserAsync(dbContext); var anotherUser = await CreateTestUserAsync(dbContext); var userContextAccessorMock = new Mock <IUserContextAccessor>(); userContextAccessorMock.Setup(m => m.GetUserId()).Returns(user.Id); userContextAccessorMock.Setup(m => m.IsAdminUser()).Returns(isAdmin); var workEntriesService = new WorkEntriesService(dbContext, Mock.Of <IDbErrorHandler>(), userContextAccessorMock.Object); var entry = await CreateWorkEntry(dbContext, anotherUser.Id); // Act var entryToUpdate = new WorkEntry { Id = entry.Id, Date = new DateTime(2021, 1, 1), HoursSpent = 6, Notes = "Some notes..." }; entry = await workEntriesService.UpdateAsync(entryToUpdate); Assert.Equal(isNullResult, entry == null); }
public async Task UpdateAsync_EntryExists_UpdatesEntry() { // Arrange using var dbContext = CreateDbContext(); var user = await CreateTestUserAsync(dbContext); var entry = await CreateWorkEntry(dbContext, user.Id); var userContextAccessorMock = new Mock <IUserContextAccessor>(); userContextAccessorMock.Setup(m => m.GetUserId()).Returns(user.Id); userContextAccessorMock.Setup(m => m.IsAdminUser()).Returns(false); var workEntriesService = new WorkEntriesService(dbContext, Mock.Of <IDbErrorHandler>(), userContextAccessorMock.Object); // Act var entryToUpdate = new WorkEntry { Id = entry.Id, Date = new DateTime(2021, 1, 1), HoursSpent = 6, UserId = user.Id + "1", Notes = "Some notes..." }; entry = await workEntriesService.UpdateAsync(entryToUpdate); Assert.NotEqual(entryToUpdate.UserId, entry.UserId); // Line above tests that a user can't update the UserId field. // Now assign the same user id to compare all properties of both objects, // otherwise assert will fail entryToUpdate.UserId = entry.UserId; AssertEqual(entryToUpdate, entry); // assert entry state directly in the database entry = await dbContext.WorkEntries.FindAsync(entry.Id); AssertEqual(entryToUpdate, entry); }