public void ShouldPatch_ToDoItemStatus_When_ToDoItemIsFoundForStatusPatch() { // set up ToDoStatuses itemStatusToPatch = ToDoStatuses.InProgress; var toDoItemOne = new ToDoItem { ItemId = 1, ItemTitle = "Test To Do Item One", ItemStatus = ToDoStatuses.ToDo, ItemDueOn = DateTimeOffset.Now.AddHours(1), UserId = Guid.Parse(_testUser.Id) }; var mockDatabaseContext = new ToDoDbContextBuilder().UseInMemorySqlite() .WithToDoItem(toDoItemOne.ItemId, toDoItemOne.ItemTitle, toDoItemOne.ItemStatus, toDoItemOne.ItemDueOn, toDoItemOne.UserId) .Build(); var messageSender = new Mock <IMessageSender>(); new Mock <IMessageSender>().Setup(i => i.SendMessage(It.IsAny <string>())).Returns(It.IsAny <Task>()); this._toDoService = new ToDoService(mockDatabaseContext, messageSender.Object); // test var toDoItem = this._toDoService.PatchItemStatus(_testUser, toDoItemOne.ItemId, itemStatusToPatch).Result; // assert Assert.IsNotNull(toDoItem); Assert.AreEqual(itemStatusToPatch, toDoItem.ItemStatus); // messageSender.Verify(mock => mock.SendMessage(It.IsAny<string>()), Times.Once); }
public async Task <List <ToDoItem> > GetItemsByStatus(ApplicationUser user, ToDoStatuses itemStatus) { try { return(await this._toDoDbContext.ToDoItems.Where(td => td.UserId.Equals(Guid.Parse(user.Id))) .Where(td => td.ItemStatus.Equals(itemStatus)).AsNoTracking().ToListAsync(CancellationToken.None)); } catch (Exception exception) { throw new Exception( $"Something went wrong while getting your ToDo Items by status '{itemStatus.ToStringValue()}': {exception}"); } }
public ToDoDbContextBuilder WithToDoItem(int itemId, string itemTitle, ToDoStatuses itemStatus, DateTimeOffset?itemDueOn, Guid userId) { var toDoItem = new ToDoItem { ItemId = itemId, ItemTitle = itemTitle, ItemStatus = itemStatus, ItemDueOn = itemDueOn, UserId = userId }; this._toDoItems.Add(toDoItem); return(this); }
public async Task <IActionResult> GetByItemStatus(ToDoStatuses itemStatus) { var currentUser = await _userManager.GetUserAsync(HttpContext.User); //if (currentUser == null) // return Unauthorized(); try { var result = await _todoService.GetItemsByStatus(currentUser, itemStatus); return(Ok(result)); } catch (Exception) { return(StatusCode((int)HttpStatusCode.InternalServerError, $"Something went wrong while getting all the to-do items for {currentUser.UserName} by status {itemStatus}. Please try again in a while.")); } }
public async Task <IActionResult> PatchStatus([Required] int itemId, [Required] ToDoStatuses itemStatus) { var currentUser = await _userManager.GetUserAsync(HttpContext.User); //if (currentUser == null) // return Unauthorized(); try { var result = await this._todoService.PatchItemStatus(currentUser, itemId, itemStatus); return(Ok(result)); } catch { return(StatusCode((int)HttpStatusCode.InternalServerError, $"Something went wrong while updating status of a To-Do item for {currentUser.UserName} to {itemStatus}. Please try again in a while.")); } }
public async Task <ToDoItem> PatchItemStatus(ApplicationUser user, int itemId, ToDoStatuses itemStatus) { try { #region Patch ToDo Item Status var itemToPatch = this._toDoDbContext.ToDoItems.SingleOrDefault( td => td.UserId.Equals(Guid.Parse(user.Id)) && td.ItemId.Equals(itemId)); if (itemToPatch == null) { return(null); } itemToPatch.ItemStatus = itemStatus; await this._toDoDbContext.SaveChangesAsync(true, CancellationToken.None); #endregion #region Push Message to Azure Service Bus var patchedEvent = new Event { EventId = Guid.NewGuid(), EventType = "ItemPatched", AggregateId = Guid.Parse(user.Id), AggregateName = "ToDoItem", EventCreateDateTime = DateTime.Now, EventPayLoad = $"{{ItemStatus: {itemStatus}}}" }; //await this._messageSender.SendMessage(patchedEvent.ObjectToJson()); #endregion return(itemToPatch); } catch (DbUpdateException exception) { throw new Exception($"Something went wrong on the Database while updating a ToDo Item Status: {exception.Message}"); } catch (Exception exception) { throw new Exception($"Something went wrong while updating a ToDo Item Status: {exception.Message}"); } }