Пример #1
0
        public void GetAnswerStringValue_ShouldGenerateCorrectValue_ForBooking_WhenDateTime_IsMinValue()
        {
            // Arrange
            var questionId  = "test-bookingID";
            var date        = DateTime.MinValue;
            var formAnswers = new FormAnswers {
                Pages = new List <PageAnswers> {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers {
                                QuestionId = $"{questionId}-{BookingConstants.RESERVED_BOOKING_DATE}", Response = date.ToString()
                            }
                        }
                    }
                }
            };

            var element = new ElementBuilder()
                          .WithType(EElementType.Booking)
                          .WithQuestionId(questionId)
                          .Build();

            // Act
            var result = _elementMapper.GetAnswerStringValue(element, formAnswers);

            // Assert
            Assert.Equal(string.Empty, result);
        }
        public async Task RenderAsync_ShouldCallGenerateDocumentUploadUrl_Base64StringCaseRef()
        {
            //Arrange
            var element = new ElementBuilder()
                          .WithType(EElementType.DocumentUpload)
                          .Build();

            var page = new PageBuilder()
                       .WithElement(element)
                       .Build();

            var viewModel = new Dictionary <string, dynamic>();

            var schema = new FormSchemaBuilder()
                         .WithName("form-name")
                         .Build();

            var formAnswers = new FormAnswers();

            //Act
            await element.RenderAsync(
                _mockIViewRender.Object,
                _mockElementHelper.Object,
                string.Empty,
                viewModel,
                page,
                schema,
                _mockHostingEnv.Object,
                formAnswers);

            //Assert
            _mockIViewRender.Verify(_ => _.RenderAsync(It.Is <string>(x => x.Equals("DocumentUpload")), It.IsAny <DocumentUpload>(), It.IsAny <Dictionary <string, object> >()), Times.Once);
            _mockElementHelper.Verify(_ => _.GenerateDocumentUploadUrl(It.IsAny <Element>(), It.IsAny <FormSchema>(), It.IsAny <FormAnswers>()), Times.Once);
        }
Пример #3
0
        public void CurrentValue_ShouldReturnStoredValueOfElement_WhenCacheDataContainsElementValue()
        {
            // Arrange
            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        PageSlug = "test-slug",
                        Answers  = new List <Answers> {
                            new Answers {
                                QuestionId = "test-id",
                                Response   = "this is the value"
                            }
                        }
                    }
                }
            };

            var viewModel = new Dictionary <string, dynamic>();

            // Act
            var result = _elementHelper.CurrentValue("test-id", viewModel, formAnswers);

            // Assert
            Assert.Equal("this is the value", result);
        }
Пример #4
0
        public async Task RenderAsync_ShouldCall_ElementHelper_ToGetCurrentValue_ForAddressFields()
        {
            //Arrange
            var element = new ElementBuilder()
                          .WithType(EElementType.AddressManual)
                          .Build();

            var page = new PageBuilder()
                       .WithElement(element)
                       .Build();

            var viewModel = new Dictionary <string, dynamic> {
                { AddressManualConstants.POSTCODE, "sk11aa" }
            };

            var schema = new FormSchemaBuilder()
                         .WithName("form-name")
                         .Build();

            var formAnswers = new FormAnswers();
            //Act
            var result = await element.RenderAsync(
                _mockIViewRender.Object,
                _mockElementHelper.Object,
                string.Empty,
                viewModel,
                page,
                schema,
                _mockHostingEnv.Object,
                formAnswers);

            //Assert
            _mockIViewRender.Verify(_ => _.RenderAsync(It.Is <string>(x => x == "AddressManual"), It.IsAny <form_builder.Models.Elements.AddressManual>(), It.IsAny <Dictionary <string, object> >()), Times.Once);
            _mockElementHelper.Verify(_ => _.CurrentValue(It.IsAny <string>(), It.IsAny <Dictionary <string, dynamic> >(), It.IsAny <FormAnswers>(), It.IsAny <string>()), Times.Exactly(4));
        }
