Esempio n. 1
0
        private static VirtualDisk GenerateWithTemplates(string templateRoot, string fileName)
        {
            var data = JObject.Parse(File.ReadAllText(fileName), new JsonLoadSettings {
                CommentHandling = CommentHandling.Load
            });
            var dataModel = new DataModel();

            dataModel.Load(data);
            var resourceCollection = new ResourceCollection(dataModel);
            var seedStore          = new SeedDataStore(resourceCollection);

            seedStore.Load(data);
            var disk    = new VirtualDisk();
            var project = new Project
            {
                ControllerFolder         = "Controllers",
                ServiceFolder            = "Services",
                ClientFolder             = "ClientApp/src",
                EntityFolder             = "Models",
                ClientExtension          = "ts",
                ClientComponentExtension = "vue",
                Disk = disk,
                ResourceCollection = resourceCollection,
                SeedStore          = seedStore,
                TemplateRoot       = templateRoot
            };

            project.GenerateFiles("TestProject", "http://localhost:5000");
            return(disk);
        }
Esempio n. 2
0
        public void TestSeed2()
        {
            var data = JObject.Parse(File.ReadAllText("example_recursive_input.json"), new JsonLoadSettings {
                CommentHandling = CommentHandling.Load
            });
            var dataModel = new DataModel();

            dataModel.Load(data);
            var resourceCollection = new ResourceCollection(dataModel);
            var seedStore          = new SeedDataStore(resourceCollection);

            seedStore.Load(data);
            var users       = resourceCollection.RootResources.First(r => r.Name.Singular == "User");
            var seedRecords = seedStore.Get(users.Class);

            Assert.AreEqual(2, seedRecords.Count);
            var userRecord = seedRecords.First();

            Assert.AreEqual(3, userRecord.Values.Count);
            Assert.AreEqual("1", userRecord.Get("Id"));
            Assert.AreEqual("\"Test User\"", userRecord.Get("UserName"));
            Assert.AreEqual("\"[email protected]\"", userRecord.Get("Email"));

            userRecord = seedRecords.Last();
            Assert.AreEqual(3, userRecord.Values.Count);
            Assert.AreEqual("2", userRecord.Get("Id"));
            Assert.AreEqual("\"Test User 2\"", userRecord.Get("UserName"));
            Assert.AreEqual("\"[email protected]\"", userRecord.Get("Email"));
        }
Esempio n. 3
0
        private Tuple <ServerProject, ClientProject> InitProject(GenerateRequest request, IDisk serverDisk, IDisk clientDisk)
        {
            DataModel dataModel = new DataModel();
            var       jObject   = JObject.Parse(request.Data, new JsonLoadSettings {
                CommentHandling = CommentHandling.Load, DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error
            });

            dataModel.Load(jObject);
            var collection = new ResourceCollection(dataModel);
            var userClass  = dataModel.Classes.FirstOrDefault(c => c.Name == "User");

            if (userClass == null)
            {
                throw new Exception("The model must contain a user class.");
            }
            if (userClass.Properties.Any(p => p.Name == "PasswordHash" || p.Name == "Password"))
            {
                throw new Exception("You must not explicitly set passwords for users. A password hash will be automatically added to the user class.");
            }
            CheckMandatoryUserProperty(userClass, "Email");
            CheckMandatoryUserProperty(userClass, "UserName");
            userClass.Properties.Add(new Property
            {
                Name         = "PasswordHash",
                IsServerOnly = true,
                BuiltInType  = BuiltInType.String
            });
            var seedStore = new SeedDataStore(collection);

            seedStore.Load(jObject);
            var serverPlugin  = GetServerPlugin(request);
            var serverProject = new ServerProject
            {
                Config             = serverPlugin.Config,
                Disk               = serverDisk,
                ResourceCollection = collection,
                SeedStore          = seedStore,
                Templates          = serverPlugin.Templates
            };
            var clientPlugin  = GetClientPlugin(request);
            var clientProject = new ClientProject
            {
                Config             = clientPlugin.Config,
                Disk               = clientDisk,
                ResourceCollection = collection,
                SeedStore          = seedStore,
                Templates          = clientPlugin.Templates
            };

            return(Tuple.Create(serverProject, clientProject));
        }
Esempio n. 4
0
        public void TestSeed()
        {
            var data = JObject.Parse(File.ReadAllText("example_input.json"), new JsonLoadSettings {
                CommentHandling = CommentHandling.Load
            });
            var dataModel = new DataModel();

            dataModel.Load(data);
            var resourceCollection = new ResourceCollection(dataModel);
            var seedStore          = new SeedDataStore(resourceCollection);

            seedStore.Load(data);
            var users      = resourceCollection.RootResources.First(r => r.Name.Singular == "User");
            var tasks      = resourceCollection.RootResources.First(r => r.Name.Singular == "Task");
            var tag        = resourceCollection.RootResources.First(r => r.Name.Singular == "Tag");
            var userRecord = seedStore.Get(users.Class).First();

            Assert.AreEqual(4, userRecord.Values.Count);
            Assert.AreEqual("1", userRecord.Get("Id"));
            Assert.AreEqual("\"Test User\"", userRecord.Get("UserName"));
            Assert.AreEqual("\"[email protected]\"", userRecord.Get("Email"));
            Assert.AreEqual("1", userRecord.Get("AddressId"));

            var taskRecord = seedStore.Get(tasks.Class).First();

            Assert.AreEqual(10, taskRecord.Values.Count);
            Assert.AreEqual("1", taskRecord.Get("Id"));
            Assert.AreEqual("1", taskRecord.Get("UserId"));
            Assert.AreEqual("1", taskRecord.Get("Priority"));
            Assert.AreEqual("1.5f", taskRecord.Get("EstimatedHours"));
            Assert.AreEqual("true", taskRecord.Get("IsOpen"));
            Assert.AreEqual("new DateTime(2021, 12, 30, 12, 0, 5)", taskRecord.Get("DueDate"));
            Assert.AreEqual("DateTime.Now", taskRecord.Get("Updated"));
            Assert.AreEqual("DateTime.Now", taskRecord.Get("Created"));
            Assert.AreEqual("\"Task Title\"", taskRecord.Get("Title"));
            Assert.AreEqual("\"Task description\"", taskRecord.Get("Description"));

            var tagRecord = seedStore.Get(tag.Class).First();

            Assert.AreEqual(3, tagRecord.Values.Count);
            Assert.AreEqual("1", tagRecord.Get("Id"));
            Assert.AreEqual("\"important\"", tagRecord.Get("Name"));
            Assert.AreEqual("\"red\"", tagRecord.Get("Color"));

            var pivotRecord = seedStore.Get(dataModel.Classes.First(c => c.Name.Singular == "TagTask")).First();

            Assert.AreEqual(2, pivotRecord.Values.Count);
            Assert.AreEqual("1", pivotRecord.Get("TagsId"));
            Assert.AreEqual("1", pivotRecord.Get("TasksId"));
        }