예제 #1
0
            public void TestJobDetailMapping()
            {
                // given
                var      user1    = GetOrCreateUser("test.job.user");
                var      site1    = GetOrCreateSite("site1");
                DateTime baseTime = DateTime.Now.Subtract(TimeSpan.FromMinutes(5));
                var      job1     = TestDataBuilder.Build <Job>()
                                    .With(j => j.Site, site1)
                                    .With(j => j.Owner, user1)
                                    .Create();

                Session.Save(job1);
                Session.Flush();
                var task1 = TestDataBuilder.Build <JobTask>()
                            .With(j => j.Name, job1.Name)
                            .With(j => j.Job, job1)
                            .Create();

                // assert
                new PersistenceSpecification <JobTaskDetail>(Session, new CustomEqualityComparer())
                .CheckProperty(x => x.TryNo, 2)
                .CheckProperty(x => x.Arguments, "test job details arguments")
                .CheckProperty(x => x.Status, TaskStatus.Failed)
                .CheckProperty(x => x.Started, baseTime)
                .CheckProperty(x => x.Updated, baseTime.AddMinutes(3))
                .CheckProperty(x => x.Finished, baseTime.AddMinutes(3))
                .CheckProperty(x => x.OutputLog, "test output log")
                .CheckReference(x => x.OwnerTask, task1)
                .VerifyTheMappings();
            }
예제 #2
0
            public void TestJobTaskMapping()
            {
                var      user1    = GetOrCreateUser("test.job.user");
                var      site1    = GetOrCreateSite("site1");
                DateTime baseTime = DateTime.Now.Subtract(TimeSpan.FromMinutes(5));
                var      job1     = TestDataBuilder.Build <Job>()
                                    .With(j => j.Site, site1)
                                    .With(j => j.Owner, user1)
                                    .Create();

                Session.Save(job1);
                Session.Flush();

                // assert
                new PersistenceSpecification <JobTask>(Session, new CustomEqualityComparer())
                .CheckProperty(x => x.Name, "Job1")
                .CheckProperty(x => x.Status, TaskStatus.InProgress)
                .CheckProperty(x => x.ProgressEstimate, 18)
                .CheckProperty(x => x.Created, DateTime.Now.Subtract(TimeSpan.FromSeconds(45)))
                .CheckProperty(x => x.Completed, DateTime.Now.Add(TimeSpan.FromSeconds(45)))
                .CheckProperty(x => x.FailedMessage, "failed")
                .CheckProperty(x => x.OwnerUserName, "another.user")
                .CheckInverseList(x => x.Details, new List <JobTaskDetail> {
                    new JobTaskDetail {
                        TryNo = 1, Started = baseTime.Add(TimeSpan.FromSeconds(10)), Updated = baseTime.Add(TimeSpan.FromSeconds(20)), Finished = baseTime.Add(TimeSpan.FromSeconds(30)), Status = TaskStatus.Failed
                    },
                    new JobTaskDetail {
                        TryNo = 2, Started = baseTime.Add(TimeSpan.FromSeconds(40)), Updated = baseTime.Add(TimeSpan.FromSeconds(60)), Finished = baseTime.Add(TimeSpan.FromSeconds(60)), Status = TaskStatus.Succeed
                    }
                }, (j, d) => { d.OwnerTask = j; j.Details.Add(d); });
            }
예제 #3
0
        protected Organisation GetOrCreateOrganisation(string name, string address, string phoneNumber)
        {
            var person = Session.Query <Organisation>()
                         .Where(e => e.Name == name)
                         .FirstOrDefault();

            if (person == null)
            {
                person = TestDataBuilder.Build <Organisation>()
                         .With(p => p.Name, name)
                         .Do(p => {
                    var addr1 = TestDataBuilder.Build <Address>()
                                .With(a => a.AddressLine1, address)
                                .With(a => a.AddressType, AddressTypes.Residential)
                                .Without(a => a.Party)
                                .Create();
                    p.Addresses.Add(addr1);
                })
                         .Do(p => {
                    p.Telephones.Add(new Telephone {
                        Area = "02", Number = phoneNumber, Type = TelephoneTypes.Business
                    });
                })
                         .Create();
            }

            return(person);
        }
