Esempio n. 1
0
        public async Task GetEntitySymbolTest()
        {
            RuntimeContext.Init(new Core.Tests.MockRuntimeContext(), 10410);

            var session = new MockDeveloperSession();
            var ctx     = new DesignHub(session);
            var apps    = new List <ApplicationModel>()
            {
                Core.Tests.TestHelper.SysAppModel
            };
            var models = new List <ModelBase>
            {
                Core.Tests.TestHelper.EmploeeModel,
                Core.Tests.TestHelper.VehicleStateModel,
                Core.Tests.TestHelper.OrgUnitModel,
                Core.Tests.TestHelper.AdminPermissionModel,
                Core.Tests.TestHelper.DeveloperPermissionModel
            };
            await ctx.DesignTree.LoadForTest(apps, models);

            var symbol = await ctx.TypeSystem.GetEntityIndexSymbolAsync("sys", "Emploee", "UI_Account_Password");

            Assert.NotNull(symbol);
            symbol = await ctx.TypeSystem.GetModelSymbolAsync(ModelType.Entity, "sys", "Emploee");

            Assert.NotNull(symbol);
        }
Esempio n. 2
0
        public async Task GenServiceDeclareTest()
        {
            RuntimeContext.Init(new Core.Tests.MockRuntimeContext(), 10410);

            var session = new MockDeveloperSession();
            var ctx     = new DesignHub(session);
            var apps    = new List <ApplicationModel>()
            {
                Core.Tests.TestHelper.SysAppModel
            };
            var models = new List <ModelBase>
            {
                Core.Tests.TestHelper.EmploeeModel,
                Core.Tests.TestHelper.VehicleStateModel,
                Core.Tests.TestHelper.OrgUnitModel
            };
            await ctx.DesignTree.LoadForTest(apps, models);

            //模拟添加, 参照NewServiceModel Handler
            var rootNode   = ctx.DesignTree.FindModelRootNode(Consts.SYS_APP_ID, ModelType.Service);
            var parentNode = rootNode;
            var modelId    = (ulong)Consts.SYS_APP_ID << 32;

            modelId |= (ulong)ModelType.Service << 24;
            modelId |= (ulong)1 << 3;
            modelId |= (ulong)ModelLayer.DEV << 1;
            var model = new ServiceModel(modelId, "HelloService");
            var node  = new ModelNode(model, ctx);

            parentNode.Nodes.Add(node);
            rootNode.AddModelIndex(node);
            node.CheckoutInfo = new CheckoutInfo(node.NodeType, node.CheckoutInfoTargetID, model.Version,
                                                 ctx.Session.Name, ctx.Session.LeafOrgUnitID);

            var sourceCode = Resources.LoadStringResource("Resources.Code.HelloService.cs");
            await ctx.TypeSystem.CreateModelDocumentAsync(node, sourceCode);

            //生成服务声明代码
            var appName       = node.AppNode.Model.Name;
            var doc           = ctx.TypeSystem.Workspace.CurrentSolution.GetDocument(node.RoslynDocumentId);
            var semanticModel = await doc.GetSemanticModelAsync();

            //TODO: 检测虚拟代码错误
            var codegen = new ServiceDeclareGenerator(ctx, appName, semanticModel, (ServiceModel)node.Model);

            codegen.Visit(semanticModel.SyntaxTree.GetRoot());
            var declare = codegen.GetDeclare();

            Console.WriteLine(declare);
        }
Esempio n. 3
0
        public async Task GetEnumSymbolTest()
        {
            RuntimeContext.Init(new Core.Tests.MockRuntimeContext(), 10410);

            var session = new MockDeveloperSession();
            var ctx     = new DesignHub(session);
            var apps    = new List <ApplicationModel>()
            {
                Core.Tests.TestHelper.SysAppModel
            };
            var models = new List <ModelBase>
            {
                Core.Tests.TestHelper.OrderStatusModel,
            };
            await ctx.DesignTree.LoadForTest(apps, models);

            var symbol = await ctx.TypeSystem.GetEnumItemSymbolAsync("sys", "OrderStatus", "Paid");

            Assert.NotNull(symbol);
            Assert.Equal("sys.Enums.OrderStatus.Paid", symbol.ToString());
        }
