private static void SeedRatings(OnlineFishShopDbContext context)
        {
            if (context.Ratings.Any())
            {
                return;
            }

            var    currentDirectory = Path.GetFullPath(@"..\OnlineFishShop.Data\Import\Json\RatingsMock.json");
            string json             = File.ReadAllText(currentDirectory);
            var    ratingsToSeed    = JsonConvert.DeserializeObject <List <Rating> >(json);

            Random r = new Random();

            var products = context.Products.ToList();
            var user     = context.Users.First(); //sequence users contains no elements

            foreach (var rating in ratingsToSeed)
            {
                rating.Product = products[r.Next(1, 25)];
                rating.User    = user;
            }

            context.Ratings.AddRange(ratingsToSeed);
            context.SaveChanges();
        }
        private static void SeedComments(OnlineFishShopDbContext context)
        {
            if (context.Comments.Any())
            {
                return;
            }

            var    currentDirectory = Path.GetFullPath(@"..\OnlineFishShop.Data\Import\Json\CommentsMock.json");
            string json             = File.ReadAllText(currentDirectory);

            var dateTimeFormat    = "dd/mm/yyyy";
            var dateTimeConverter = new IsoDateTimeConverter {
                DateTimeFormat = dateTimeFormat
            };

            var commentsToSeed = JsonConvert.DeserializeObject <List <Comment> >(json, dateTimeConverter);

            Random r = new Random();

            var products = context.Products.ToList();
            var user     = context.Users.First();

            //attach product and user to comments
            foreach (var comment in commentsToSeed)
            {
                comment.Product = products[r.Next(1, 25)];
                comment.User    = user;
            }

            context.AddRange(commentsToSeed);
            context.SaveChanges();
        }
예제 #3
0
        public void Add_AddSingleProduct(string productName)
        {
            //Arrange
            var options = new DbContextOptionsBuilder <OnlineFishShopDbContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_database")
                          .Options;

            Product product = new Product();

            product.Name = productName;

            // Act
            using (var context = new OnlineFishShopDbContext(options))
            {
                context.Database.EnsureDeleted();
                var service = new GenericDataService <Product>(context);
                service.Add(product);
            }

            // Assert
            using (var context = new OnlineFishShopDbContext(options))
            {
                Assert.Equal(1, context.Products.Count());
                Assert.Equal(productName, context.Products.Single().Name);
            }
        }
        private static void SeedDeliveryOptions(OnlineFishShopDbContext context)
        {
            if (context.DeliveryOptions.Any())
            {
                return;
            }

            var    currentDirectory = Path.GetFullPath(@"..\OnlineFishShop.Data\Import\Json\DeliveryOptionsMock.json");
            string json             = File.ReadAllText(currentDirectory);
            var    optionsToSeed    = JsonConvert.DeserializeObject <List <DeliveryOption> >(json);

            context.DeliveryOptions.AddRange(optionsToSeed);
            context.SaveChanges();
        }
예제 #5
0
        public void Add_AddMultipleProductsAtOnce()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <OnlineFishShopDbContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_database")
                          .Options;

            Product product1 = new Product();

            product1.Name = "First";
            Product product2 = new Product();

            product2.Name = "Second";
            Product product3 = new Product();

            product3.Name = "Third";
            List <Product> all = new List <Product>();

            all.Add(product1);
            all.Add(product2);
            all.Add(product3);

            // Act
            using (var context = new OnlineFishShopDbContext(options))
            {
                context.Database.EnsureDeleted();
                var service = new GenericDataService <Product>(context);
                service.Add(all.ToArray());
            }

            // Assert
            using (var context = new OnlineFishShopDbContext(options))
            {
                Product first  = context.Products.Where(p => p.Name == "First").FirstOrDefault();
                Product second = context.Products.Where(p => p.Name == "Second").FirstOrDefault();
                Product third  = context.Products.Where(p => p.Name == "Third").FirstOrDefault();


                Assert.Equal(3, context.Products.Count());
                Assert.NotNull(first);
                Assert.NotNull(second);
                Assert.NotNull(third);
            }
        }