예제 #4
0
            private Zone CreateZones(Site site1)
            {
                var zoneType1 = ZoneTypeCodes.Blog;
                var zoneType2 = ZoneTypeCodes.WebContent;

                var zone1 = TestDataBuilder.Build <Zone>()
                            .With(z => z.Site, site1)
                            .With(x => x.ZoneType, zoneType1)
                            .With(z => z.IsActive, true)
                            .With(z => z.IsPrivate, false)
                            .With(z => z.Name, new PageName("zone1"))
                            .With(z => z.ZoneType, zoneType1)
                            .Create();

                Session.Save(zone1);

                var zone2 = TestDataBuilder.Build <Zone>()
                            .With(z => z.Site, site1)
                            .With(x => x.ZoneType, zoneType2)
                            .With(z => z.IsActive, true)
                            .With(z => z.IsPrivate, true)
                            .With(z => z.Name, new PageName("zone2"))
                            .With(z => z.ZoneType, zoneType2)
                            .Create();

                Session.Save(zone2);
                Session.Flush();

                return(zone1);
            }
예제 #5
0
            private void CreateJobs(Site site1)
            {
                var adminRole = GetOrCreateAdminRole();

                var jobOwner = TestDataBuilder.NewUser("jobCreator", "*****@*****.**", adminRole, UserStatus.Active);

                Session.Save(jobOwner);

                var job1 = TestDataBuilder.Build <Job>()
                           .With(j => j.Owner, jobOwner)
                           .With(j => j.Site, site1)
                           .Create();
                var task1       = TestDataBuilder.Build <JobTask>().With(jd => jd.Job, job1).Create();
                var task1Detail = TestDataBuilder.Build <JobTaskDetail>().With(jd => jd.OwnerTask, task1).Create();

                task1.Details.Add(task1Detail);

                job1.Tasks.Add(task1);

                job1.Tasks.Add(TestDataBuilder.Build <JobTask>().Without(jd => jd.Job).Create());
                job1.Tasks.Add(TestDataBuilder.Build <JobTask>().Without(jd => jd.Job).Create());
                job1.Tasks.ForEach(jd => jd.Job = job1);

                Session.Save(job1);

                var job2 = TestDataBuilder.Build <Job>()
                           .With(j => j.Owner, jobOwner)
                           .With(j => j.Site, site1)
                           .Create();

                job2.Tasks.Add(TestDataBuilder.Build <JobTask>().Without(jh => jh.Job).Create());
                job2.Tasks.ForEach(jd => jd.Job = job2);

                Session.Save(job2);
            }
예제 #6
0
            private Portal GetOrCreatePortal()
            {
                Portal portal = Session
                                .Query <Portal>()
                                .SingleOrDefault();

                if (portal == null)
                {
                    var adminUser = GetOrCreateAdminUser();

                    var orgPartyRole = TestDataBuilder.Build <PartyRole>()
                                       .With(e => e.Name, "Portal Orgnisation")
                                       .Create();
                    Session.Save(orgPartyRole);

                    var portalOrg = TestDataBuilder.NewOrganisationParty("my portal", "no 3, oak avenue", "484848", new List <PartyRole> {
                        orgPartyRole
                    });
                    Session.Save(portalOrg);

                    portal = TestDataBuilder.NewPortal(adminUser);
                    portal.Organisation = portalOrg;
                    Session.Save(portal);

                    Session.Flush();
                }
                return(portal);
            }
