private async Task <string> MarkItemDoneAsync(HttpClient client, string page, string description) { using var serviceScope = _factory.Services.CreateScope(); using var context = serviceScope.ServiceProvider.GetRequiredService <SqliteDataContext>(); var userItem = await context.UserItems.FirstOrDefaultAsync(u => u.Description == description); userItem.Should().NotBeNull(); var userAccount = await context.UserAccounts.AddAsync(new UserAccount { AuthenticationUri = "http://test/user/1" }); var userList = await context.UserLists.AddAsync(new UserList { Name = "Test list", UserAccount = userAccount.Entity }); await context.SaveChangesAsync(); _userList = userList.Entity; var doneAction = $"/items/done/{userItem.UserItemId}"; var validationToken = IntegrationTestWebApplicationFactory.GetFormValidationToken(page, doneAction); using var response = await client.PostAsync(doneAction, new FormUrlEncodedContent (new[] { KeyValuePair.Create("__RequestVerificationToken", validationToken) })); response.StatusCode.Should().Be(HttpStatusCode.OK); return(await response.Content.ReadAsStringAsync()); }
private async Task <string> RedoAsync(HttpClient client, string page) { const string redoAction = "/history/redo"; var validationToken = IntegrationTestWebApplicationFactory.GetFormValidationToken(page, redoAction); using var response = await client.PostAsync(redoAction, new FormUrlEncodedContent (new[] { KeyValuePair.Create("__RequestVerificationToken", validationToken) })); response.StatusCode.Should().Be(HttpStatusCode.OK); return(await response.Content.ReadAsStringAsync()); }
private async Task <string> AddItemAsync(HttpClient client, string page, string description) { var addAction = "/items/add"; var validationToken = IntegrationTestWebApplicationFactory.GetFormValidationToken(page, addAction); using var response = await client.PostAsync(addAction, new FormUrlEncodedContent (new[] { KeyValuePair.Create("__RequestVerificationToken", validationToken), KeyValuePair.Create("list", _userList.UserListId.ToString()), KeyValuePair.Create("description", description) })); response.StatusCode.Should().Be(HttpStatusCode.OK); return(await response.Content.ReadAsStringAsync()); }
public async Task Marking_due_item_as_done() { using var client = _factory.CreateAuthenticatedClient(); var response = await client.GetAsync("/"); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseContent = await response.Content.ReadAsStringAsync(); responseContent.Should().Contain("Logout") .And.Contain("1 overdue and 1 due today (2)") .And.Contain("All (3)") .And.Contain("All upcoming (2)") .And.Contain("Due yesterday", Exactly.Once()) .And.Contain("Due today", Exactly.Once()); var item = await GetUserItemWithDescriptionAsync("Test item 2"); item.NextDueDate.Should().Be(DateTime.Today); item.LastUpdateDateTime.Should().BeNull(); var doneAction = $"/items/done/{item.UserItemId}"; var validationToken = IntegrationTestWebApplicationFactory.GetFormValidationToken(responseContent, doneAction); var beforeEdit = DateTime.UtcNow; response = await client.PostAsync(doneAction, new FormUrlEncodedContent(new[] { KeyValuePair.Create("__RequestVerificationToken", validationToken) })); response.StatusCode.Should().Be(HttpStatusCode.OK); responseContent = await response.Content.ReadAsStringAsync(); responseContent.Should().Contain("Logout") .And.Contain("1 overdue (1)") .And.Contain("All (2)") .And.Contain("All upcoming (1)") .And.Contain("Due yesterday", Exactly.Once()); item = await GetUserItemWithDescriptionAsync("Test item 2"); item.NextDueDate.Should().Be(DateTime.Today); item.CompletedDateTime.Should().BeAfter(beforeEdit); item.LastUpdateDateTime.Should().BeAfter(beforeEdit); }