private static GrandDesign SetupGrandDesign() { var testObject = new GrandDesign(); CreateTestTypesAndInstances(ref testObject); CreateUsersAndSecurity(ref testObject); CreateReportsAndFormsEtc(ref testObject); return(testObject); }
private static void CreateReportsAndFormsEtc(ref GrandDesign testObject) { // // Reports // var unitReport = ActionTestHelper.CreateReport("test:unitReport", "Loose Units", null, testObject.Types["unit"], true); unitReport.ResourceInFolder.Add(testObject.WorkingFolder.As <NavContainer>()); unitReport.Save(); testObject.Reports.Add("unitReport", unitReport); var parentReport = ActionTestHelper.CreateReport("test:parentReport", "Parents", null, testObject.Types["parent"], true); parentReport.ResourceInFolder.Add(testObject.WorkingFolder.As <NavContainer>()); parentReport.Save(); testObject.Reports.Add("parentReport", parentReport); var grandParentReport = ActionTestHelper.CreateReport("test:grandParentReport", "Grandparents", null, testObject.Types["grandParent"], true); grandParentReport.ResourceInFolder.Add(testObject.WorkingFolder.As <NavContainer>()); grandParentReport.Save(); testObject.Reports.Add("grandParentReport", grandParentReport); // // Forms // var unitForm = ActionTestHelper.CreateForm("test:unitForm", "Loose Unit", null, testObject.Types["unit"], true); unitForm.Save(); testObject.Forms.Add("unitForm", unitForm); var parentForm = ActionTestHelper.CreateForm("test:parentForm", "Parent", null, testObject.Types["parent"], true); parentForm.Save(); testObject.Forms.Add("parentForm", parentForm); var grandParentForm = ActionTestHelper.CreateForm("test:grandParentForm", "Grandparent", null, testObject.Types["grandParent"], true); grandParentForm.Save(); testObject.Forms.Add("grandParentForm", grandParentForm); // // Screen // var actionsScreen = ActionTestHelper.CreateScreen("test:getActionsScreen", "Action Screen", null, new Chart[0], new[] { parentReport }, new[] { unitForm }, out testObject.ScreenComponents); actionsScreen.ResourceInFolder.Add(testObject.WorkingFolder.As <NavContainer>()); actionsScreen.Save(); // // Workflows // var unitWorkflow = ActionTestHelper.CreateWorkflow("test:unitWorkflow", "Stop", null, testObject.Types["unit"], "Unit"); unitWorkflow.Save(); var parentWorkflow = ActionTestHelper.CreateWorkflow("test:parentWorkflow", "Look", null, testObject.Types["parent"], "Parent"); parentWorkflow.Save(); var grandParentWorkflow = ActionTestHelper.CreateWorkflow("test:grandParentWorkflow", "Listen", null, testObject.Types["grandParent"], "Grandparent"); grandParentWorkflow.Save(); // // Document Generation // var unitGenerator = ActionTestHelper.CreateReportTemplate("text:unitGenerator", "Some Unit", null, testObject.Types["unit"]); unitGenerator.Save(); var parentGenerator = ActionTestHelper.CreateReportTemplate("text:parentGenerator", "Muppet", null, testObject.Types["parent"]); parentGenerator.Save(); var grandParentGenerator = ActionTestHelper.CreateReportTemplate("text:grandParentGenerator", "Some Elder", null, testObject.Types["grandParent"]); grandParentGenerator.Save(); }
private static void CreateUsersAndSecurity(ref GrandDesign testObject) { // // Users // var administratorUser = Entity.Get <UserAccount>(new EntityRef("core:administratorUserAccount"), true); testObject.Accounts.Add("administrator", administratorUser); // // Access Rules // new AccessRuleFactory().AddAllowByQuery(administratorUser.As <Subject>(), testObject.Types["unit"].As <SecurableEntity>(), new[] { "core:read", "core:modify", "core:delete", "core:create" }.Select(p => new EntityRef(p)), TestQueries.Entities(testObject.Types["unit"]).ToReport()); // // Read // var reader = Entity.Create <Person>(); reader.FirstName = "Robbie"; reader.LastName = "Reader"; var readerAccount = Entity.Create <UserAccount>(); readerAccount.Name = "reader"; readerAccount.AccountHolder = reader; readerAccount.Save(); testObject.Accounts.Add("reader", readerAccount); new AccessRuleFactory().AddAllowByQuery(readerAccount.As <Subject>(), testObject.Types["unit"].As <SecurableEntity>(), new[] { "core:read" }.Select(p => new EntityRef(p)), TestQueries.Entities(testObject.Types["unit"]).ToReport()); // // Read + Modify // var modifier = Entity.Create <Person>(); modifier.FirstName = "Margie"; modifier.LastName = "Modifier"; var modifierAccount = Entity.Create <UserAccount>(); modifierAccount.Name = "modifier"; modifierAccount.AccountHolder = modifier; modifierAccount.Save(); testObject.Accounts.Add("modifier", modifierAccount); new AccessRuleFactory().AddAllowByQuery(modifierAccount.As <Subject>(), testObject.Types["unit"].As <SecurableEntity>(), new[] { "core:read", "core:modify" }.Select(p => new EntityRef(p)), TestQueries.Entities(testObject.Types["unit"]).ToReport()); // // Read, Modify + Create // var creator = Entity.Create <Person>(); creator.FirstName = "Connie"; creator.LastName = "Creator"; var creatorAccount = Entity.Create <UserAccount>(); creatorAccount.Name = "creator"; creatorAccount.AccountHolder = creator; creatorAccount.Save(); testObject.Accounts.Add("creator", creatorAccount); new AccessRuleFactory().AddAllowByQuery(creatorAccount.As <Subject>(), testObject.Types["unit"].As <SecurableEntity>(), new[] { "core:read", "core:modify", "core:create" }.Select(p => new EntityRef(p)), TestQueries.Entities(testObject.Types["unit"]).ToReport()); // // Read, Modify + Delete // var deleter = Entity.Create <Person>(); deleter.FirstName = "Donnie"; deleter.LastName = "Deleter"; var deleterAccount = Entity.Create <UserAccount>(); deleterAccount.Name = "deleter"; deleterAccount.AccountHolder = deleter; deleterAccount.Save(); testObject.Accounts.Add("deleter", deleterAccount); new AccessRuleFactory().AddAllowByQuery(deleterAccount.As <Subject>(), testObject.Types["unit"].As <SecurableEntity>(), new[] { "core:read", "core:modify", "core:delete" }.Select(p => new EntityRef(p)), TestQueries.Entities(testObject.Types["unit"]).ToReport()); // // Folder // var folder = Entity.Create <Folder>(); folder.Name = "Get Actions"; folder.ResourceInFolder.Add(Entity.GetByName <NavSection>("Test Solution").First().As <NavContainer>()); folder.Save(); testObject.WorkingFolder = folder; // // All these accounts should see... // foreach (var account in testObject.Accounts.Values) { // // ...workflows // new AccessRuleFactory().AddAllowByQuery(account.As <Subject>(), Workflow.Workflow_Type.As <SecurableEntity>(), new EntityRef("core:read").ToEnumerable(), TestQueries.Entities(new EntityRef("core:workflow")).ToReport()); // // ... report templates // new AccessRuleFactory().AddAllowByQuery(account.As <Subject>(), ReportTemplate.ReportTemplate_Type.As <SecurableEntity>(), new EntityRef("core:read").ToEnumerable(), TestQueries.Entities(new EntityRef("core:reportTemplate")).ToReport()); } }
private static void CreateTestTypesAndInstances(ref GrandDesign testObject) { // // Fields // var unitFieldGroup = Entity.Create <FieldGroup>(); unitFieldGroup.Name = "Unit Test"; var isHappyField = Entity.Create <BoolField>(); isHappyField.Alias = "test:isHappy"; isHappyField.Name = "Happy?"; isHappyField.FieldInGroup = unitFieldGroup; var birthdayField = Entity.Create <DateField>(); birthdayField.Alias = "test:birthday"; birthdayField.Name = "Birthday"; birthdayField.FieldInGroup = unitFieldGroup; // // Types // var unit = Entity.Create <Definition>().As <EntityType>(); unit.Alias = "test:unit"; unit.Name = "Loose Unit"; unit.Inherits.Add(UserResource.UserResource_Type); unit.FieldGroups.Add(unitFieldGroup); unit.Fields.Add(isHappyField.As <Field>()); unit.Fields.Add(birthdayField.As <Field>()); unit.Save(); var parent = Entity.Create <Definition>().As <EntityType>(); parent.Alias = "test:parent"; parent.Name = "Parent"; parent.Inherits.Add(unit); parent.Save(); var grandParent = Entity.Create <Definition>().As <EntityType>(); grandParent.Alias = "test:grandParent"; grandParent.Name = "Grandparent"; grandParent.Inherits.Add(parent); grandParent.Save(); // // Relationships // var kidsRel = Entity.Create <Relationship>(); kidsRel.Name = "Kids"; kidsRel.FromType = parent; kidsRel.FromName = "Parental"; kidsRel.ToType = unit; kidsRel.ToName = "Tin Lid"; kidsRel.RelType_Enum = RelTypeEnum_Enumeration.RelManyToMany; kidsRel.Cardinality_Enum = CardinalityEnum_Enumeration.ManyToMany; kidsRel.RelationshipInToTypeGroup = unitFieldGroup; kidsRel.RelationshipInFromTypeGroup = unitFieldGroup; kidsRel.Save(); var grandKidsRel = Entity.Create <Relationship>(); grandKidsRel.Name = "Grandchildren"; grandKidsRel.FromType = grandParent; grandKidsRel.FromName = "Mouldy Oldy"; grandKidsRel.ToType = unit; grandKidsRel.ToName = "Whipper Snapper"; grandKidsRel.RelType_Enum = RelTypeEnum_Enumeration.RelManyToMany; grandKidsRel.Cardinality_Enum = CardinalityEnum_Enumeration.ManyToMany; grandKidsRel.RelationshipInToTypeGroup = unitFieldGroup; grandKidsRel.RelationshipInFromTypeGroup = unitFieldGroup; grandKidsRel.Save(); // // Instances // var morty = Entity.Create(unit); morty.SetField("core:name", "Morty"); morty.SetField(isHappyField, false); morty.SetField(birthdayField, new DateTime(2012, 06, 30)); morty.Save(); var jerry = Entity.Create(parent); jerry.SetField("core:name", "Jerry"); jerry.SetField(isHappyField, false); jerry.SetField(birthdayField, new DateTime(1976, 03, 13)); jerry.SetRelationships(kidsRel, new EntityRelationship <IEntity>(morty).ToEntityRelationshipCollection()); jerry.Save(); var rick = Entity.Create(grandParent); rick.SetField("core:name", "Rick"); rick.SetField(isHappyField, true); rick.SetField(birthdayField, new DateTime(1955, 10, 24)); rick.SetRelationships(kidsRel, new EntityRelationship <IEntity>(jerry).ToEntityRelationshipCollection()); rick.SetRelationships(grandKidsRel, new EntityRelationship <IEntity>(morty).ToEntityRelationshipCollection()); rick.Save(); testObject.Types.Add("unit", unit); testObject.Types.Add("parent", parent); testObject.Types.Add("grandParent", grandParent); }