예제 #7
0
            private Site CreatePortalAndSite()
            {
                var portal    = GetOrCreatePortal();
                var userRole  = GetOrCreateUserRole();
                var adminUser = GetOrCreateAdminUser();

                var user1 = TestDataBuilder.NewUser("user1", "*****@*****.**", userRole, UserStatus.Active);
                var user2 = TestDataBuilder.NewUser("user2", "*****@*****.**", userRole, UserStatus.Active);
                var user3 = TestDataBuilder.NewUser("user3", "*****@*****.**", userRole, UserStatus.Active);

                Session.Save(user1);
                Session.Save(user2);
                Session.Save(user3);

                var site1 = TestDataBuilder.NewSite("site1", portal, adminUser);

                site1.Users.Add(user1);
                site1.Users.Add(user2);
                site1.Users.Add(user3);
                Session.Save(site1);
                Session.Flush();

                var setting1 = TestDataBuilder.Build <Setting>()
                               .With(s => s.Section, new PageName("section1"))
                               .With(s => s.Name, new PageName("setting1"))
                               .With(s => s.Site, null)
                               .Create();

                Session.Save(setting1);

                var setting2 = TestDataBuilder.Build <Setting>()
                               .With(s => s.Section, new PageName("section2"))
                               .With(s => s.Name, new PageName("setting1"))
                               .With(s => s.Site, site1)
                               .Create();

                Session.Save(setting2);

                var redirect = TestDataBuilder.Create <Redirect>();

                Session.Save(redirect);
                Session.Flush();

                // security
                var adminRole = GetOrCreateAdminRole();
                var user      = TestDataBuilder.NewUser("user4", "*****@*****.**", userRole, UserStatus.Active);

                user.Roles.Add(userRole);
                Session.Save(user);

                var systemFunction1 = TestDataBuilder.Build <AppFunction>().Without(e => e.Parent).Create();

                adminRole.AppFunctions.Add(systemFunction1);
                userRole.AppFunctions.Add(systemFunction1);
                Session.Save(systemFunction1);

                Session.Flush();

                return(site1);
            }
예제 #8
0
        protected Tag GetOrCreateTag(Site site, string name)
        {
            var tag = Session.Query <Tag>()
                      .Where(c => c.Name == name)
                      .SingleOrDefault();

            if (tag == null)
            {
                tag = TestDataBuilder.Build <Tag>()
                      .With(c => c.Site, site)
                      .With(c => c.Name, name)
                      .Create();
                Session.Save(tag);
                Session.Flush();
            }
            return(tag);
        }
예제 #9
0
            private void CreateWorkflows(Site site1, Zone zone1)
            {
                var adminRole = GetOrCreateAdminRole();
                var userRole  = GetOrCreateUserRole();

                var workflow = TestDataBuilder.Build <PostWorkflowRule>()
                               .With(w => w.Site, site1)
                               .With(w => w.ReturnToAuthorForPublish, false)
                               .With(w => w.IsActive, true)
                               .With(w => w.ApproverRole, adminRole)
                               .With(w => w.PublisherRole, userRole)
                               .Create();

                Session.Save(workflow);

                var postCreator2 = TestDataBuilder.NewUser("postOwner2", "*****@*****.**", userRole, UserStatus.Active);

                Session.Save(postCreator2);

                var postApprover = TestDataBuilder.NewUser("postApprover2", "*****@*****.**", adminRole, UserStatus.Active);

                Session.Save(postApprover);

                var postPublisher = TestDataBuilder.NewUser("postPublisher2", "*****@*****.**", userRole, UserStatus.Active);

                Session.Save(postPublisher);

                var post = TestDataBuilder.NewPost(site1, zone1, postCreator2, commentsCount: 5, pingbackCounts: 3, ratingsCount: 10);

                post.LatestRevision.Reviser = postCreator2;
                post.Status = PostStatus.Saved;
                Session.Save(post);


                post.LatestRevision.Approver         = postApprover;
                post.LatestRevision.ApprovedDate     = DateTime.Now;
                post.LatestRevision.ApproverRoleName = adminRole.Name;
                post.Status = PostStatus.Approved;
                Session.SaveOrUpdate(post);

                post.LatestRevision.Publisher         = postPublisher;
                post.LatestRevision.PublishedDate     = DateTime.Now;
                post.LatestRevision.PublisherRoleName = userRole.Name;
                post.Status = PostStatus.Published;
                Session.SaveOrUpdate(post);
            }
예제 #10
0
        protected PostSerie GetOrCreateSerie(Site site, string name)
        {
            var serie = Session.Query <PostSerie>()
                        .Where(s => s.Name == name && s.Site.Id == site.Id)
                        .SingleOrDefault();

            if (serie == null)
            {
                serie = TestDataBuilder.Build <PostSerie>()
                        .With(s => s.Site, site)
                        .With(s => s.Name, new PageName(name))
                        .With(s => s.IsPrivate, false)
                        .Create();
                Session.Save(serie);
                Session.Flush();
            }
            return(serie);
        }
