Exemple #1
0
        public void TestFindAsync()
        {
            var repository = new InMemoryProductsRepository();
            var product    = repository.FindAsync(2).Result;

            Assert.NotNull(product);
            Assert.That(product.ID, Is.EqualTo(2));
        }
Exemple #2
0
        public void TestGetAll()
        {
            var repository = new InMemoryProductsRepository();
            var products   = repository.GetAllAsync().Result;

            Assert.NotNull(products);
            Assert.That(products.Count(), Is.GreaterThan(0));
            Assert.That(products.First().Name, Is.EqualTo("XPS15"));
        }
Exemple #3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            // registra repository in memory per le categorie
            services.AddSingleton <ICategoriesRepository, InMemoryCategoriesRepository>(sp =>
            {
                var categoriesRepo = new InMemoryCategoriesRepository();
                categoriesRepo.Add(new Categoria(1, "Networking")); // prodotti presenti nel negozio locale
                categoriesRepo.Add(new Categoria(20, "Game"));      // prodotti da richiedere al fornitore
                return(categoriesRepo);
            });

            // registra repository in memory per i prodotti
            services.AddSingleton <IProductsRepository, InMemoryProductsRepository>(sp =>
            {
                // aggiunge alcuni prodotti nel negozio locale
                var productsRepo       = new InMemoryProductsRepository();
                var categoriesRepo     = sp.GetService <ICategoriesRepository>();
                var networkingCategory = categoriesRepo.GetByDescription("Networking").Result;
                var router             = new Prodotto(1, "Router", networkingCategory);
                var accessPoint        = new Prodotto(2, "Access point", networkingCategory);
                var switchDevice       = new Prodotto(3, "Switch", networkingCategory);
                productsRepo.Add(router);
                productsRepo.Add(accessPoint);
                productsRepo.Add(switchDevice);
                return(productsRepo);
            });


            services.AddSingleton <IProductsRetrieverFactory, ProductsRetrieverCustomFactory>(sp =>
            {
                // registra un factory method per definire come verranno ottenuti i prodotti
                return(new ProductsRetrieverCustomFactory(category =>
                {
                    if (category.Id <= 10)
                    {
                        return new LocalStoreProductsRetriever(category, sp.GetService <IProductsRepository>());
                    }
                    else
                    {
                        return new RemoteStoreProductsRetriever("https://localhost:5011/", "catalogofornitore", category);
                    }
                }));
            });


            // registra un servizio per la gestione custom degli errori della pipeline
            services.AddTransient <IErrorHandlerService, CustomErrorHandlerService>();
        }
Exemple #4
0
        private static void CreateInMemoryProviders(
            out IProductsProvider productsProvider,
            out IReservationsProvider reservationsProvider,
            out IStocksProvider stocksProvider)
        {
            // create in-memory databases
            var productsRepository     = new InMemoryProductsRepository();
            var stocksRepository       = new InMemoryStocksRepository();
            var reservationsRepository = new InMemoryReservationsRepository();

            productsProvider     = new InMemoryProductsProvider(productsRepository);
            stocksProvider       = new InMemoryStocksProvider(stocksRepository);
            reservationsProvider = new InMemoryReservationProvider(reservationsRepository);
        }
        public void GetAllProductsFromRepository()
        {
            Products products1 = GetProductsName(1, 1, "Test produkt", "Beskrivelse", 22, 22, 2, 1, "billede", "billede text");

            InMemoryProductsRepository proRepository = new InMemoryProductsRepository();

            proRepository.Add(products1);

            var controller = GetProductsController(proRepository);

            var result = controller.Index();

            var datamodel = ((ViewResult)result).ViewData.Model as IList <Products>;


            CollectionAssert.Contains(datamodel.ToList(), products1);
        }
Exemple #6
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services
            .AddAuthentication("BasicAuthentication")
            .AddScheme <AuthenticationSchemeOptions, BasicAuthenticationHandler>("BasicAuthentication", null);

            // registra un semplice sistema di controllo delle credenziali utente ricevute
            // che in questo caso convalida qualunque username/password
            // Un sistema più evoluto si appoggerebbe ad un repository di utenti
            services.AddScoped <IUserAuthenticatorService, EveryUserAuthenticatorService>();

            // registra repository in memory per le categorie
            services.AddSingleton <ICategoriesRepository, InMemoryCategoriesRepository>(sp =>
            {
                var categoriesRepo = new InMemoryCategoriesRepository();
                categoriesRepo.Add(new Categoria(20, "Game")); // categoria di prodotti gestiti dal fornitore
                return(categoriesRepo);
            });

            // registra repository in memory per i prodotti
            services.AddSingleton <IProductsRepository, InMemoryProductsRepository>(sp =>
            {
                // aggiunge alcuni prodotti del fornitore
                var productsRepo       = new InMemoryProductsRepository();
                var categoriesRepo     = sp.GetService <ICategoriesRepository>();
                var networkingCategory = categoriesRepo.GetByDescription("Game").Result;
                productsRepo.Add(new Prodotto(101, "Playstation", networkingCategory));
                productsRepo.Add(new Prodotto(102, "XBox", networkingCategory));
                productsRepo.Add(new Prodotto(103, "Nintendo", networkingCategory));
                return(productsRepo);
            });

            services.AddSingleton <IProductsRetrieverFactory, ProductsRetrieverCustomFactory>(sp =>
            {
                // registra una factory per il retriever dei prodotti prelevandoli solo localmente
                return(new ProductsRetrieverCustomFactory(category =>
                                                          new LocalStoreProductsRetriever(category, sp.GetService <IProductsRepository>())));
            });

            // registra un servizio per la gestione custom degli errori della pipeline
            services.AddTransient <IErrorHandlerService, CustomErrorHandlerService>();
        }
Exemple #7
0
        public void TestAddNewProduct()
        {
            var repository = new InMemoryProductsRepository();
            var product    = new Product()
            {
                ID   = 0,
                Name = "My laptop"
            };

            repository.Add(product);

            Assert.That(repository.NewProductsToAdd.Count(), Is.EqualTo(1));

            repository.SaveChangesAsync();
            Assert.That(repository.NewProductsToAdd.Count(), Is.EqualTo(0));
            Assert.That(InMemoryProductsRepository.Products.Count(), Is.EqualTo(3));

            Assert.That(product.ID, Is.GreaterThan(0));
        }
 public async Task First_id_should_be_set_to_1()
 {
     _repository = new InMemoryProductsRepository();
     (await _repository.CreateAsync(new CreateProductRepositoryModel {
     })).Should().Be(1);
 }