Exemplo n.º 1
0
            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);
                }
            }