예제 #11
0
        protected Role GetOrCreateAdminRole()
        {
            var role = Session.Query <Role>()
                       .Where(r => r.RoleType == RoleTypeCodes.SystemAdmin && r.Name == "Administrator")
                       .FirstOrDefault();

            if (role == null)
            {
                role = TestDataBuilder.Build <Role>()
                       .Without(r => r.AppFunctions)
                       .With(r => r.Name, "Administrator")
                       .With(r => r.IsSystemRole, true)
                       .With(r => r.RoleType, RoleTypeCodes.SystemAdmin)
                       .Create();
                Session.Save(role);
                Session.Flush();
            }
            return(role);
        }
예제 #12
0
        protected Person GetOrCreatePerson(string firstName, string lastName, string address, string phoneNumber)
        {
            var person = Session.Query <Person>()
                         .Where(e => e.GivenName == firstName && e.Surname == lastName)
                         .FirstOrDefault();

            if (person == null)
            {
                person = TestDataBuilder.Build <Person>()
                         .With(p => p.GivenName, firstName)
                         .With(p => p.Surname, lastName)
                         .Do(p => {
                    var addr1 = TestDataBuilder.Build <Address>()
                                .With(a => a.AddressLine1, address)
                                .With(a => a.AddressType, AddressTypes.Residential)
                                .Without(a => a.Party)
                                .Create();
                    p.Addresses.Add(addr1);
                })
                         .Do(p => {
                    p.Telephones.Add(new Telephone {
                        Area = "02", Number = phoneNumber, Type = TelephoneTypes.Home
                    });
                })
                         .Create();

                foreach (var adr in person.Addresses)
                {
                    adr.Party = person;
                }

                foreach (var tel in person.Telephones)
                {
                    tel.Party = person;
                }

                Session.Save(person);
                Session.Flush();
            }

            return(person);
        }
예제 #13
0
        protected Category GetOrCreateCategory(Site site, string name, Category parent = null)
        {
            var cat = Session.Query <Category>()
                      .Where(c => c.Name == name)
                      .SingleOrDefault();

            if (cat == null)
            {
                cat = TestDataBuilder.Build <Category>()
                      .With(c => c.Site, site)
                      .With(c => c.Parent, parent)
                      .With(c => c.IsPrivate, true)
                      .With(c => c.Parent, null)
                      .With(c => c.Name, name)
                      .Create();
                Session.Save(cat);
                Session.Flush();
            }
            return(cat);
        }
예제 #14
0
        //protected ZoneType GetOrCreateZoneType() {
        //    var zoneType = Session.Query<ZoneType>()
        //        .Where(z => z.Code == ZoneTypeCodes.Blog)
        //        .SingleOrDefault();
        //    if (zoneType == null) {
        //        zoneType = TestDataBuilder.Build<ZoneType>()
        //            .With(z => z.Code, ZoneTypeCodes.Blog)
        //            .With(z => z.Name, "Blog")
        //            .Create();
        //        Session.Save(zoneType);
        //        Session.Flush();
        //    }
        //    return zoneType;
        //}

        protected Zone GetOrCreateZone(Site site, string zoneName)
        {
            var zone = Session.Query <Zone>()
                       .Where(z => z.ZoneType == ZoneTypeCodes.Blog &&
                              z.Site.Id == site.Id &&
                              z.Name == zoneName)
                       .FirstOrDefault();

            if (zone == null)
            {
                zone = TestDataBuilder.Build <Zone>()
                       .With(z => z.Site, site)
                       .With(z => z.Name, new PageName(zoneName))
                       .With(z => z.ZoneType, ZoneTypeCodes.Blog)
                       .Create();
                Session.Save(zone);
                Session.Flush();
            }
            return(zone);
        }
예제 #15
0
            private Role GetOrCreateUserRole()
            {
                Role userRole = Session
                                .Query <Role>()
                                .Where(r => r.RoleType != RoleTypeCodes.SystemAdmin)
                                .FirstOrDefault();

                if (userRole == null)
                {
                    userRole = TestDataBuilder.Build <Role>()
                               .Without(e => e.AppFunctions)
                               .With(e => e.RoleType, RoleTypeCodes.User)
                               .With(e => e.Name, "user")
                               .Create();

                    Session.Save(userRole);
                    Session.Flush();
                }
                return(userRole);
            }