예제 #6
0
        public void GetAllProducts()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <OnlineFishShopDbContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_database")
                          .Options;

            Product product1 = new Product();

            product1.Name = "First";
            Product product2 = new Product();

            product2.Name = "Second";
            Product product3 = new Product();

            product3.Name = "Third";


            // Act
            using (var context = new OnlineFishShopDbContext(options))
            {
                context.Database.EnsureDeleted();
                var service = new GenericDataService <Product>(context);
                service.Add(product1);
                service.Add(product2);
                service.Add(product3);
            }

            // Assert
            using (var context = new OnlineFishShopDbContext(options))
            {
                var service = new GenericDataService <Product>(context);

                var allProds = service.GetAllAsync().Result;

                Assert.Equal(3, allProds.Count);
                Assert.NotNull(allProds.Find(p => p.Name == "First"));
                Assert.NotNull(allProds.Find(p => p.Name == "Second"));
                Assert.NotNull(allProds.Find(p => p.Name == "Third"));
            }
        }
        private static void SeedProductsAndCategories(OnlineFishShopDbContext context, Category[] categoriesToSeed,
                                                      Product[] productsToSeed)
        {
            if (!context.Products.Any())
            {
                Random r = new Random();
                List <CategoryProduct> categoryProducts = new List <CategoryProduct>();

                foreach (var product in productsToSeed)
                {
                    categoryProducts.Add(new CategoryProduct()
                    {
                        Product  = product,
                        Category = categoriesToSeed[r.Next(0, categoriesToSeed.Length)]
                    });
                }

                context.AddRange(categoryProducts);
                context.SaveChanges();
            }
        }
        public static void EnsureSeedData(this OnlineFishShopDbContext context)
        {
            if (context.Database.GetPendingMigrations().Any())
            {
                return;
            }

            //categories to list
            var categoriesToSeed = new Category[]
            {
                new Category()
                {
                    Name = "Fish"
                },
                new Category()
                {
                    Name = "Roe"
                },
                new Category()
                {
                    Name = "Shellfish"
                },
                new Category()
                {
                    Name = "Tunicates"
                }
            };

            //products to list
            var    currentDirectory = Path.GetFullPath(@"..\OnlineFishShop.Data\Import\Json\ProductsMock.json");
            string json             = File.ReadAllText(currentDirectory);
            var    productsToSeed   = JsonConvert.DeserializeObject <Product[]>(json);

            //seeding products and categories
            SeedProductsAndCategories(context, categoriesToSeed, productsToSeed);
            SeedRatings(context);
            SeedComments(context);
            SeedDeliveryOptions(context);
            SeedPaymentOptions(context);
        }
예제 #9
0
        public void GetAllWithName()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <OnlineFishShopDbContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_database")
                          .Options;

            Product product1 = new Product();

            product1.Name = "SomeName";
            Product product2 = new Product();

            product2.Name = "SomeName";
            Product product3 = new Product();

            product3.Name = "AName";


            // Act
            using (var context = new OnlineFishShopDbContext(options))
            {
                context.Database.EnsureDeleted();
                var service = new GenericDataService <Product>(context);
                service.Add(product1);
                service.Add(product2);
                service.Add(product3);
            }

            // Assert
            using (var context = new OnlineFishShopDbContext(options))
            {
                var service = new GenericDataService <Product>(context);

                var getWithName = service.GetListAsync(p => p.Name == "SomeName").Result;

                Assert.Equal(2, getWithName.Count);
                Assert.True(getWithName.First().Name == "SomeName");
            }
        }
예제 #10
0
 public GenericDataService(OnlineFishShopDbContext dbContext)
 {
     this._dbSet  = dbContext.Set <T>();
     this.context = dbContext;
 }