Пример #5
0
        public void Parse_ShouldReturnUpdatedValue_WhenReplacingSingleValue()
        {
            var expectedString = "this value testfirstname should be replaced with name question";

            var element = new ElementBuilder()
                          .WithType(EElementType.P)
                          .WithPropertyText("this value {{FORMDATA:firstname}} should be replaced with name question")
                          .Build();

            var page = new PageBuilder()
                       .WithElement(element)
                       .Build();

            var formAnswers = new FormAnswers
            {
                AdditionalFormData = new Dictionary <string, object>
                {
                    { "firstname", "testfirstname" }
                }
            };

            var result = _tagParser.Parse(page, formAnswers);

            Assert.Equal(expectedString, result.Elements.FirstOrDefault().Properties.Text);
        }
Пример #6
0
        private TimeSpan?GetTimeElementValue(string key, FormAnswers formAnswers)
        {
            dynamic dateObject     = new ExpandoObject();
            var     timeMinutesKey = $"{key}{TimeConstants.MINUTES_SUFFIX}";
            var     timeHoursKey   = $"{key}{TimeConstants.HOURS_SUFFIX}";
            var     timeAmPmKey    = $"{key}{TimeConstants.AM_PM_SUFFIX}";

            var value = formAnswers.Pages.SelectMany(_ => _.Answers)
                        .Where(_ => _.QuestionId.Equals(timeMinutesKey) || _.QuestionId.Equals(timeHoursKey) ||
                               _.QuestionId.Equals(timeAmPmKey))
                        .ToList();

            var minutes = value.FirstOrDefault(_ => _.QuestionId.Equals(timeMinutesKey))?.Response ?? string.Empty;
            var hour    = value.FirstOrDefault(_ => _.QuestionId.Equals(timeHoursKey))?.Response ?? string.Empty;
            var amPm    = value.FirstOrDefault(_ => _.QuestionId.Equals(timeAmPmKey))?.Response ?? string.Empty;

            if (string.IsNullOrEmpty(minutes) || string.IsNullOrEmpty(hour) || string.IsNullOrEmpty(amPm))
            {
                return(null);
            }

            var dateTime = DateTime.Parse($"{hour}:{minutes} {amPm}");

            return(dateTime.TimeOfDay);
        }
        public void GetReducedAnswers_ShouldReturnPageAnswers_ThatExistInSchema()
        {
            // Arrange
            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers
                    {
                        Answers  = new List <Answers>(),
                        PageSlug = "page-1"
                    },
                    new PageAnswers
                    {
                        Answers  = new List <Answers>(),
                        PageSlug = "page-2"
                    },
                    new PageAnswers
                    {
                        Answers  = new List <Answers>(),
                        PageSlug = "page-3"
                    }
                }
            };

            var formSchema = new FormSchemaBuilder()
                             .WithPage(new Page
            {
                PageSlug   = "page-1",
                Behaviours = new List <Behaviour>
                {
                    new Behaviour
                    {
                        BehaviourType = EBehaviourType.GoToPage,
                        PageSlug      = "page-3"
                    }
                }
            })
                             .WithPage(new Page
            {
                PageSlug   = "page-2",
                Behaviours = new List <Behaviour>
                {
                    new Behaviour
                    {
                        BehaviourType = EBehaviourType.GoToPage,
                        PageSlug      = "page-3"
                    }
                }
            }
                                       )
                             .WithFirstPageSlug("page-1")
                             .Build();

            // Act
            var result = formAnswers.GetReducedAnswers(formSchema);

            // Assert
            Assert.Single(result);
        }
Пример #8
0
        public void GetAnswerValue_ShouldReturnSingleDateWhenElementIsDatePicker()
        {
            // Arrange
            var element = new ElementBuilder()
                          .WithType(EElementType.DatePicker)
                          .WithQuestionId("testDate")
                          .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers
                            {
                                QuestionId = "testDate",
                                Response   = "21/02/2020"
                            }
                        }
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            Assert.IsType <DateTime>(result);
        }
