예제 #1
0
        public async Task CompareRecordsTest()
        {
            // Arrange
            IProductRepository mockRepo = new MockProductRepository();

            var mockDownloadTimesApi = Substitute.For <IDownloadTimesApi>();
            var mockProductTypesApi  = Substitute.For <IProductTypesApi>();
            var mockManufacturersApi = Substitute.For <IManufacturersApi>();
            var mockInstallTypesApi  = Substitute.For <IInstallTypesApi>();
            var mockMobileLookupApi  = Substitute.For <IMobileLookupApi>();
            var mockBrandApi         = Substitute.For <IBrandApi>();

            IDistributedCache   mockCache   = Substitute.For <IDistributedCache>();
            IOptions <Settings> appSettings = Substitute.For <IOptions <Settings> >();

            IStringLocalizer <ProductsController> mockLocalizer = new MockStringLocalizer <ProductsController>();

            IProductApi productApi = new ProductApi(appSettings, mockRepo);
            var         controller = new ProductsController(mockCache,
                                                            productApi,
                                                            mockDownloadTimesApi,
                                                            mockProductTypesApi,
                                                            mockManufacturersApi,
                                                            mockInstallTypesApi,
                                                            mockMobileLookupApi,
                                                            mockBrandApi,
                                                            mockLocalizer);

            var request = new GetProductsWithPagingRequestModel
            {
                FirstRecordNumber = 0,
                PageSize          = 10,
                SortField         = string.Empty,
                SortOrder         = SortOrderEnum.Asc
            };

            var testProducts = await mockRepo.GetAllProductsAsync();

            var firstProduct = new List <ProductModel>(testProducts)[0];

            //// Act
            var actionResult = await controller.GetProductsWithPaging(request);

            //// Assert
            var actualRecord = ((ObjectResult)actionResult).Value;

            Assert.Equal(((List <ProductModel>)actualRecord).Count, 10);
            var testProduct = ((List <ProductModel>)actualRecord)[0];

            Assert.Equal(JsonConvert.SerializeObject(firstProduct), JsonConvert.SerializeObject(testProduct));
        }
예제 #2
0
        public async Task BadRequestTest()
        {
            // Arrange
            IProductRepository mockRepo = new MockProductRepository();

            var mockDownloadTimesApi = Substitute.For <IDownloadTimesApi>();
            var mockProductTypesApi  = Substitute.For <IProductTypesApi>();
            var mockManufacturersApi = Substitute.For <IManufacturersApi>();
            var mockInstallTypesApi  = Substitute.For <IInstallTypesApi>();
            var mockMobileLookupApi  = Substitute.For <IMobileLookupApi>();
            var mockBrandApi         = Substitute.For <IBrandApi>();

            IDistributedCache   mockCache   = Substitute.For <IDistributedCache>();
            IOptions <Settings> appSettings = Substitute.For <IOptions <Settings> >();

            IStringLocalizer <ProductsController> mockLocalizer = new MockStringLocalizer <ProductsController>();

            IProductApi productApi = new ProductApi(appSettings, mockRepo);
            var         controller = new ProductsController(mockCache,
                                                            productApi,
                                                            mockDownloadTimesApi,
                                                            mockProductTypesApi,
                                                            mockManufacturersApi,
                                                            mockInstallTypesApi,
                                                            mockMobileLookupApi,
                                                            mockBrandApi,
                                                            mockLocalizer);

            var request = new GetProductsWithPagingRequestModel
            {
                FirstRecordNumber = -1,
                PageSize          = 0,
                SortField         = string.Empty,
                SortOrder         = SortOrderEnum.Asc
            };

            controller.ModelState.AddModelError("", "Error");


            //// Act
            var actionResult = await controller.GetProductsWithPaging(request);

            var badResponse = actionResult as BadRequestObjectResult;

            //// Assert
            Assert.NotNull(badResponse);
            Assert.Equal(badResponse.StatusCode, (int)System.Net.HttpStatusCode.BadRequest);
        }
