示例#1
0
        public void Paging2Test()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var repository = repositoryContext.GetRepository <int, Customer>();
                var customers  = Customer.CreateMany(1000);
                foreach (var customer in customers)
                {
                    repository.Add(customer);
                }

                var selectedCustomers = customers.Where(x => x.Id > 20000000).OrderByDescending(x => x.Email);
                var idList            = selectedCustomers.Select(x => x.Id).Skip(15).Take(15).ToList();
                var totalRecords      = selectedCustomers.Count();
                var totalPages        = (totalRecords + 14) / 15;

                var pagedResult = repository.FindAll(c => c.Id > 20000000,
                                                     new SortSpecification <int, Customer> {
                    { x => x.Email, SortOrder.Descending }
                }, 2, 15);

                Assert.Equal(totalRecords, pagedResult.TotalRecords);
                Assert.Equal(totalPages, pagedResult.TotalPages);
                Assert.Equal(2, pagedResult.PageNumber);
                Assert.Equal(15, pagedResult.PageSize);
                Assert.True(CompareIds(idList, pagedResult.Select(x => x.Id).ToList()));
            }
        }
示例#2
0
        public void FindAllWithSortTest()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var repository = repositoryContext.GetRepository <int, Customer>();
                var customers  = Customer.CreateMany(500);

                foreach (var cust in customers)
                {
                    repository.Add(cust);
                }
                repositoryContext.Commit();

                var sorted = customers.OrderBy(x => x.Email).OrderByDescending(x => x.Name).ToList();

                var result = repository.FindAll(x => true, new SortSpecification <int, Customer> {
                    { _ => _.Email, SortOrder.Ascending }, { _ => _.Name, SortOrder.Descending }
                }).ToList();

                bool match = true;
                var  total = sorted.Count();
                for (var i = 0; i < total; i++)
                {
                    if (sorted[i].Email != result[i].Email || sorted[i].Name != result[i].Name)
                    {
                        match = false;
                        break;
                    }
                }

                Assert.True(match);
            }
        }
示例#3
0
        public void TestMethod1()
        {
            var             unitOfWork     = new MongoUnitOfWork();
            var             context        = new MongoRepositoryContext();
            IUserRepository userRepository = new UserRepository(context);

            userRepository.Create(new User()
            {
                UserName      = "******",
                NickName      = "坏坏男孩",
                RealName      = "吴丹",
                PhoneNum      = "18916765826",
                Email         = "*****@*****.**",
                Status        = UserStatus.Enabled,
                PassWord      = "******",
                RegisterTime  = DateTime.Now,
                LastLogonTime = DateTime.Now
            });
            userRepository.Create(new User()
            {
                UserName      = "******",
                NickName      = "坏坏男孩1",
                RealName      = "吴丹1",
                PhoneNum      = "18916765000",
                Email         = "*****@*****.**",
                Status        = UserStatus.Disabled,
                PassWord      = "******",
                RegisterTime  = DateTime.Now,
                LastLogonTime = DateTime.Now
            });

            var result = context.Commit();
            //var result = unitOfWork.Commit();
        }
示例#4
0
        public void Save2AggregateRootsTest()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var customers  = Customer.CreateMany(2);
                var repository = repositoryContext.GetRepository <int, Customer>();
                customers.ToList().ForEach(customer => repository.Add(customer));
                repositoryContext.Commit();

                var customersCount = repository.FindAll().Count();

                Assert.Equal(2, customersCount);
            }
        }
示例#5
0
        public void SaveAggregateRootTest()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var customer   = Customer.CreateOne(1, "Sunny Chen", "*****@*****.**");
                var repository = repositoryContext.GetRepository <int, Customer>();
                repository.Add(customer);
                repositoryContext.Commit();

                var customersCount = repository.FindAll().Count();

                Assert.Equal(1, customersCount);
            }
        }
示例#6
0
        public void FindAllTest()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var repository = repositoryContext.GetRepository <int, Customer>();
                var customers  = Customer.CreateMany(1000);
                foreach (var cust in customers)
                {
                    repository.Add(cust);
                }
                repositoryContext.Commit();

                var result = repository.FindAll();

                Assert.Equal(1000, result.Count());
            }
        }
示例#7
0
        public void UpdateByKeyTest()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var customer   = Customer.CreateOne(1, "Sunny Chen", "*****@*****.**");
                var repository = repositoryContext.GetRepository <int, Customer>();
                repository.Add(customer);
                repositoryContext.Commit();

                customer.Email = "*****@*****.**";
                repository.UpdateByKey(1, customer);
                repositoryContext.Commit();

                var updatedCustomer = repository.FindByKey(1);

                Assert.Equal("*****@*****.**", updatedCustomer.Email);
            }
        }
示例#8
0
        public void FindAllWithPredicateTest()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var repository = repositoryContext.GetRepository <int, Customer>();
                var customers  = Customer.CreateMany(500);

                foreach (var cust in customers)
                {
                    repository.Add(cust);
                }
                repositoryContext.Commit();

                var subset = customers.Where(x => x.Id > 1000000);

                var result = repository.FindAll(x => x.Id > 1000000);

                Assert.Equal(subset.Count(), result.Count());
            }
        }
示例#9
0
        public void AddTest()
        {
            // Arrange
            var cache = new List <Customer>();

            this.fixture.MongoCollection.Reset();
            this.fixture.MongoCollection.Setup(x => x.InsertOne(It.IsAny <Customer>(),
                                                                It.IsAny <InsertOneOptions>(), It.IsAny <CancellationToken>()))
            .Callback <Customer, InsertOneOptions, CancellationToken>((t, u, v) => cache.Add(t));
            // Act
            var mockMongoRepositoryContext = new MongoRepositoryContext(this.fixture.MongoClient.Object, "mockDatabase");
            var mongoRepository            = mockMongoRepositoryContext.GetRepository <int, Customer>();

            mongoRepository.Add(new Customer {
                Id = 10
            });

            // Assert
            Assert.Single(cache);
            Assert.Equal(10, cache[0].Id);
        }
示例#10
0
        public void PagingTest()
        {
            using (var repositoryContext = new MongoRepositoryContext(this.fixture.Settings))
            {
                var repository = repositoryContext.GetRepository <int, Customer>();
                var customers  = Customer.CreateMany(21);
                foreach (var customer in customers)
                {
                    repository.Add(customer);
                }

                var idList = customers.OrderBy(x => x.Email).Select(x => x.Id).Skip(5).Take(5).ToList();

                var pagedResult = repository.FindAll(new SortSpecification <int, Customer> {
                    { x => x.Email, SortOrder.Ascending }
                }, 2, 5);

                Assert.Equal(21, pagedResult.TotalRecords);
                Assert.Equal(5, pagedResult.TotalPages);
                Assert.Equal(2, pagedResult.PageNumber);
                Assert.Equal(5, pagedResult.PageSize);
                Assert.True(CompareIds(idList, pagedResult.Select(x => x.Id).ToList()));
            }
        }