Пример #9
0
        public void GetAnswerValue_ShouldReturnValue()
        {
            // Arrange
            var element = new ElementBuilder()
                          .WithQuestionId("test")
                          .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers
                            {
                                QuestionId = "test",
                                Response   = "testTwo"
                            }
                        }
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            Assert.IsType <string>(result);
        }
Пример #10
0
        public void GetAnswerValue_ShouldReturnBookingModel_WhenElementIsBooking()
        {
            // Arrange
            var questionId = "testbookingId";
            var dateTime   = DateTime.Now;
            var startTime  = DateTime.Today.Add(new TimeSpan(22, 0, 0));
            var element    = new ElementBuilder()
                             .WithQuestionId(questionId)
                             .WithType(EElementType.Booking)
                             .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers {
                                QuestionId = $"{questionId}-{BookingConstants.RESERVED_BOOKING_DATE}", Response = dateTime.ToString()
                            },
                            new Answers {
                                QuestionId = $"{questionId}-{BookingConstants.RESERVED_BOOKING_START_TIME}", Response = dateTime.ToString()
                            }
                        }
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            var dateTimeResult = Assert.IsType <Booking>(result);
        }
Пример #11
0
        public void GetAnswerValue_ShouldReturnNull_WhenElementIsBooking_AndValueNotFound()
        {
            // Arrange
            var dateTime = DateTime.Now.ToString();
            var element  = new ElementBuilder()
                           .WithQuestionId("testbookingId")
                           .WithType(EElementType.Booking)
                           .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers>()
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            Assert.Null(result);
        }
Пример #12
0
        public void GetAnswerValue_ShouldReturnIntWhenNumericIsTrue()
        {
            // Arrange
            var element = new ElementBuilder()
                          .WithNumeric(true)
                          .WithQuestionId("testNumber")
                          .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers
                            {
                                QuestionId = "testNumber",
                                Response   = "23"
                            }
                        }
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            Assert.IsType <int>(result);
        }
Пример #13
0
        public void GetAnswerValue_ShouldReturnEmptyArray_WhenResponseIsEmpty_ForCheckbox()
        {
            // Arrange
            var element = new ElementBuilder()
                          .WithQuestionId("testCheckbox")
                          .WithType(EElementType.Checkbox)
                          .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers
                            {
                                QuestionId = "testCheckbox"
                            }
                        }
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            var type = Assert.IsType <List <string> >(result);

            Assert.Empty(type);
        }
Пример #14
0
        public void GetAnswerValue_ShouldReturnArrayOfStrings_WhenElementIsCheckbox()
        {
            // Arrange
            var element = new ElementBuilder()
                          .WithQuestionId("testCheckbox")
                          .WithType(EElementType.Checkbox)
                          .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers
                            {
                                QuestionId = "testCheckbox",
                                Response   = "option1,option2,option3"
                            }
                        }
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            var type = Assert.IsType <List <string> >(result);

            Assert.Equal("option1", type[0]);
            Assert.Equal("option2", type[1]);
            Assert.Equal("option3", type[2]);
            Assert.Equal(3, type.Count);
        }