예제 #3
0
        public async Task GetAllLookupsTest()
        {
            IProductRepository mockRepo = new MockProductRepository();

            var mockDownloadTimesApi = Substitute.For <IDownloadTimesApi>();

            var repositoryReturnValue = new List <DownloadTimeModel>()
            {
                new DownloadTimeModel()
                {
                    Description = "Description 1",
                    DLTypeID    = 1
                },
                new DownloadTimeModel()
                {
                    Description = "Description 2",
                    DLTypeID    = 2
                }
            };

            mockDownloadTimesApi
            .GetAllDownloadTimesAsync()
            .ReturnsForAnyArgs(Task.FromResult <IEnumerable <DownloadTimeModel> >(repositoryReturnValue));


            var mockProductTypesApi = Substitute.For <IProductTypesApi>();

            var productTypesRepositoryReturnValue = new List <ProductTypeModel>()
            {
                new ProductTypeModel()
                {
                    Description   = "Description 1",
                    ProductTypeId = 1
                },
                new ProductTypeModel()
                {
                    Description   = "Description 2",
                    ProductTypeId = 2
                }
            };

            mockProductTypesApi
            .GetAllProductTypesAsync()
            .ReturnsForAnyArgs(Task.FromResult <IEnumerable <ProductTypeModel> >(productTypesRepositoryReturnValue));


            var mockManufacturersApi = Substitute.For <IManufacturersApi>();

            var manufRepositoryReturnValue = new List <ManufacturerModel>()
            {
                new ManufacturerModel()
                {
                    Description = "Description 1",
                    MfgCode     = 1
                },
                new ManufacturerModel()
                {
                    Description = "Description 2",
                    MfgCode     = 2
                }
            };

            mockManufacturersApi
            .GetAllManufacturersAsync()
            .ReturnsForAnyArgs(Task.FromResult <IEnumerable <ManufacturerModel> >(manufRepositoryReturnValue));


            var mockInstallTypesApi = Substitute.For <IInstallTypesApi>();


            var installTypesRepositoryReturnValue = new List <InstallTypeModel>()
            {
                new InstallTypeModel()
                {
                    Description = "Description 1",
                    InstallType = 1
                },
                new InstallTypeModel()
                {
                    Description = "Description 2",
                    InstallType = 2
                }
            };

            mockInstallTypesApi
            .GetAllInstallTypesAsync()
            .ReturnsForAnyArgs(Task.FromResult <IEnumerable <InstallTypeModel> >(installTypesRepositoryReturnValue));


            var mockMobileLookupApi = Substitute.For <IMobileLookupApi>();

            var mobileRepositoryReturnValue = new List <MobileLookupModel>()
            {
                new MobileLookupModel()
                {
                    Description = "Description 1",
                    MobileType  = 1
                },
                new MobileLookupModel()
                {
                    Description = "Description 2",
                    MobileType  = 2
                }
            };

            mockMobileLookupApi
            .GetAllMobileLookupsAsync()
            .ReturnsForAnyArgs(Task.FromResult <IEnumerable <MobileLookupModel> >(mobileRepositoryReturnValue));

            var mockBrandApi = Substitute.For <IBrandApi>();

            var brandRepositoryReturnValue = new List <ProductBrandModel>()
            {
                new ProductBrandModel()
                {
                    Description = "Description 1",
                    ID          = 1
                },
                new ProductBrandModel()
                {
                    Description = "Description 2",
                    ID          = 2
                }
            };

            mockBrandApi
            .GetProductBrandsAsync()
            .ReturnsForAnyArgs(Task.FromResult <IEnumerable <ProductBrandModel> >(brandRepositoryReturnValue));

            IDistributedCache   mockCache   = Substitute.For <IDistributedCache>();
            IOptions <Settings> appSettings = Substitute.For <IOptions <Settings> >();

            IStringLocalizer <ProductsController> mockLocalizer = new MockStringLocalizer <ProductsController>();

            IProductApi productApi = new ProductApi(appSettings, mockRepo);
            var         controller = new ProductsController(mockCache,
                                                            productApi,
                                                            mockDownloadTimesApi,
                                                            mockProductTypesApi,
                                                            mockManufacturersApi,
                                                            mockInstallTypesApi,
                                                            mockMobileLookupApi,
                                                            mockBrandApi,
                                                            mockLocalizer);

            //// Act
            var actionResult = await controller.GetLookupsForProducts();

            //// Assert
            var actualRecord = ((ObjectResult)actionResult).Value;

            Assert.Equal(((ProductLookupValuesModel)actualRecord).Brands.Count(), 2);
            Assert.Equal(((ProductLookupValuesModel)actualRecord).DownloadTimes.Count(), 2);
            Assert.Equal(((ProductLookupValuesModel)actualRecord).InstallTypes.Count(), 2);
            Assert.Equal(((ProductLookupValuesModel)actualRecord).Manufacturers.Count(), 2);
            Assert.Equal(((ProductLookupValuesModel)actualRecord).MobileLookups.Count(), 2);
            Assert.Equal(((ProductLookupValuesModel)actualRecord).ProductTypes.Count(), 2);
        }