예제 #16
0
            private Role GetOrCreateAdminRole()
            {
                Role adminRole = Session
                                 .Query <Role>()
                                 .Where(r => r.RoleType == RoleTypeCodes.SystemAdmin && r.IsSystemRole)
                                 .FirstOrDefault();

                if (adminRole == null)
                {
                    adminRole = TestDataBuilder.Build <Role>()
                                .Without(e => e.AppFunctions)
                                .With(e => e.IsSystemRole, true)
                                .With(e => e.RoleType, RoleTypeCodes.SystemAdmin)
                                .With(e => e.Name, "administrator")
                                .Create();
                    Session.Save(adminRole);
                    Session.Flush();
                }
                return(adminRole);
            }
예제 #17
0
            private void CreateAdminUser()
            {
                var adminUser = GetOrCreateAdminUser();

                var userPartyRole = TestDataBuilder.Build <PartyRole>()
                                    .With(e => e.Name, "User")
                                    .Create();

                Session.Save(userPartyRole);

                var adminPerson = TestDataBuilder.NewPersonParty("user", "test", "no 3, oak avenue", "33445566", new List <PartyRole> {
                    userPartyRole
                });

                Session.Save(adminPerson);

                adminUser.Party = adminPerson;
                Session.SaveOrUpdate(adminUser);
                Session.Flush();
            }
예제 #18
0
            private void CreateCodeSnippets()
            {
                var userRole = GetOrCreateUserRole();

                var snippetOwner = TestDataBuilder.NewUser("snippetOwner", "*****@*****.**", userRole, UserStatus.Active);

                Session.Save(snippetOwner);

                var snippet = TestDataBuilder.NewSnippet(snippetOwner, commentsCount: 3, ratingsCount: 2, pingbackCounts: 100);

                snippet.Creator = snippetOwner;
                snippet.LatestRevision.Reviser = snippetOwner;

                var link = TestDataBuilder.Build <SnippetLink>().Without(c => c.Snippet).Create();

                link.Snippet = snippet;
                snippet.Links.Add(link);

                Session.Save(snippet);
                Session.Flush();
            }
예제 #19
0
            private void CreatePosts(Site site1, Zone zone1)
            {
                var userRole = GetOrCreateUserRole();

                var postCreator = TestDataBuilder.NewUser("postOwner", "*****@*****.**", userRole, UserStatus.Active);

                Session.Save(postCreator);

                var post = TestDataBuilder.NewPost(site1, zone1, postCreator, commentsCount: 5, pingbackCounts: 3, ratingsCount: 10);

                post.Creator = postCreator;
                post.LatestRevision.Reviser = postCreator;
                Session.Save(post);
                Session.Flush();

                var revision = post.Revise();

                revision.Reviser = postCreator;
                revision.Body    = "modified " + revision.Body;
                Session.SaveOrUpdate(post);

                var comment = post.Comment();

                comment.AuthorName = "commenter";
                comment.Body       = "this is a test comment";
                Session.SaveOrUpdate(post);
                Session.Flush();

                var rate = post.Rate();

                rate.Rate         = (decimal)4.5;
                rate.UserIdentity = "user.identity123";
                Session.SaveOrUpdate(post);
                Session.Flush();

                var link = TestDataBuilder.Build <PostLink>().Without(c => c.Post).Create();

                link.Post = post;
                post.Links.Add(link);

                var pingback = TestDataBuilder.Build <Pingback>().Without(c => c.Post).Without(x => x.Snippet).Create();

                pingback.Post = post;
                post.Pingbacks.Add(pingback);
                Session.SaveOrUpdate(post);
                Session.Flush();

                var tag = TestDataBuilder.Build <Tag>()
                          .With(t => t.Site, site1)
                          .Create();

                Session.Save(tag);

                var category = TestDataBuilder.Build <Category>()
                               .Without(t => t.Parent)
                               .With(t => t.Site, site1)
                               .Create();

                Session.Save(category);

                post.Tags.Add(tag);
                post.Tags.Add(category);
                Session.SaveOrUpdate(post);
                Session.Flush();

                var serie = TestDataBuilder.Build <PostSerie>()
                            .With(s => s.Site, site1)
                            .Create();

                serie.Posts.Add(post);
                Session.Save(serie);
                Session.Flush();

                var postPermission = TestDataBuilder.Build <PostPermission>()
                                     .With(x => x.User, postCreator)
                                     .With(x => x.Post, post)
                                     .Create();

                Session.Save(postPermission);
                Session.Flush();
            }