Ejemplo n.º 1
0
        public async Task GivenValidRequestWithAcceptTextCsvHeader_ThenReturnsListOfAssetOutputModel(int id)
        {
            //arrange
            AssetOutputModel assetOutputModel = new AssetOutputModel(TestData.Domain.GenerateAsset())
            {
                Id = id
            };

            _mockUseCase.Setup(s => s.ExecuteAsync(It.IsAny <GetAssetRequest>())).ReturnsAsync(new GetAssetResponse
            {
                Asset = assetOutputModel
            });
            _classUnderTest.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext()
            };
            _classUnderTest.ControllerContext.HttpContext.Request.Headers.Add(
                new KeyValuePair <string, StringValues>("accept", "text/csv"));
            var request = new GetAssetApiRequest
            {
                Id = id
            };
            //act
            IActionResult response = await _classUnderTest.Get(request).ConfigureAwait(false);

            //assert
            response.Should().NotBeNull();
            var result = response as ObjectResult;

            result.Should().NotBeNull();
            result.Value.Should().BeOfType <List <AssetOutputModel> >();
        }
        public async Task GivenValidRequestWithAcceptTextCsvHeader_ThenReturnsListOfAssetOutputModel()
        {
            //arrange
            var assetOutputModel = new AssetOutputModel(TestData.Domain.GenerateAsset());

            assetOutputModel.Id       = Faker.GlobalUniqueIndex;
            assetOutputModel.SchemeId = Faker.GlobalUniqueIndex + 1;
            _mockUseCase.Setup(s => s.ExecuteAsync(It.IsAny <SearchAssetRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new SearchAssetResponse
            {
                Assets = new List <AssetOutputModel> {
                    assetOutputModel
                }
            });
            _classUnderTest.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext()
            };
            _classUnderTest.ControllerContext.HttpContext.Request.Headers.Add(
                new KeyValuePair <string, StringValues>("accept", "text/csv"));
            var request = new SearchAssetApiRequest
            {
                SchemeId = assetOutputModel.SchemeId,
                AssetRegisterVersionId = 1,
            };
            //act
            var response = await _classUnderTest.Get(request).ConfigureAwait(false);

            //assert
            response.Should().NotBeNull();
            var result = response as ObjectResult;

            result.Should().NotBeNull();
            result.Value.Should().BeOfType <List <AssetOutputModel> >();
        }
        private async Task <AssetOutputModel> FindAsset(AssetOutputModel generatedAsset, int assetRegisterVersionId)
        {
            var record = await _searchAssetUseCase.ExecuteAsync(new SearchAssetRequest
            {
                SchemeId = generatedAsset?.SchemeId,
                AssetRegisterVersionId = assetRegisterVersionId
            }, CancellationToken.None).ConfigureAwait(false);

            return(record.Assets.ElementAtOrDefault(0));
        }
        public async Task <IActionResult> GetAssets(QueryParams queryParams = null)
        {
            var pageSize   = queryParams?.PageSize ?? DefaultPageSize;
            var pageNumber = queryParams?.PageNumber ?? DefaultPageNumber;

            pageSize = pageSize > MaxPageSize
                ? MaxPageSize
                : pageSize;

            var query = GetFilteredQuery(_context.Asset, queryParams);

            //TODO: Convert to service
            var result = await query
                         .Where(a => !a.IsDeleted)
                         .Include(a => a.Country)
                         .Include(a => a.MimeType)
                         .ToPagedResult(pageNumber, pageSize, MaxRecordCount);

            var totalItemCount = result.TotalItems;

            pageNumber = result.PageNumber;

            var startRecordNumber = (pageNumber - 1) * pageSize + 1;
            var endRecordNumber   = (pageNumber - 1) * pageSize + pageSize;

            endRecordNumber = endRecordNumber > totalItemCount ? totalItemCount : endRecordNumber;

            var output = new AssetOutputModel
            {
                Paging = new Pagination
                {
                    TotalItems     = totalItemCount,
                    PageSize       = pageSize,
                    PageNumber     = pageNumber,
                    LastPageNumber = result.TotalPages,
                    NextPageLink   = result.HasNextPage ?
                                     queryParams.ToUrl(Request.GetUri(), pageNumber + 1, pageSize)
                        : null,
                    PreviousPageLink = result.HasPreviousPage ?
                                       queryParams.ToUrl(Request.GetUri(), pageNumber - 1, pageSize)
                        : null,
                    PageStartRecordNumber = startRecordNumber,
                    PageEndRecordNumber   = endRecordNumber
                },
                Data = result.Items
            };

            return(Ok(output));
        }
