예제 #1
0
        public void Test_Delete_Reorder()
        {
            using (LogGroup logGroup = LogGroup.StartDebug("Testing deletion of sub entities to ensure their position is updated."))
            {
                TestArticle article = CreateStrategy.New <TestArticle>(false).Create <TestArticle>();

                article.ID    = Guid.NewGuid();
                article.Title = "Test Article";

                SaveStrategy.New(article, false).Save(article);

                Collection <TestArticlePage> pages = new Collection <TestArticlePage>();

                // Create and save 3 article pages associated with the article
                for (int i = 0; i < 3; i++)
                {
                    TestArticlePage page = CreateStrategy.New <TestArticlePage>(false).Create <TestArticlePage>();
                    page.Article    = article;
                    page.Title      = "Page " + (i + 1);
                    page.ID         = Guid.NewGuid();
                    page.PageNumber = i + 1;

                    pages.Add(page);

                    SaveStrategy.New(page, false).Save(page);
                }

                // Delete the second page (0 based position = 1)
                DeleteStrategy.New(pages[1], false).Delete(pages[1]);

                // Load the article from the store
                TestArticle foundArticle = RetrieveStrategy.New <TestArticle>(false).Retrieve <TestArticle>("ID", article.ID);

                // Activate the pages on the article
                ActivateStrategy.New(foundArticle, false).Activate(foundArticle, "Pages");

                Assert.IsNotNull(foundArticle.Pages, "Pages property isn't set.");

                Assert.AreEqual(2, foundArticle.Pages.Length, "Invalid number of pages.");

                foundArticle.Pages = Collection <TestArticlePage> .Sort(foundArticle.Pages, "PageNumberAscending");

                Assert.AreEqual(1, foundArticle.Pages[0].PageNumber, "First page has wrong number.");
                Assert.AreEqual("Page 1", foundArticle.Pages[0].Title, "First page has wrong title.");
                Assert.AreEqual(2, foundArticle.Pages[1].PageNumber, "Third page has wrong number (should now be 2 as it's moved up one spot).");
                Assert.AreEqual("Page 3", foundArticle.Pages[1].Title, "Third page has wrong title.");                 // Page 3 should now be at position 1 (ie. second place)
            }
        }
        public void Test_Create_FromParentID()
        {
            TestArticle article = CreateStrategy.New <TestArticle>(false).Create <TestArticle>();

            article.ID    = Guid.NewGuid();
            article.Title = "Test Title";

            SaveStrategy.New <TestArticle>(false).Save(article);

            CreateSubEntityStrategy strategy = (CreateSubEntityStrategy)CreateStrategy.New("TestArticlePage", false);

            TestArticlePage page = strategy.Create <TestArticlePage>(article.ID, String.Empty);

            Assert.IsNotNull(page.Article, "The article wasn't assigned to the page.");

            Assert.AreEqual(article.Title, page.Article.Title, "Article titles don't match.");

            Assert.AreEqual(1, page.PageNumber, "Invalid page number");
        }
