private void DoAssertChecksForDuplication(BrowserResponse result, Cost cost, FormDefinitionModel usageBuyoutForm) { var costDetailsUpdatedResponse = Deserialize <OperationResponse>(result, HttpStatusCode.OK); //Check Response Values Assert.AreEqual(costDetailsUpdatedResponse.Messages.First(), "Cost form data saved"); Assert.AreEqual(costDetailsUpdatedResponse.Success, true); var selectJoinResult = EFContext.CostFormDetails.Where(c => c.CostStageRevisionId == cost.LatestCostStageRevision.Id).Join(EFContext.CustomFormData, d => d.FormDataId, cfd => cfd.Id, (details, data) => new { data, details }); //Check there is only one data entry Assert.AreEqual(selectJoinResult.Count(), 1); var firstResult = selectJoinResult.First(); //Check if the ID's are correct Assert.AreEqual(firstResult.details.FormDefinitionId, usageBuyoutForm.Id); }
public async Task CreateCostTemplateWithCustomForms() { var user = await CreateUser($"{Guid.NewGuid()}User1", Roles.ClientAdmin); var model = GetCreateCostTemplateModel(); var formModel = new FormDefinitionModel { Name = "Test", Label = "test", Fields = new List <FormFieldDefintionModel> { new FormFieldDefintionModel { Label = "Test field one", Name = "testFieldOne", Type = "string" } }, Sections = new List <FormSectionDefinitionModel> { new FormSectionDefinitionModel { Name = "Section", Label = "section", Fields = new List <FormFieldDefintionModel> { new FormFieldDefintionModel { Label = "Section field one", Name = "sectionFieldOne", Type = "string" }, new FormFieldDefintionModel { Label = "Section field two", Name = "sectionFieldTwo", Type = "number" } } } } }; model.Forms = new List <FormDefinitionModel> { formModel }; var costTemplate = Deserialize <CostTemplateDetailsModel>(await Browser.Post("/v1/costtemplate/create", with => { with.User(user); with.JsonBody(model); }), HttpStatusCode.Created); costTemplate.Id.Should().NotBe(Guid.Empty); costTemplate = Deserialize <CostTemplateDetailsModel>( await Browser.Get($"/v1/costtemplate/{costTemplate.Id}", w => w.User(user)), HttpStatusCode.OK); var version = costTemplate.GetLatestVersion(); version.Should().NotBeNull(); version.Forms.Should().NotBeNull(); version.Forms.Should().HaveCount(1); var form = version.Forms.First(); form.Name.Should().Be(formModel.Name); form.Label.Should().Be(formModel.Label); form.Fields.Should().NotBeNull(); form.Fields.Should().HaveCount(1); form.Sections.Should().NotBeNull(); form.Sections.Should().HaveCount(1); var field = form.Fields.First(); field.Name.Should().Be(formModel.Fields[0].Name); field.Label.Should().Be(formModel.Fields[0].Label); field.Type.Should().Be(formModel.Fields[0].Type); var sectionModel = formModel.Sections[0]; var section = form.Sections.First(); section.Name.Should().Be(sectionModel.Name); section.Label.Should().Be(sectionModel.Label); section.Fields.Should().NotBeNull(); section.Fields.Should().HaveCount(sectionModel.Fields.Count); var i = 0; foreach (var sectionField in section.Fields) { var sectionFieldModel = sectionModel.Fields[i++]; sectionField.Name.Should().Be(sectionFieldModel.Name); sectionField.Label.Should().Be(sectionFieldModel.Label); sectionField.Type.Should().Be(sectionFieldModel.Type); } }