Пример #15
0
        public async Task Build_ShouldCall_Parse_On_TagParsers()
        {
            // Arrange
            _tagParser.Setup(_ => _.Parse(It.IsAny<Page>(), It.IsAny<FormAnswers>()))
                .Returns(new Page());
            var tagParserItems = new List<ITagParser> { _tagParser.Object, _tagParser.Object };
            _mockTagParsers.Setup(m => m.GetEnumerator()).Returns(() => tagParserItems.GetEnumerator());

            _mockPageHelper.Setup(_ => _.GenerateHtml(
                It.IsAny<Page>(),
                It.IsAny<Dictionary<string, dynamic>>(),
                It.IsAny<FormSchema>(),
                It.IsAny<string>(),
                It.IsAny<FormAnswers>(),
                It.IsAny<List<object>>()))
                .ReturnsAsync(new FormBuilderViewModel { RawHTML = string.Empty });

            var formSchema = new FormSchemaBuilder()
                .WithBaseUrl("base")
                .WithName("form name")
                .Build();

            var formAnswers = new FormAnswers();

            var page = new PageBuilder()
                .WithPageSlug("page-one")
                .Build();

            // Act
            await _factory.Build(page, new Dictionary<string, dynamic>(), formSchema, string.Empty, formAnswers);

            // Assert
            _tagParser.Verify(_ => _.Parse(It.IsAny<Page>(), It.IsAny<FormAnswers>()), Times.Exactly(2));
        }
Пример #16
0
        public void GetAnswerValue_ShouldNotCall_DistributedCache_WhenNoFileWithinAnswers()
        {
            // Arrange
            var key         = "fileUploadTestKey";
            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers>()
                    }
                }
            };

            var element = new ElementBuilder()
                          .WithType(EElementType.FileUpload)
                          .WithQuestionId(key)
                          .Build();

            // Act
            _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            _wrapper.Verify(_ => _.GetString(It.IsAny <string>()), Times.Never);
        }
Пример #17
0
        private Address GetAddressElementValue(string key, FormAnswers formAnswers)
        {
            var addressObject = new Address();

            var uprnKey                   = $"{key}{AddressConstants.SELECT_SUFFIX}";
            var addressDescription        = $"{key}{AddressConstants.DESCRIPTION_SUFFIX}";
            var manualAddressLineOne      = $"{key}-{AddressManualConstants.ADDRESS_LINE_1}";
            var manualAddressLineTwo      = $"{key}-{AddressManualConstants.ADDRESS_LINE_2}";
            var manualAddressLineTown     = $"{key}-{AddressManualConstants.TOWN}";
            var manualAddressLinePostcode = $"{key}-{AddressManualConstants.POSTCODE}";

            var value = formAnswers.Pages.SelectMany(_ => _.Answers)
                        .Where(_ => _.QuestionId.Equals(manualAddressLineOne) || _.QuestionId.Equals(manualAddressLineTwo) ||
                               _.QuestionId.Equals(manualAddressLineTown) || _.QuestionId.Equals(manualAddressLinePostcode) ||
                               _.QuestionId.Equals(uprnKey) || _.QuestionId.Equals(addressDescription))
                        .ToList();

            addressObject.AddressLine1    = value.FirstOrDefault(_ => _.QuestionId.Equals(manualAddressLineOne))?.Response ?? string.Empty;
            addressObject.AddressLine2    = value.FirstOrDefault(_ => _.QuestionId.Equals(manualAddressLineTwo))?.Response ?? string.Empty;
            addressObject.Town            = value.FirstOrDefault(_ => _.QuestionId.Equals(manualAddressLineTown))?.Response ?? string.Empty;
            addressObject.Postcode        = value.FirstOrDefault(_ => _.QuestionId.Equals(manualAddressLinePostcode))?.Response ?? string.Empty;
            addressObject.PlaceRef        = value.FirstOrDefault(_ => _.QuestionId.Equals(uprnKey))?.Response ?? string.Empty;
            addressObject.SelectedAddress = value.FirstOrDefault(_ => _.QuestionId.Equals(addressDescription))?.Response ?? null;

            return(addressObject.IsEmpty() ? null : addressObject);
        }