예제 #3
0
        public void Test_GetDataStoreName_FromType()
        {
            using (LogGroup logGroup = LogGroup.Start("Testing the GetDataStoreName function from a provided type.", NLog.LogLevel.Debug))
            {
                TestArticle e1 = new TestArticle();
                e1.ID    = Guid.NewGuid();
                e1.Title = "Test 1";


                TestArticlePage e2 = new TestArticlePage();
                e2.ID    = Guid.NewGuid();
                e2.Title = "Test 2";

                //e2.ArticleID = e1.ID;

                string name = DataUtilities.GetDataStoreName(typeof(TestArticle));


                Assert.AreEqual(e1.ShortTypeName, name, "The wrong data store name was returned.");
            }
        }
        public void Test_Activate_SingleReference()
        {
            using (LogGroup logGroup = LogGroup.Start("Testing the activate function with a single reference.", NLog.LogLevel.Debug))
            {
                TestArticle article   = new TestArticle();
                Guid        articleID = article.ID = Guid.NewGuid();
                article.Title = "Test";

                TestArticlePage page   = new TestArticlePage();
                Guid            pageID = page.ID = Guid.NewGuid();
                page.Title = "Test Page";

                article.Pages = new TestArticlePage[] { page };
                //user.Roles = Collection<TestRole>.Add(user.Roles, role);

                DataAccess.Data.Saver.Save(page);

                DataAccess.Data.Saver.Save(article);

                page    = null;
                article = null;


                TestArticlePage page2 = DataAccess.Data.Reader.GetEntity <TestArticlePage>("ID", pageID);

                DataAccess.Data.Activator.Activate(page2, "Article");



                Assert.IsNotNull(page2.Article, "The page2.Article property is null.");

                if (page2.Article != null)
                {
                    Assert.AreEqual(articleID.ToString(), page2.Article.ID.ToString(), "ID of referenced article after activating doesn't match the original.");
                }
            }
        }
        public virtual void Test_Activate_SingleProperty_2References()
        {
            using (LogGroup logGroup = LogGroup.Start("Testing the Activate function with 2 references.", NLog.LogLevel.Debug))
            {
                TestArticle article = new TestArticle();
                article.ID = Guid.NewGuid();
                Guid articleID = article.ID;
                article.Title = "Test";

                TestArticlePage page = new TestArticlePage();
                page.ID = Guid.NewGuid();
                Guid pageID = page.ID;
                page.Title = "Test Page";

                TestArticlePage page2 = new TestArticlePage();
                page2.ID = Guid.NewGuid();
                Guid page2ID = page2.ID;
                page2.Title = "Test Page 2";

                article.Pages = new TestArticlePage[] { page, page2 };
                //user.Roles = Collection<TestRole>.Add(user.Roles, role);

                DataAccess.Data.Saver.Save(page);
                DataAccess.Data.Saver.Save(page2);

                DataAccess.Data.Saver.Save(article);

                //  TODO: Check if needed
                //page = null;
                //page2 = null;
                //article = null;

                EntityReferenceCollection references = DataAccess.Data.Referencer.GetReferences(article.GetType().Name, page.GetType().Name);

                Assert.IsNotNull(references, "references == null");

                Assert.AreEqual(2, references.Count, "Invalid number of references found.");


                TestArticle foundArticle = DataAccess.Data.Reader.GetEntity <TestArticle>("ID", articleID);

                Assert.IsNotNull(foundArticle, "The foundArticle variable is null.");

                DataAccess.Data.Activator.Activate(foundArticle, "Pages");



                Assert.IsNotNull(foundArticle.Pages, "The article.Pages property is null.");
                Assert.AreEqual(2, foundArticle.Pages.Length, "article.Pages.Length != 2.");

                if (foundArticle.Pages != null && foundArticle.Pages.Length == 2)
                {
                    TestArticlePage foundPage1 = foundArticle.Pages[0];
                    TestArticlePage foundPage2 = foundArticle.Pages[1];

                    //if (foundPage2.ID.ToString() == pageID.ToString())
                    //{
                    //	TestArticlePage tmp = foundPage2;
                    //	foundPage2 = foundPage1;
                    //	foundPage1 = tmp;
                    //}

                    // Use an array and IndexOf function so the match will work in any order
                    Guid[] pageIDs = new Guid[] { pageID, page2ID };

                    Assert.IsTrue(Array.IndexOf(pageIDs, foundPage1.ID) > -1, "First found page has the wrong ID.");
                    Assert.IsTrue(Array.IndexOf(pageIDs, foundPage2.ID) > -1, "Second found page has the wrong ID.");

                    //Assert.AreEqual(pageID.ToString() + "---" + page2ID.ToString(), foundPage1.ID.ToString() + "---" + foundPage2.ID.ToString(), "IDs of the reference don't match.");
                }
            }
        }