Esempio n. 4
0
        public async Task GenServiceCodeTest()
        {
            var mockRuntimeCtx = new Core.Tests.MockRuntimeContext();

            mockRuntimeCtx.AddModel(Core.Tests.TestHelper.CityModel);
            mockRuntimeCtx.AddModel(Core.Tests.TestHelper.CustomerModel);
            mockRuntimeCtx.AddModel(Core.Tests.TestHelper.OrderModel);
            RuntimeContext.Init(mockRuntimeCtx, 10410);

            var session = new MockDeveloperSession();
            var ctx     = new DesignHub(session);
            var apps    = new List <ApplicationModel>()
            {
                Core.Tests.TestHelper.SysAppModel
            };
            var models = new List <ModelBase>
            {
                Core.Tests.TestHelper.EmploeeModel,
                Core.Tests.TestHelper.VehicleStateModel,
                Core.Tests.TestHelper.OrgUnitModel,
                Core.Tests.TestHelper.CityModel,
                Core.Tests.TestHelper.CustomerModel,
                Core.Tests.TestHelper.OrderModel,
                Core.Tests.TestHelper.AdminPermissionModel,
                Core.Tests.TestHelper.DeveloperPermissionModel
            };
            await ctx.DesignTree.LoadForTest(apps, models);

            //模拟添加存储模型,参照NewDataStore Handler
            var storeNode = ctx.DesignTree.StoreRootNode.AddModel(Core.Tests.TestHelper.SqlStoreModel, ctx);

            ctx.TypeSystem.CreateStoreDocument(storeNode);

            //模拟添加服务模型, 参照NewServiceModel Handler
            var serviceRootNode = ctx.DesignTree.FindModelRootNode(Consts.SYS_APP_ID, ModelType.Service);
            var parentNode      = serviceRootNode;

            //测试被调用的服务
            var modelId = (ulong)Consts.SYS_APP_ID << 32;

            modelId |= (ulong)ModelType.Service << 24;
            modelId |= (ulong)1 << 3;
            modelId |= (ulong)ModelLayer.DEV << 1;
            var model = new ServiceModel(modelId, "TestService");
            var node  = new ModelNode(model, ctx);

            parentNode.Nodes.Add(node);
            serviceRootNode.AddModelIndex(node);
            node.CheckoutInfo = new CheckoutInfo(node.NodeType, node.CheckoutInfoTargetID, model.Version,
                                                 ctx.Session.Name, ctx.Session.LeafOrgUnitID);
            var souceCode = Resources.LoadStringResource("Resources.Code.TestService.cs");
            await ctx.TypeSystem.CreateModelDocumentAsync(node, souceCode);

            //测试生成用的服务
            var modelId1 = (ulong)Consts.SYS_APP_ID << 32;

            modelId1 |= (ulong)ModelType.Service << 24;
            modelId1 |= (ulong)1 << 5;
            modelId1 |= (ulong)ModelLayer.DEV << 1;
            var model1 = new ServiceModel(modelId1, "HelloService");
            var node1  = new ModelNode(model1, ctx);

            parentNode.Nodes.Add(node1);
            serviceRootNode.AddModelIndex(node1);
            node1.CheckoutInfo = new CheckoutInfo(node1.NodeType, node1.CheckoutInfoTargetID, model1.Version,
                                                  ctx.Session.Name, ctx.Session.LeafOrgUnitID);
            var souceCode1 = Resources.LoadStringResource("Resources.Code.HelloService.cs");
            await ctx.TypeSystem.CreateModelDocumentAsync(node1, souceCode1);

            //生成服务代码
            var data = await PublishService.CompileServiceAsync(ctx, model1);

            Assert.NotNull(data);
        }