Ejemplo n.º 5
0
        public async Task <CreateAssetResponse> ExecuteAsync(CreateAssetRequest requests, CancellationToken cancellationToken)
        {
            IAsset asset = new Asset(requests);

            var createdAsset = await _assetCreator.CreateAsync(asset);

            if (createdAsset == null)
            {
                throw new CreateAssetException();
            }

            var assetOutputModel     = new AssetOutputModel(createdAsset);
            var createdAssetResponse = new CreateAssetResponse
            {
                Asset = assetOutputModel
            };

            return(createdAssetResponse);
        }
        /// <summary>
        /// Some database store Datetime Seconds fields to 6 decimal places instead of 7
        /// this helps compare the 2 entities in that case
        /// </summary>
        /// <param name="assetOutputModel"></param>
        /// <param name="entity"></param>
        public static void AssetOutputModelIsEqual(this CreateAssetRequest assetOutputModel, AssetOutputModel entity)
        {
            assetOutputModel.Programme.Should().BeEquivalentTo(entity.Programme);
            assetOutputModel.EquityOwner.Should().BeEquivalentTo(entity.EquityOwner);
            assetOutputModel.SchemeId.Should().Be(entity.SchemeId);
            assetOutputModel.LocationLaRegionName.Should().BeEquivalentTo(entity.LocationLaRegionName);
            assetOutputModel.ImsOldRegion.Should().BeEquivalentTo(entity.ImsOldRegion);
            assetOutputModel.NoOfBeds.Should().Be(entity.NoOfBeds);
            assetOutputModel.Address.Should().BeEquivalentTo(entity.Address);
            assetOutputModel.PropertyHouseName.Should().BeEquivalentTo(entity.PropertyHouseName);
            assetOutputModel.PropertyStreetNumber.Should().BeEquivalentTo(entity.PropertyStreetNumber);
            assetOutputModel.PropertyStreet.Should().BeEquivalentTo(entity.PropertyStreet);
            assetOutputModel.PropertyTown.Should().BeEquivalentTo(entity.PropertyTown);
            assetOutputModel.PropertyPostcode.Should().BeEquivalentTo(entity.PropertyPostcode);
            assetOutputModel.DevelopingRslName.Should().BeEquivalentTo(entity.DevelopingRslName);
            assetOutputModel.LBHA.Should().BeEquivalentTo(entity.LBHA);
            assetOutputModel.CompletionDateForHpiStart.Should().BeCloseTo(entity.CompletionDateForHpiStart.Value, TimeSpan.FromMilliseconds(1.0));
            assetOutputModel.ImsActualCompletionDate.Should().BeCloseTo(entity.ImsActualCompletionDate.Value, TimeSpan.FromMilliseconds(1.0));
            assetOutputModel.ImsExpectedCompletionDate.Should().BeCloseTo(entity.ImsExpectedCompletionDate.Value, TimeSpan.FromMilliseconds(1.0));
            assetOutputModel.ImsLegalCompletionDate.Should().BeCloseTo(entity.ImsLegalCompletionDate.Value, TimeSpan.FromMilliseconds(1.0));
            assetOutputModel.HopCompletionDate.Should().BeCloseTo(entity.HopCompletionDate.Value, TimeSpan.FromMilliseconds(1.0));
            assetOutputModel.Deposit.Should().Be(entity.Deposit);
            assetOutputModel.AgencyEquityLoan.Should().Be(entity.AgencyEquityLoan);
            assetOutputModel.DeveloperEquityLoan.Should().Be(entity.DeveloperEquityLoan);
            assetOutputModel.ShareOfRestrictedEquity.Should().Be(entity.ShareOfRestrictedEquity);
            assetOutputModel.DeveloperDiscount.Should().Be(entity.DeveloperDiscount);
            assetOutputModel.Mortgage.Should().Be(entity.Mortgage);
            assetOutputModel.PurchasePrice.Should().Be(entity.PurchasePrice);
            assetOutputModel.Fees.Should().Be(entity.Fees);
            assetOutputModel.HistoricUnallocatedFees.Should().Be(entity.HistoricUnallocatedFees);
            assetOutputModel.ActualAgencyEquityCostIncludingHomeBuyAgentFee.Should().Be(entity.ActualAgencyEquityCostIncludingHomeBuyAgentFee);
            assetOutputModel.FullDisposalDate.Should().BeCloseTo(entity.FullDisposalDate.Value, TimeSpan.FromMilliseconds(1.0));
            assetOutputModel.OriginalAgencyPercentage.Should().Be(entity.OriginalAgencyPercentage);
            assetOutputModel.StaircasingPercentage.Should().Be(entity.StaircasingPercentage);
            assetOutputModel.NewAgencyPercentage.Should().Be(entity.NewAgencyPercentage);
            assetOutputModel.Invested.Should().Be(entity.Invested);
            assetOutputModel.Month.Should().Be(entity.Month);
            assetOutputModel.CalendarYear.Should().Be(entity.CalendarYear);
            assetOutputModel.MMYYYY.Should().BeEquivalentTo(entity.MMYYYY);
            assetOutputModel.Row.Should().Be(entity.Row);
            assetOutputModel.Col.Should().Be(entity.Col);
            assetOutputModel.HPIStart.Should().Be(entity.HPIStart);
            assetOutputModel.HPIEnd.Should().Be(entity.HPIEnd);
            assetOutputModel.HPIPlusMinus.Should().Be(entity.HPIPlusMinus);
            assetOutputModel.AgencyPercentage.Should().Be(entity.AgencyPercentage);
            assetOutputModel.MortgageEffect.Should().Be(entity.MortgageEffect);
            assetOutputModel.RemainingAgencyCost.Should().Be(entity.RemainingAgencyCost);
            assetOutputModel.WAEstimatedPropertyValue.Should().Be(entity.WAEstimatedPropertyValue);
            assetOutputModel.AgencyFairValueDifference.Should().Be(entity.AgencyFairValueDifference);
            assetOutputModel.ImpairmentProvision.Should().Be(entity.ImpairmentProvision);
            assetOutputModel.FairValueReserve.Should().Be(entity.FairValueReserve);
            assetOutputModel.AgencyFairValue.Should().Be(entity.AgencyFairValue);
            assetOutputModel.DisposalsCost.Should().Be(entity.DisposalsCost);
            assetOutputModel.DurationInMonths.Should().Be(entity.DurationInMonths);
            assetOutputModel.MonthOfCompletionSinceSchemeStart.Should().Be(entity.MonthOfCompletionSinceSchemeStart);
            assetOutputModel.DisposalMonthSinceCompletion.Should().Be(entity.DisposalMonthSinceCompletion);
            assetOutputModel.IMSPaymentDate.Should().BeCloseTo(entity.IMSPaymentDate.Value, TimeSpan.FromMilliseconds(1.0));
            assetOutputModel.IsPaid.Should().Be(entity.IsPaid);
            assetOutputModel.IsAsset.Should().Be(entity.IsAsset);
            assetOutputModel.PropertyType.Should().BeEquivalentTo(entity.PropertyType);
            assetOutputModel.Tenure.Should().BeEquivalentTo(entity.Tenure);
            assetOutputModel.ExpectedStaircasingRate.Should().Be(entity.ExpectedStaircasingRate);
            assetOutputModel.EstimatedSalePrice.Should().Be(entity.EstimatedSalePrice);
            assetOutputModel.RegionalSaleAdjust.Should().Be(entity.RegionalSaleAdjust);
            assetOutputModel.RegionalStairAdjust.Should().Be(entity.RegionalStairAdjust);
            assetOutputModel.NotLimitedByFirstCharge.Should().Be(entity.NotLimitedByFirstCharge);
            assetOutputModel.EarlyMortgageIfNeverRepay.Should().Be(entity.EarlyMortgageIfNeverRepay);
            assetOutputModel.ArrearsEffectAppliedOrLimited.Should().Be(entity.ArrearsEffectAppliedOrLimited);
            assetOutputModel.RelativeSalePropertyTypeAndTenureAdjustment.Should().Be(entity.RelativeSalePropertyTypeAndTenureAdjustment);
            assetOutputModel.RelativeStairPropertyTypeAndTenureAdjustment.Should().Be(entity.RelativeStairPropertyTypeAndTenureAdjustment);
            assetOutputModel.IsLondon.Should().Be(entity.IsLondon);
            assetOutputModel.QuarterSpend.Should().Be(entity.QuarterSpend);
            assetOutputModel.MortgageProvider.Should().Be(entity.MortgageProvider);
            assetOutputModel.HouseType.Should().Be(entity.HouseType);
            assetOutputModel.PurchasePriceBand.Should().Be(entity.PurchasePriceBand);
            assetOutputModel.HouseholdFiveKIncomeBand.Should().Be(entity.HouseholdFiveKIncomeBand);
            assetOutputModel.HouseholdFiftyKIncomeBand.Should().Be(entity.HouseholdFiftyKIncomeBand);
            assetOutputModel.FirstTimeBuyer.Should().Be(entity.FirstTimeBuyer);

            assetOutputModel.HouseholdIncome.Should().Be(entity.HouseholdIncome);
            assetOutputModel.EstimatedValuation.Should().Be(entity.EstimatedValuation);
        }