Пример #18
0
        public void Map_ShouldReturnExpandoObject_WhenFormContains_MultipleValidatableElementsWithTargetMapping_WithValues()
        {
            // Arrange
            var elementOneAnswer = "01/01/2000";
            var element3         = new ElementBuilder()
                                   .WithType(EElementType.DatePicker)
                                   .WithQuestionId("test")
                                   .WithTargetMapping("customer.datepicker.date")
                                   .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers
                            {
                                QuestionId = "test",
                                Response   = elementOneAnswer
                            }
                        }
                    }
                }
            };

            var result = _elementMapper.GetAnswerValue(element3, formAnswers);

            var resultData = Assert.IsType <DateTime>(result);

            Assert.Equal($"{elementOneAnswer} 00:00:00", resultData.ToString());
        }
        private async Task AddDynamicOptions(IElement element, FormAnswers convertedAnswers)
        {
            LookupSource submitDetails = element.Properties.LookupSources
                                         .SingleOrDefault(x => x.EnvironmentName
                                                          .Equals(_environment.EnvironmentName, StringComparison.OrdinalIgnoreCase));

            if (submitDetails is null)
            {
                throw new Exception("DynamicLookupPageTransformFactory::AddDynamicOptions, No Environment specific details found");
            }

            RequestEntity request = _actionHelper.GenerateUrl(submitDetails.URL, convertedAnswers);

            if (string.IsNullOrEmpty(submitDetails.Provider))
            {
                throw new Exception("DynamicLookupPageTransformFactory::AddDynamicOptions, No Provider name given in LookupSources");
            }

            var           lookupProvider = _lookupProviders.Get(submitDetails.Provider);
            List <Option> lookupOptions  = await lookupProvider.GetAsync(request.Url, submitDetails.AuthToken);

            if (!lookupOptions.Any())
            {
                throw new Exception("DynamicLookupPageTransformFactory::AddDynamicOptions, Provider returned no options");
            }

            element.Properties.Options.AddRange(lookupOptions);
        }
Пример #20
0
        public void GetAnswerValue_ShouldReturnNullWhenResponseIsEmpty_WhenElementIsDatePicker()
        {
            // Arrange
            var element = new ElementBuilder()
                          .WithType(EElementType.DatePicker)
                          .WithQuestionId("testNumber")
                          .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers
                            {
                                QuestionId = "testNumber"
                            }
                        }
                    }
                }
            };

            // Act
            var result = _elementMapper.GetAnswerValue(element, formAnswers);

            // Assert
            Assert.Null(result);
        }
        public void Parse_ShouldReturnUpdatedValue_WhenReplacingSingleValue()
        {
            var expectedString = "this value testfirstname should be replaced with name question";

            var element = new ElementBuilder()
                          .WithType(EElementType.P)
                          .WithPropertyText("this value {{QUESTION:firstname}} should be replaced with name question")
                          .Build();

            var page = new PageBuilder()
                       .WithElement(element)
                       .Build();

            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers
                    {
                        Answers = new List <Answers>
                        {
                            new Answers
                            {
                                QuestionId = "firstname",
                                Response   = "testfirstname"
                            }
                        }
                    }
                }
            };

            var result = _tagParser.Parse(page, formAnswers);

            Assert.Equal(expectedString, result.Elements.FirstOrDefault().Properties.Text);
        }
Пример #22
0
        public void GetAnswerStringValue_ShouldReturnCorrectValue_ForElements(EElementType type, string value)
        {
            // Arrange
            var questionId  = "test-questionID";
            var formAnswers = new FormAnswers {
                Pages = new List <PageAnswers> {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers {
                                QuestionId = questionId, Response = value
                            }
                        }
                    }
                }
            };

            var element = new ElementBuilder()
                          .WithType(type)
                          .WithQuestionId(questionId)
                          .Build();

            // Act
            var result = _elementMapper.GetAnswerStringValue(element, formAnswers);

            // Assert
            Assert.Equal(value, result);
        }
