public async void OnPost_ValidInputsWithTitleAndBody_ExpectSaveToRepositories() { //Arrange var client = _appFactory.CreateAuthorizedClient(); var form = await GetNewPoemForm(client); var newPoem = new PoemBuilder().Random().Build(); var inputs = CreateFormInputs(newPoem); //Act var response = await PostRequestHelper.PostWithUpdateInputsAsync(client, form, inputs); var selectors = new SelectorHelper(response, PageElements.NewPoemPageSelectors); //Assert var queryPoem = _appFactory.DbContext.GetQueryable <Poem>(); var poemResult = queryPoem.FirstOrDefault(p => p.Name == newPoem.Name); Assert.NotNull(poemResult); Assert.Equal(newPoem.Notes, poemResult.Notes); Assert.Equal(newPoem.ConceivedDateUTC.ToString("yyyy-MM-dd HH:mm"), poemResult.ConceivedDateUTC.ToString("yyyy-MM-dd HH:mm")); var queryRevision = _appFactory.DbContext.GetQueryable <PoemRevision>(); var revisionResult = queryRevision.FirstOrDefault(r => r.Title == inputs["NewRevision.Title"]); Assert.NotNull(revisionResult); Assert.Equal(inputs["NewRevision.Body"], revisionResult.Body); }
public async void OnPost_AllFieldsModified_ExpectChangesSavedToRepository() { //Arrange var poem = new PoemBuilder().Default().Build(); poem.PublishedRevision = null; var client = CreateClientAndTestData(poem); var form = await GetInputFormAsync(client, poem.Id); var modifiedPoemDTO = PoemDTO.CreateDTOFromEntity(poem); modifiedPoemDTO.Name = "Updated " + poem.Name; modifiedPoemDTO.Notes = poem.Notes + " and more notes"; modifiedPoemDTO.ConceivedDateLocal = poem.ConceivedDateUTC.ToLocalTime().AddDays(-1); modifiedPoemDTO.PublishedRevisionId = poem.PoemRevisions.FirstOrDefault().Id; var newRevision = new RevisionBuilder(poem).Random().Build(); var newRevisionDTO = RevisionDTO.CreateDTOFromEntity(newRevision); var inputs = CreateFormInputs(modifiedPoemDTO, newRevisionDTO); //Act var response = await PostRequestHelper.PostWithUpdateInputsAsync(client, form, inputs); //Assert var revisionList = new RevisionList(poem.PoemRevisions.Append(newRevision)); AssertEditPoemPage(response, modifiedPoemDTO, revisionList); }
public async void OnPost_ValidInputs_ExpectRedirectToListPoemsPage() { //Arrange var client = _appFactory.CreateAuthorizedClient(); var form = await GetNewPoemForm(client); var newPoem = new PoemBuilder().Random().Build(); var inputs = CreateFormInputs(newPoem); //Act var response = await PostRequestHelper.PostWithUpdateInputsAsync(client, form, inputs); var selectors = new SelectorHelper(response, PageElements.ListPoemsPageSelectors); var poemNames = selectors.GetAll <IHtmlElement>((int)PageElements.ListPoemsPageElementEnum.PoemName); //Assert var name = poemNames.FirstOrDefault(p => p.TextContent == newPoem.Name); Assert.NotNull(name); }
public async void OnPost_HasPublishedRevision_ChangeToNotPublish_ExpectChangesSavedToRepository() { //Arrange var poem = new PoemBuilder().Random().Build(); poem.PoemRevisions = new RevisionBuilder(poem).Default().BuildCollection(size: 2); poem.PublishedRevision = poem.PoemRevisions.FirstOrDefault(); var client = CreateClientAndTestData(poem); var form = await GetInputFormAsync(client, poem.Id); var modifiedPoemDTO = PoemDTO.CreateDTOFromEntity(poem); modifiedPoemDTO.PublishedRevisionId = null; var inputs = CreateFormInputs(modifiedPoemDTO); //Act var response = await PostRequestHelper.PostWithUpdateInputsAsync(client, form, inputs); //Assert var revisionList = new RevisionList(poem.PoemRevisions); AssertEditPoemPage(response, modifiedPoemDTO, revisionList); }