예제 #1
0
 public UnitOfWork(DbContextOptions options) : base(options)
 {
     Apples  = new AppleRepository(this);
     Bananas = new BananaRepository(this);
     Oranges = new OrangeRepository(this);
     Pears   = new PearRepository(this);
 }
예제 #2
0
        public void AppleRepo_TotalConsumedWhenNoneConsumedIs_Zero()
        {
            // Mock the apple repository
            List <ApplesConsumed> applesConsumed = new List <ApplesConsumed>
            {
                // None consumed for this test, so empty.  Reuse it for each apple below (since it's empty)
                //new ApplesConsumed { AppleId = 1, FujiUserId = 2 }
            };

            List <Apple> apples = new List <Apple>
            {
                new Apple {
                    Id = 1, VarietyName = "MacBook", ScientificName = "Galus Indictus", ApplesConsumeds = applesConsumed
                },
                new Apple {
                    Id = 2, VarietyName = "iPhone", ScientificName = "Poculum Relego", ApplesConsumeds = applesConsumed
                },
                new Apple {
                    Id = 3, VarietyName = "iWatch", ScientificName = "Inflo Fugitivus", ApplesConsumeds = applesConsumed
                }
            };

            Mock <DbSet <Apple> > mockApplesDbSet = GetMockDbSet(apples.AsQueryable());
            //mockApplesDbSet.Setup(a => a.Include("ApplesConsumeds")).Returns(mockApples.Object);

            Mock <FujiDbContext> mockContext = new Mock <FujiDbContext>();

            mockContext.Setup(ctx => ctx.Apples).Returns(mockApplesDbSet.Object);

            // Arrange
            IAppleRepository appleRepo = new AppleRepository(mockContext.Object);

            // Act
            int totalConsumed = appleRepo.GetTotalConsumed(apples.AsQueryable <Apple>());

            // Assert
            Assert.That(totalConsumed, Is.EqualTo(0));
        }
예제 #3
0
        public void AppleRepo_TotalConsumedWith10ApplesConsumedReturns_10()
        {
            // Stub data, including populating navigation properties
            List <Apple> apples = new List <Apple>
            {
                new Apple {
                    Id = 1, VarietyName = "MacBook", ScientificName = "Galus Indictus", ApplesConsumeds = new List <ApplesConsumed> {
                        new ApplesConsumed {
                            AppleId = 1, FujiUserId = 3, Count = 1
                        },
                        new ApplesConsumed {
                            AppleId = 1, FujiUserId = 2, Count = 1
                        },
                        new ApplesConsumed {
                            AppleId = 1, FujiUserId = 3, Count = 1
                        }
                    }
                },
                new Apple {
                    Id = 2, VarietyName = "iPhone", ScientificName = "Poculum Relego", ApplesConsumeds = new List <ApplesConsumed> {
                        new ApplesConsumed {
                            AppleId = 2, FujiUserId = 3, Count = 1
                        },
                        new ApplesConsumed {
                            AppleId = 2, FujiUserId = 2, Count = 1
                        },
                        new ApplesConsumed {
                            AppleId = 2, FujiUserId = 3, Count = 1
                        }
                    }
                },
                new Apple {
                    Id = 3, VarietyName = "iWatch", ScientificName = "Inflo Fugitivus", ApplesConsumeds = new List <ApplesConsumed> {
                        new ApplesConsumed {
                            AppleId = 3, FujiUserId = 5, Count = 1
                        },
                        new ApplesConsumed {
                            AppleId = 3, FujiUserId = 1, Count = 1
                        },
                        new ApplesConsumed {
                            AppleId = 3, FujiUserId = 1, Count = 1
                        },
                        new ApplesConsumed {
                            AppleId = 3, FujiUserId = 4, Count = 1
                        }
                    }
                }
            };

            // Mock the apple repository
            Mock <DbSet <Apple> > mockApples = GetMockDbSet(apples.AsQueryable());
            //mockApples.Setup(a => a.Include("ApplesConsumeds")).Returns(mockApples.Object);   // cannot mock extension methods
            // See enabling Lazy loading so we don't have to use Include: https://docs.microsoft.com/en-us/ef/core/querying/related-data/lazy

            Mock <FujiDbContext> mockContext = new Mock <FujiDbContext>();

            mockContext.Setup(ctx => ctx.Apples).Returns(mockApples.Object);

            // Arrange
            IAppleRepository appleRepo = new AppleRepository(mockContext.Object);

            // Act
            int totalConsumed = appleRepo.GetTotalConsumed(apples.AsQueryable <Apple>());

            // Assert
            Assert.That(totalConsumed, Is.EqualTo(10));
        }