예제 #1
0
        public void Test_CreateCode_With_Length()
        {
            var generate = new GeneralTreeCodeGenerate(new GeneralTreeCodeGenerateConfiguration()
            {
                CodeLength = 3
            });

            generate.CreateCode().ShouldBe(null);
            generate.CreateCode(42).ShouldBe("042");
            generate.CreateCode(1, 2).ShouldBe("001.002");
            generate.CreateCode(1, 2, 3).ShouldBe("001.002.003");
        }
 public void Test_CreateCode()
 {
     GeneralTreeCodeGenerate.CreateCode().ShouldBe(null);
     GeneralTreeCodeGenerate.CreateCode(42).ShouldBe("00042");
     GeneralTreeCodeGenerate.CreateCode(1, 2).ShouldBe("00001.00002");
     GeneralTreeCodeGenerate.CreateCode(1, 2, 3).ShouldBe("00001.00002.00003");
 }
        public async Task BulkCreate_Test()
        {
            //Act
            var beijing = new Region2
            {
                Name = "beijing"
            };

            var xicheng = new Region2
            {
                Name     = "xicheng",
                ParentId = beijing.Id
            };

            var dongcheng = new Region2
            {
                Name     = "dongcheng",
                ParentId = beijing.Id
            };

            beijing.Children = new List <Region2>
            {
                xicheng,
                dongcheng
            };

            await _generalRegion2TreeManager.BulkCreateAsync(beijing);

            //Assert
            var bj = GetRegion("beijing");

            bj.ShouldNotBeNull();
            bj.Name.ShouldBe("beijing");
            bj.FullName.ShouldBe("beijing");
            bj.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1));
            bj.Level.ShouldBe(1);
            bj.ParentId.ShouldBeNull();

            var xc = GetRegion("xicheng");

            xc.ShouldNotBeNull();
            xc.Name.ShouldBe("xicheng");
            xc.FullName.ShouldBe("beijing-xicheng");
            xc.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 1));
            xc.Level.ShouldBe(beijing.Level + 1);
            xc.ParentId.ShouldBe(beijing.Id);

            var dc = GetRegion("dongcheng");

            dc.ShouldNotBeNull();
            dc.Name.ShouldBe("dongcheng");
            dc.FullName.ShouldBe("beijing-dongcheng");
            dc.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2));
            dc.Level.ShouldBe(beijing.Level + 1);
            dc.ParentId.ShouldBe(beijing.Id);
        }
        public async Task Create_Test()
        {
            //Act
            var beijing = new Region2
            {
                Name = "beijing"
            };
            await _generalRegion2TreeManager.CreateAsync(beijing);

            //Assert
            var xc = GetRegion("beijing");

            xc.ShouldNotBeNull();
            xc.Name.ShouldBe("beijing");
            xc.FullName.ShouldBe("beijing");
            xc.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1));
            xc.Level.ShouldBe(1);
            xc.ParentId.ShouldBeNull();
        }
        public async Task Create_Children_Test()
        {
            //Act
            var beijing = new Region
            {
                Name = "beijing"
            };
            await _generalRegionTreeManager.CreateAsync(beijing);

            var xicheng = new Region
            {
                Name     = "xicheng",
                ParentId = beijing.Id
            };
            await _generalRegionTreeManager.CreateAsync(xicheng);

            var dongcheng = new Region
            {
                Name     = "dongcheng",
                ParentId = beijing.Id
            };
            await _generalRegionTreeManager.CreateAsync(dongcheng);

            //Assert
            var xc = GetRegion("xicheng");

            xc.ShouldNotBeNull();
            xc.Name.ShouldBe("xicheng");
            xc.FullName.ShouldBe("beijing-xicheng");
            xc.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 1));
            xc.Level.ShouldBe(beijing.Level + 1);
            xc.ParentId.ShouldBe(beijing.Id);

            var dc = GetRegion("dongcheng");

            dc.ShouldNotBeNull();
            dc.Name.ShouldBe("dongcheng");
            dc.FullName.ShouldBe("beijing-dongcheng");
            dc.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2));
            dc.Level.ShouldBe(beijing.Level + 1);
            dc.ParentId.ShouldBe(beijing.Id);
        }
        public async Task BulkCreate_ExistTree_Test()
        {
            //Arrange
            var hebei = new Region2
            {
                Name     = "hebei",
                FullName = "hebei",
                Code     = "00001",
                Level    = 1
            };

            await UsingDbContextAsync(async context =>
            {
                context.Region2.Add(hebei);
                await context.SaveChangesAsync();

                context.Region2.Add(new Region2
                {
                    Name     = "shijiazhuang",
                    FullName = "hebei-shijiazhuang",
                    Code     = "00001.00001",
                    Level    = 2,
                    ParentId = hebei.Id
                });
                await context.SaveChangesAsync();
            });

            var chengde = new Region2
            {
                Name     = "chengde",
                ParentId = hebei.Id,
                Children = new List <Region2>
                {
                    new Region2
                    {
                        Name = "shuangqiaoqu"
                    },
                    new Region2
                    {
                        Name = "shuangluanqu"
                    }
                }
            };

            await _generalRegion2TreeManager.BulkCreateAsync(chengde);

            //Assert
            chengde = GetRegion("chengde");
            chengde.ShouldNotBeNull();
            chengde.Name.ShouldBe("chengde");
            chengde.FullName.ShouldBe("hebei-chengde");
            chengde.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2));
            chengde.Level.ShouldBe(2);
            chengde.ParentId.ShouldBe(hebei.Id);

            var shuangqiaoqu = GetRegion("shuangqiaoqu");

            shuangqiaoqu.ShouldNotBeNull();
            shuangqiaoqu.Name.ShouldBe("shuangqiaoqu");
            shuangqiaoqu.FullName.ShouldBe("hebei-chengde-shuangqiaoqu");
            shuangqiaoqu.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2, 1));
            shuangqiaoqu.Level.ShouldBe(chengde.Level + 1);
            shuangqiaoqu.ParentId.ShouldBe(chengde.Id);

            var shuangluanqu = GetRegion("shuangluanqu");

            shuangluanqu.ShouldNotBeNull();
            shuangluanqu.Name.ShouldBe("shuangluanqu");
            shuangluanqu.FullName.ShouldBe("hebei-chengde-shuangluanqu");
            shuangluanqu.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2, 2));
            shuangluanqu.Level.ShouldBe(chengde.Level + 1);
            shuangluanqu.ParentId.ShouldBe(chengde.Id);
        }
        public async Task FillUp_Test()
        {
            //Act
            var beijing = new Region2
            {
                Name = "beijing"
            };

            var xicheng = new Region2
            {
                Name     = "xicheng",
                ParentId = beijing.Id
            };

            var dongcheng = new Region2
            {
                Name     = "dongcheng",
                ParentId = beijing.Id
            };

            var balizhuang = new Region2
            {
                Name     = "balizhuang",
                ParentId = dongcheng.Id
            };

            dongcheng.Children = new List <Region2>
            {
                balizhuang
            };

            beijing.Children = new List <Region2>
            {
                xicheng,
                dongcheng
            };

            await _generalRegion2TreeManager.FillUpAsync(beijing);

            //Assert
            beijing.FullName.ShouldBe("beijing");
            beijing.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1));
            beijing.Level.ShouldBe(1);
            beijing.ParentId.ShouldBeNull();
            beijing.Children.Count.ShouldBe(2);

            xicheng.FullName.ShouldBe("beijing-xicheng");
            xicheng.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 1));
            xicheng.Level.ShouldBe(beijing.Level + 1);
            xicheng.ParentId.ShouldBe(beijing.Id);

            dongcheng.FullName.ShouldBe("beijing-dongcheng");
            dongcheng.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2));
            dongcheng.Level.ShouldBe(beijing.Level + 1);
            dongcheng.ParentId.ShouldBe(beijing.Id);

            balizhuang.FullName.ShouldBe("beijing-dongcheng-balizhuang");
            balizhuang.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2, 1));
            balizhuang.Level.ShouldBe(dongcheng.Level + 1);
            balizhuang.ParentId.ShouldBe(dongcheng.Id);
        }
        public async Task FillUp_Test()
        {
            //Act
            var beijing = new Region
            {
                Name = "beijing"
            };

            var xicheng = new Region
            {
                Name     = "xicheng",
                ParentId = beijing.Id
            };

            var dongcheng = new Region
            {
                Name     = "dongcheng",
                ParentId = beijing.Id
            };

            var balizhuang = new Region
            {
                Name     = "balizhuang",
                ParentId = dongcheng.Id
            };

            dongcheng.Children = new List <Region>
            {
                balizhuang
            };

            beijing.Children = new List <Region>
            {
                xicheng,
                dongcheng
            };

            var uowManager = LocalIocManager.Resolve <IUnitOfWorkManager>();

            using (var uow = uowManager.Begin())
            {
                await _generalRegionTreeManager.FillUpAsync(beijing);

                uow.Complete();
            }

            //Assert
            beijing.FullName.ShouldBe("beijing");
            beijing.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1));
            beijing.Level.ShouldBe(1);
            beijing.ParentId.ShouldBeNull();
            beijing.Children.Count.ShouldBe(2);

            xicheng.FullName.ShouldBe("beijing-xicheng");
            xicheng.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 1));
            xicheng.Level.ShouldBe(beijing.Level + 1);
            xicheng.ParentId.ShouldBe(beijing.Id);

            dongcheng.FullName.ShouldBe("beijing-dongcheng");
            dongcheng.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2));
            dongcheng.Level.ShouldBe(beijing.Level + 1);
            dongcheng.ParentId.ShouldBe(beijing.Id);

            balizhuang.FullName.ShouldBe("beijing-dongcheng-balizhuang");
            balizhuang.Code.ShouldBe(GeneralTreeCodeGenerate.CreateCode(1, 2, 1));
            balizhuang.Level.ShouldBe(dongcheng.Level + 1);
            balizhuang.ParentId.ShouldBe(dongcheng.Id);
        }