Example #1
0
        public List <Diamond> DiamondsBySearchParameters(DiamondSearchParameters mappedSearchParameters)
        {
            if (mappedSearchParameters.PriceFrom > mappedSearchParameters.PriceTo && mappedSearchParameters.PriceTo != 0)
            {
                var temp = mappedSearchParameters.PriceFrom;
                mappedSearchParameters.PriceFrom = mappedSearchParameters.PriceTo;
                mappedSearchParameters.PriceTo   = temp;
            }

            if (mappedSearchParameters.WeightFrom > mappedSearchParameters.WeightTo && mappedSearchParameters.WeightTo != 0)
            {
                decimal temp2 = mappedSearchParameters.WeightFrom;
                mappedSearchParameters.WeightFrom = mappedSearchParameters.WeightTo;
                mappedSearchParameters.WeightTo   = temp2;
            }

            var dbdiamonds = dbmock
                             .Where(cond => MakeEmptyListActLikeAnAllFilter(cond.color, mappedSearchParameters.Color))
                             .Where(cond => MakeEmptyListActLikeAnAllFilter(cond.clarity, mappedSearchParameters.Clarity))
                             .Where(cond => MakeEmptyListActLikeAnAllFilter(cond.shape, mappedSearchParameters.Shape))
                             .Where(cond => MakeEmptyListActLikeAnAllFilter(cond.report, mappedSearchParameters.Report))
                             .Where(cond => MakeEmptyListActLikeAnAllFilter(cond.cut, mappedSearchParameters.Cut))
                             .Where(x => MakeZeroActAsIgnoreParameter(p => p.totalprice >= mappedSearchParameters.PriceFrom, x, mappedSearchParameters.PriceFrom) && MakeZeroActAsIgnoreParameter(p => p.totalprice <= mappedSearchParameters.PriceTo, x, mappedSearchParameters.PriceTo))
                             .Where(x => MakeZeroActAsIgnoreParameter(p => p.weight >= mappedSearchParameters.WeightFrom, x, mappedSearchParameters.WeightFrom) && MakeZeroActAsIgnoreParameter(p => p.weight <= mappedSearchParameters.WeightTo, x, mappedSearchParameters.WeightTo))
            ;


            if (mappedSearchParameters.ItemsPerPage == 0)
            {
                mappedSearchParameters.ItemsPerPage = 10;
            }

            totalRecords = dbdiamonds.Count();
            if (TotalRecords % mappedSearchParameters.ItemsPerPage == 0)
            {
                lastOporationTotalPages = TotalRecords / mappedSearchParameters.ItemsPerPage;
            }
            else
            {
                lastOporationTotalPages = TotalRecords / mappedSearchParameters.ItemsPerPage + 1;
            }

            if (mappedSearchParameters.OrderBy != null)
            {
                dbdiamonds = dbdiamonds.OrderBy(mappedSearchParameters.OrderBy.SQLString);
            }


            var dbdiamondslist = dbdiamonds.Skip((mappedSearchParameters.Page - 1) * mappedSearchParameters.ItemsPerPage).Take(mappedSearchParameters.ItemsPerPage).ToList();

            var diamonds = mapper.Map <IList <v_jd_diamonds>, List <Diamond> >(dbdiamondslist);

            return(diamonds);
        }
Example #2
0
        private List <Diamond> GetDiamondCollectionUnSorted()
        {
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page = 1;

            var diamondRepository = new FakeDiamondRepository(mapper);

            //Act
            return(diamondRepository.DiamondsBySearchParameters(searchParameters));
        }
Example #3
0
        public void DiamondsBySearchParameters_ShouldReturnZeroItemsIfThePageRequestedDoesntExists()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 3;
            searchParameters.ItemsPerPage = 3;

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(0);
        }
Example #4
0
        public void DiamondsBySearchParameters_ShouldReturnOnly3ItemsOnPage2AsRequestedBySearchParams()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 2;
            searchParameters.ItemsPerPage = 3;

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(3);
        }
Example #5
0
        public void DiamondsBySearchParameters_ShouldReturnAllTheItemsInTheRepostoryWhenNoFiltersAreAskedForAndWeWantTheFirstPage()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 1;
            searchParameters.ItemsPerPage = 10;

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(THE_TOTAL_NUMBER_OF_ITEMS);
        }
Example #6
0
        public void DiamondsBySearchParameters_ShouldReturn1ItemOnPage2WhenPageSizeIs5()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 2;
            searchParameters.ItemsPerPage = 5;

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(1);
        }
Example #7
0
        public void TotalPagesNumber_ShouldSortByWeightInDescOrderWhenCalledAsPartOFTheSearchParams()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.OrderBy = new DynamicOrderBy("totalprice", "desc");

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            var unsortedCollectio = GetDiamondCollectionUnSorted();

            diamonds.Should().ContainInOrder(unsortedCollectio.OrderByDescending(x => x.Price).ToList());
        }
Example #8
0
        public void TotalPagesNumber_ShouldReturnTheTotalNumberOfPagesCorrectly()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 1;
            searchParameters.ItemsPerPage = 2;

            var diamondRepository = new FakeDiamondRepository(mapper);

            //Act
            diamondRepository.DiamondsBySearchParameters(searchParameters);
            var totalPages = diamondRepository.LastOporationTotalPages;

            //Assert
            totalPages.Should().Be(3);
        }
Example #9
0
        public void DiamondsBySearchParameters_ShouldFilterResultsByWeightMarginsWhenBothAreSpecifiedEvenIfTheFromFieldIBiggerThenTheToField()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 1;
            searchParameters.ItemsPerPage = 10;
            searchParameters.WeightFrom   = (decimal)1.35;
            searchParameters.WeightTo     = 1;

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(3);
        }
Example #10
0
        public void DiamondsBySearchParameters_ShouldFilterResultsByWeightMarginsWhenOnlyToWeightIsSpecified()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 1;
            searchParameters.ItemsPerPage = 10;
            searchParameters.WeightFrom   = 0;
            searchParameters.WeightTo     = (decimal)1.35;

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(3);
        }
Example #11
0
        public void DiamondsBySearchParameters_ShouldFilterResultsByPriceMarginsWhenBothAreSpecified()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 1;
            searchParameters.ItemsPerPage = 10;
            searchParameters.PriceFrom    = 26000;
            searchParameters.PriceTo      = 28000;

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(1);
        }
Example #12
0
        public void DiamondsBySearchParameters_ShouldFilterResultsByCutButMoreThenOneCutSelected()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 1;
            searchParameters.ItemsPerPage = 10;
            searchParameters.Cut          = new List <string>()
            {
                "G", "VG"
            };

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(4);
        }
Example #13
0
        public void DiamondsBySearchParameters_ShouldFilterResultsByShapeWhenOneShapeSelected()
        {
            //Arrange
            var searchParameters = new DiamondSearchParameters();

            searchParameters.Page         = 1;
            searchParameters.ItemsPerPage = 10;
            searchParameters.Shape        = new List <string>()
            {
                "Round"
            };

            var diamondRepository = new FakeDiamondRepository(mapper);
            //Act
            var diamonds = diamondRepository.DiamondsBySearchParameters(searchParameters);

            //Assert
            diamonds.Should().HaveCount(2);
        }