public void RuleForEach_NoErrorShouldOccurWhenDCFValuesIsLowerThanNonObligatedOfSameCategoryType()
        {
            var model = new NonObligatedValuesViewModel(calculator);
            List <NonObligatedData> nonObligatedList = new List <NonObligatedData>();

            for (var count = 0; count < model.CategoryValues.Count; count++)
            {
                model.CategoryValues.ElementAt(count).Tonnage = (count + 2).ToString();
                var @decimal         = decimal.Parse(model.CategoryValues.ElementAt(count).Tonnage);
                var nonObligatedData = new NonObligatedData(model.CategoryValues.ElementAt(count).CategoryId, @decimal, model.CategoryValues.ElementAt(count).Dcf, Guid.NewGuid());
                nonObligatedList.Add(nonObligatedData);
            }
            var returnData = new ReturnData
            {
                NonObligatedData = nonObligatedList
            };

            for (var count = 0; count < model.CategoryValues.Count; count++)
            {
                model.CategoryValues.ElementAt(count).Tonnage = (count + 1).ToString();
                model.CategoryValues.ElementAt(count).Dcf     = true;
            }

            validator = new NonObligatedValuesViewModelValidator(returnData);
            ValidationResult validationResult = validator.Validate(model);

            validationResult.IsValid.Should().BeTrue();
        }
        public void ViewModelToRequested_GivenValidViewModel_RequestShouldNotBeNull()
        {
            var categoryValues = new NonObligatedCategoryValues();

            var viewModel = new NonObligatedValuesViewModel(categoryValues, calculator);

            var request = requestCreator.ViewModelToRequest(viewModel);

            request.Should().NotBeNull();
        }
        public void ViewModelToRequest_GivenEditViewModel_RequestTypeShouldBeEdit()
        {
            var model = new NonObligatedValuesViewModel(calculator);

            model.CategoryValues.ElementAt(0).Id = Guid.NewGuid();

            var request = requestCreator.ViewModelToRequest(model);

            request.Should().BeOfType <EditNonObligated>();
        }
        public void ViewModelToRequested_GivenValidViewModel_CategoryValuesDcfShouldBeMapped(bool dcf)
        {
            var model = new NonObligatedValuesViewModel(calculator)
            {
                Dcf = dcf
            };
            var request = requestCreator.ViewModelToRequest(model) as AddNonObligated;

            request.Dcf.Should().Be(model.Dcf);
        }
        public async void IndexPost_GivenValidViewModel_ApiSendShouldBeCalled()
        {
            var model   = new NonObligatedValuesViewModel(calculator);
            var request = new AddNonObligated();

            A.CallTo(() => requestCreator.ViewModelToRequest(model)).Returns(request);

            await controller.Index(model);

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, request)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void ViewModelToRequested_GivenValidViewModel_CategoryValuesDcfShouldBeFalse()
        {
            var categoryValues = new NonObligatedCategoryValues();

            var viewModel = new NonObligatedValuesViewModel(categoryValues, calculator);

            var request = requestCreator.ViewModelToRequest(viewModel);

            for (var i = 0; i < categoryValues.Count; i++)
            {
                request.CategoryValues[i].Dcf.Should().BeFalse();
            }
        }
        public async void IndexPost_GivenNonObligatedDcfValuesAreSubmitted_PageRedirectShouldBeCorrect()
        {
            var model = new NonObligatedValuesViewModel(calculator)
            {
                Dcf = true
            };

            var result = await controller.Index(model) as RedirectToRouteResult;

            result.RouteValues["action"].Should().Be("Index");
            result.RouteValues["controller"].Should().Be("AatfTaskList");
            result.RouteValues["area"].Should().Be("AatfReturn");
        }
        public void ViewModelToRequested_GivenValidViewModel_ViewModelPropertiesShouldBeMapped()
        {
            var model = new NonObligatedValuesViewModel(calculator)
            {
                Dcf            = true,
                OrganisationId = Guid.NewGuid(),
                ReturnId       = Guid.NewGuid()
            };

            var request = requestCreator.ViewModelToRequest(model) as AddNonObligated;

            request.OrganisationId.Should().Be(model.OrganisationId);
            request.ReturnId.Should().Be(model.ReturnId);
            request.Dcf.Should().Be(model.Dcf);
        }
        public void ViewModelToRequest_GivenEditViewModel_CategoryValuesShouldBeMapped()
        {
            var model = new NonObligatedValuesViewModel(calculator)
            {
                CategoryValues = new List <NonObligatedCategoryValue>()
                {
                    new NonObligatedCategoryValue()
                }
            };

            model.CategoryValues.ElementAt(0).Id = Guid.NewGuid();

            var request = requestCreator.ViewModelToRequest(model);

            request.CategoryValues.Should().NotBeNull();
            request.CategoryValues.Count().Should().Be(1);
        }
        public virtual async Task <ActionResult> Index(NonObligatedValuesViewModel viewModel)
        {
            using (var client = apiClient())
            {
                if (ModelState.IsValid)
                {
                    var request = requestCreator.ViewModelToRequest(viewModel);

                    await client.SendAsync(User.GetAccessToken(), request);

                    return(RedirectToAction("Index", "AatfTaskList", new { area = "AatfReturn", organisationId = viewModel.OrganisationId, returnId = viewModel.ReturnId }));
                }

                await SetBreadcrumb(viewModel.OrganisationId, BreadCrumbConstant.AatfReturn, DisplayHelper.YearQuarterPeriodFormat(TempData["currentQuarter"] as Quarter, TempData["currentQuarterWindow"] as QuarterWindow));

                return(View(viewModel));
            }
        }
        public void ViewModelToRequested_GivenValidViewModelWithEmptyValues_CategoryValuesRequestPropertiesShouldBeMapped(string value)
        {
            var categoryValues = new NonObligatedCategoryValues();

            var viewModel = new NonObligatedValuesViewModel(categoryValues, calculator);

            foreach (var t in categoryValues)
            {
                t.Tonnage = value;
            }

            var request = requestCreator.ViewModelToRequest(viewModel);

            for (var i = 0; i < categoryValues.Count; i++)
            {
                request.CategoryValues[i].Tonnage.Should().BeNull();
            }
        }
        public void ViewModelToRequested_GivenValidViewModelWithDecimalValues_CategoryValuesRequestPropertiesShouldBeMapped()
        {
            var categoryValues = new NonObligatedCategoryValues();

            var viewModel = new NonObligatedValuesViewModel(categoryValues, calculator);

            for (var i = 0; i < categoryValues.Count; i++)
            {
                categoryValues[i].Tonnage = (i * 0.001m).ToString(CultureInfo.InvariantCulture);
            }

            var request = requestCreator.ViewModelToRequest(viewModel);

            for (var i = 0; i < categoryValues.Count; i++)
            {
                request.CategoryValues[i].Tonnage.Should().Be(Convert.ToDecimal(viewModel.CategoryValues[i].Tonnage));
            }
        }
        public void ViewModelToRequested_GivenValidViewModel_CategoryValuesRequestPropertiesShouldBeMapped()
        {
            var categoryValues = new NonObligatedCategoryValues();

            var viewModel = new NonObligatedValuesViewModel(categoryValues, calculator);

            for (var i = 0; i < categoryValues.Count; i++)
            {
                categoryValues[i].Tonnage = i.ToString();
            }

            var request = requestCreator.ViewModelToRequest(viewModel);

            for (var i = 0; i < categoryValues.Count; i++)
            {
                request.CategoryValues[i].Tonnage.Should().Be(Convert.ToDecimal(viewModel.CategoryValues[i].Tonnage));
                request.CategoryValues[i].CategoryId.Should().Be(viewModel.CategoryValues[i].CategoryId);
            }
        }
        public void RuleForEach_ErrorShouldOccurWhenNonObligatedValueIsLowerThanDcfValueOfSameCategoryType()
        {
            var model = new NonObligatedValuesViewModel(calculator)
            {
                Dcf = true
            };
            List <NonObligatedData> nonObligatedList = new List <NonObligatedData>();

            for (var count = 0; count < model.CategoryValues.Count; count++)
            {
                model.CategoryValues.ElementAt(count).Tonnage = (count + 2).ToString();
                var @decimal         = decimal.Parse(model.CategoryValues.ElementAt(count).Tonnage);
                var nonObligatedData = new NonObligatedData(model.CategoryValues.ElementAt(count).CategoryId, @decimal, true, Guid.NewGuid());
                nonObligatedList.Add(nonObligatedData);
            }
            var returnData = new ReturnData
            {
                NonObligatedData = nonObligatedList
            };

            for (var count = 0; count < model.CategoryValues.Count; count++)
            {
                model.CategoryValues.ElementAt(count).Tonnage = (count + 1).ToString();
                model.CategoryValues.ElementAt(count).Dcf     = false;
            }
            model.Dcf = false;

            validator = new NonObligatedValuesViewModelValidator(returnData);
            ValidationResult validationResult = validator.Validate(model);

            validationResult.IsValid.Should().BeFalse();
            validationResult.Errors.Count.Should().Be(14);
            for (var i = 0; i < validationResult.Errors.Count; i++)
            {
                var categoryId = i + 1;
                validationResult.Errors[i].ErrorMessage.Should().Be("Category " + categoryId + " tonnage must be greater than or equal to " + returnData.NonObligatedData[i].Tonnage);
                validationResult.Errors[i].PropertyName.Should().Be("CategoryValues[" + i + "].Tonnage");
            }
        }
        public void GivenNonObligatedValuesViewModel_CalculatorShouldBeTypeCategoryValuesTotalCalculator()
        {
            var newModel = new NonObligatedValuesViewModel();

            newModel.GetCalculator().GetType().Should().Be(typeof(CategoryValueTotalCalculator));
        }
 public NonObligatedValueViewModelTests()
 {
     calculator = new CategoryValueTotalCalculator();
     model      = new NonObligatedValuesViewModel(calculator);
 }