Пример #23
0
        public void Parse_ShouldCallFormatter_WhenProvided()
        {
            var expectedString = "this value should be formatted: FAKE-FORMATTED-VALUE";

            var element = new ElementBuilder()
                          .WithType(EElementType.P)
                          .WithPropertyText("this value should be formatted: {{FORMDATA:firstname:testformatter}}")
                          .Build();

            var page = new PageBuilder()
                       .WithElement(element)
                       .Build();

            var formAnswers = new FormAnswers
            {
                AdditionalFormData = new Dictionary <string, object>
                {
                    { "firstname", "testfirstname" }
                }
            };

            var result = _tagParser.Parse(page, formAnswers);

            Assert.Equal(expectedString, result.Elements.FirstOrDefault().Properties.Text);
            _mockFormatter.Verify(_ => _.Parse(It.IsAny <string>()), Times.Once);
        }
Пример #24
0
        public void GetAnswerStringValue_ShouldReturnCorrectValue_ForDatePickerElement()
        {
            // Arrange
            var questionId  = "test-questionID";
            var labelText   = "Enter the date";
            var value       = new DateTime(2000, 01, 01);
            var formAnswers = new FormAnswers {
                Pages = new List <PageAnswers> {
                    new PageAnswers {
                        Answers = new List <Answers> {
                            new Answers {
                                QuestionId = questionId, Response = value.ToString()
                            }
                        }
                    }
                }
            };

            var element = new ElementBuilder()
                          .WithType(EElementType.DatePicker)
                          .WithQuestionId(questionId)
                          .WithLabel(labelText)
                          .Build();

            // Act
            var result = _elementMapper.GetAnswerStringValue(element, formAnswers);

            // Assert
            Assert.Equal(value.ToString("dd/MM/yyyy"), result);
        }
Пример #25
0
        public async Task RenderAsync_ShouldCall_PageHelper_ToGetCurrentValue()
        {
            //Arrange
            var element = new ElementBuilder()
                          .WithType(EElementType.Map)
                          .Build();

            var page = new PageBuilder()
                       .WithElement(element)
                       .Build();

            var viewModel = new Dictionary <string, dynamic>();

            var schema = new FormSchemaBuilder()
                         .WithName("form-name")
                         .Build();

            var formAnswers = new FormAnswers();

            //Act
            await element.RenderAsync(
                _mockIViewRender.Object,
                _mockElementHelper.Object,
                string.Empty,
                viewModel,
                page,
                schema,
                _mockHostingEnv.Object,
                formAnswers);

            //Assert
            _mockIViewRender.Verify(_ => _.RenderAsync(It.Is <string>(x => x.Equals("Map")), It.IsAny <Map>(), It.IsAny <Dictionary <string, object> >()), Times.Once);
            _mockElementHelper.Verify(_ => _.CurrentValue <object>(It.IsAny <string>(), It.IsAny <Dictionary <string, dynamic> >(), It.IsAny <FormAnswers>(), It.IsAny <string>()), Times.Once);
        }
        public void Validate_ShouldReturn_Valid_IfElement_IsValid_OnSamePageSubmission()
        {
            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers
                    {
                        Answers = new List <Answers>()
                    }
                }
            };

            _mockFormAnswersProvider.Setup(_ => _.GetFormAnswers()).Returns(formAnswers);

            var isDateBeforeValidator = new IsDateBeforeValidator(_mockFormAnswersProvider.Object);

            var viewModel = new Dictionary <string, dynamic>
            {
                {
                    "test-element",
                    "01/01/2019"
                },
                {
                    "test-comparison-element",
                    "01/01/2020"
                }
            };

            // Act
            ValidationResult result = isDateBeforeValidator.Validate(datePickerelement, viewModel, SchemaWithDatePickerElement);

            // Assert
            Assert.True(result.IsValid);
        }
Пример #27
0
        public override Task <string> RenderAsync(IViewRender viewRender,
                                                  IElementHelper elementHelper,
                                                  string guid,
                                                  Dictionary <string, dynamic> viewModel,
                                                  Page page,
                                                  FormSchema formSchema,
                                                  IWebHostEnvironment environment,
                                                  FormAnswers formAnswers,
                                                  List <object> results = null)
        {
            var currentAnswer = elementHelper.CurrentValue <JArray>(Properties.QuestionId, viewModel, formAnswers, FileUploadConstants.SUFFIX);

            SubmitButtonText  = SetSubmitButtonText(page);
            IsModelStateValid = !viewModel.ContainsKey("modelStateInvalid");

            if (currentAnswer != null)
            {
                List <FileUploadModel> response = JsonConvert.DeserializeObject <List <FileUploadModel> >(currentAnswer.ToString());
                CurrentFilesUploaded = response.Select(_ => _.TrustedOriginalFileName).ToList();
            }

            Properties.HideOptionalText = true;

            elementHelper.CheckForQuestionId(this);
            elementHelper.CheckForLabel(this);

            return(viewRender.RenderAsync(Type.ToString(), this));
        }
Пример #28
0
        public async Task RenderAsync_ShouldDisableButton_OnClick_WhenPropertyIsEnabled()
        {
            //Arrange
            var callback = new Button();

            _mockIViewRender.Setup(_ => _.RenderAsync(It.IsAny <string>(), It.IsAny <Button>(), It.IsAny <Dictionary <string, dynamic> >()))
            .Callback <string, Button, Dictionary <string, dynamic> >((a, b, c) => callback = b);

            var element = new ElementBuilder()
                          .WithType(EElementType.Button)
                          .WithPropertyText("test text")
                          .WithDisableOnClick(true)
                          .Build();

            var page = new PageBuilder()
                       .WithElement(element)
                       .Build();

            var schema = new FormSchemaBuilder()
                         .WithName("form-name")
                         .Build();

            var formAnswers = new FormAnswers();

            var viewModel = new Dictionary <string, dynamic>();

            //Act
            await element.RenderAsync(_mockIViewRender.Object, _mockElementHelper.Object, string.Empty, viewModel, page, schema, _mockHostingEnv.Object, formAnswers);

            //Assert
            Assert.True(callback.Properties.DisableOnClick);
            _mockIViewRender.Verify(_ => _.RenderAsync(It.Is <string>(x => x.Equals("Button")), It.IsAny <Button>(), It.IsAny <Dictionary <string, object> >()), Times.Once);
        }
Пример #29
0
        public void GetDate_WithFormAnswers_ReturnCorrectDate()
        {
            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers>
                {
                    new PageAnswers
                    {
                        Answers = new List <Answers>
                        {
                            new Answers
                            {
                                QuestionId = "test-date",
                                Response   = "01/01/2020"
                            }
                        }
                    }
                }
            };

            var result = DatePicker.GetDate(formAnswers, "test-date");

            Assert.True(result.HasValue);
            Assert.True(result.Value == new DateTime(2020, 1, 1));
        }
Пример #30
0
        public void GetAnswerStringValue_ShouldGenerateCorrectValue_ForBooking()
        {
            // Arrange
            var questionId  = "test-bookingID";
            var time        = new TimeSpan(4, 30, 0);
            var date        = DateTime.Now;
            var startTime   = DateTime.Today.Add(time);
            var formAnswers = new FormAnswers
            {
                Pages = new List <PageAnswers> {
                    new PageAnswers {
                        Answers = new List <Answers>
                        {
                            new Answers {
                                QuestionId = $"{questionId}-{BookingConstants.RESERVED_BOOKING_DATE}", Response = date.ToString()
                            },
                            new Answers {
                                QuestionId = $"{questionId}-{BookingConstants.RESERVED_BOOKING_START_TIME}", Response = startTime.ToString()
                            }
                        }
                    }
                }
            };

            var element = new ElementBuilder()
                          .WithType(EElementType.Booking)
                          .WithQuestionId(questionId)
                          .Build();

            // Act
            var result = _elementMapper.GetAnswerStringValue(element, formAnswers);

            // Assert
            Assert.Equal($"{date.ToFullDateFormat()} at 4:30am to 12am", result);
        }