Пример #1
0
        public void Test_React()
        {
            TestArticle article = CreateStrategy.New <TestArticle>(false).Create <TestArticle>();

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

            MockSaveTestArticleStrategy strategy = MockSaveTestArticleStrategy.New(false);

            strategy.Save(article);

            Assert.IsTrue((bool)StateAccess.State.Session["MockSaveTestArticleReaction_Reacted"], "The reaction flag wasn't set to true.");
        }
Пример #2
0
        /// <summary>
        /// Creates a new sub entity and assigns the parent entity specified in the query strings.
        /// Note: Either the parent ID or parent unique key need to be provided, not both.
        /// </summary>
        /// <param name="parentID">The ID of the parent entity.</param>
        /// <param name="uniqueKey">The unique key of the parent entity.</param>
        /// <returns>The newly created sub entity.</returns>
        public IEntity Create(Guid parentID, string parentUniqueKey)
        {
            IEntity entity = null;

            using (LogGroup logGroup = LogGroup.Start("Creating a new sub entity.", NLog.LogLevel.Debug))
            {
                CreateSubEntityStrategy createStrategy = (CreateSubEntityStrategy)CreateStrategy.New(Command.TypeName, Container.RequireAuthorisation);

                entity = createStrategy.Create(parentID, parentUniqueKey);

                ExecuteCreate(entity);
            }
            return(entity);
        }
        public void Test_Save()
        {
            TestArticle article = CreateStrategy.New <TestArticle>(false).Create <TestArticle>();

            article.ID = Guid.NewGuid();

            StrategyInfo  info     = StrategyState.Strategies["Save", "IEntity"];
            ISaveStrategy strategy = SaveStrategy.New <TestArticle>(false);

            strategy.Save(article);

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

            Assert.IsNotNull(foundArticle);
        }
Пример #4
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_React()
        {
            IUser author = new User();

            author.ID = Guid.NewGuid();

            AuthenticationState.User = (User)author;

            MockAuthoredEntity entity = CreateStrategy.New <MockAuthoredEntity>(false).Create <MockAuthoredEntity>();

            IUser foundAuthor = entity.Author;

            Assert.IsNotNull(foundAuthor, "No author assigned.");

            Assert.AreEqual(author.ID.ToString(), foundAuthor.ID.ToString(), "IDs didn't match.");
        }
Пример #6
0
        /// <summary>
        /// Begins the create process.
        /// </summary>
        public virtual IEntity Create()
        {
            IEntity entity = null;

            using (LogGroup logGroup = LogGroup.StartDebug("Creating a new entity."))
            {
                if (EnsureAuthorised())
                {
                    entity = CreateStrategy.New(Command.TypeName).Create();

                    ExecuteCreate(entity);
                }
            }

            return(entity);
        }
Пример #7
0
        public void Test_Create_Parent()
        {
            MockProjection projection = new MockProjection();

            projection.RequireAuthorisation = false;
            projection.Command = new CreateComandInfo(typeof(TestArticlePage).Name);

            TestArticle article = CreateStrategy.New <TestArticle>(false).Create <TestArticle>();

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

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

            CreateController controller = CreateController.New(projection);

            Assert.IsTrue(controller is CreateSubEntityController, "Invalid controller type: " + controller.GetType().ToString());

            CreateSubEntityController createSubEntityController = (CreateSubEntityController)controller;

            ISubEntity subEntity = (ISubEntity)createSubEntityController.Create(article.ID, String.Empty);

            Assert.IsNotNull(subEntity, "No sub entity returned.");

            Assert.IsTrue((subEntity is TestArticlePage), "Wrong type returned: " + subEntity.GetType().ToString());

            Assert.IsNotNull(subEntity.Parent, "No parent assigned to sub entity.");

            Assert.AreEqual(article.ID.ToString(), subEntity.Parent.ID.ToString(), "Parent ID doesn't match expected.");

            Assert.AreEqual(1, subEntity.Number, "Sub entity has wrong number.");

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


            ISubEntity subEntity2 = (ISubEntity)createSubEntityController.Create(Guid.Empty, article.UniqueKey);

            Assert.IsNotNull(subEntity2, "No sub entity returned.");

            Assert.IsTrue((subEntity2 is TestArticlePage), "Wrong type returned: " + subEntity.GetType().ToString());

            Assert.IsNotNull(subEntity2.Parent, "No parent assigned to sub entity.");

            Assert.AreEqual(article.ID.ToString(), subEntity2.Parent.ID.ToString(), "Parent ID doesn't match expected.");

            Assert.AreEqual(2, subEntity2.Number, "Sub entity has wrong number.");
        }
        public void Test_Update_AutoActivateReferences()
        {
            // Create the mock entities
            TestUser user = CreateStrategy.New <TestUser>(false).Create <TestUser>();

            user.ID        = Guid.NewGuid();
            user.FirstName = "Test";
            user.LastName  = "User";

            TestRole role = CreateStrategy.New <TestRole>(false).Create <TestRole>();

            role.ID   = Guid.NewGuid();
            role.Name = "Test Role";

            // Assign the user to the role
            user.Roles = new TestRole[] { role };

            // Save the entities
            SaveStrategy.New(role, false).Save(role);
            SaveStrategy.New(user, false).Save(user);

            // Retrieve the mock user from the data store
            TestUser foundUser = RetrieveStrategy.New <TestUser>(false).Retrieve <TestUser>("ID", user.ID);

            // Change a standard property value
            foundUser.FirstName = "Test2";

            // Update WITHOUT having activated the user manually
            // This update should automatically activate the user entity before updating and
            // should therefore persist the references
            UpdateStrategy.New(foundUser, false).Update(foundUser);

            // Retrieve the mock user again
            TestUser foundUser2 = RetrieveStrategy.New <TestUser>(false).Retrieve <TestUser>("ID", user.ID);

            // Manually activate the user
            foundUser2.Activate();

            // Assert that the referenced roles are found on the user which indicates
            // that the update strategy did automatically activate the entity and persist
            // the references
            Assert.IsNotNull(foundUser2.Roles, "Roles property is null.");
            Assert.AreEqual(1, foundUser2.Roles.Length, "Invalid number of roles assigned to user.");
        }
        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");
        }
        public void Test_Update()
        {
            TestArticle article = CreateStrategy.New <TestArticle>(false).Create <TestArticle>();

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

            Data.DataAccess.Data.Saver.Save(article);

            string newTitle = "Updated";

            article.Title = newTitle;

            IUpdateStrategy strategy = UpdateStrategy.New <TestArticle>(false);

            strategy.Update(article);

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

            Assert.IsNotNull(foundArticle);

            Assert.AreEqual(newTitle, foundArticle.Title, "Title wasn't updated.");
        }
        public void Test_Update_InactiveEntityCausesException()
        {
            // Create the mock entity
            TestUser user = CreateStrategy.New <TestUser>(false).Create <TestUser>();

            user.ID        = Guid.NewGuid();
            user.FirstName = "Test";
            user.LastName  = "User";

            // Save the entity
            SaveStrategy.New(user, false).Save(user);

            // Change a standard property value
            user.FirstName = "Test2";

            // Set AutoActivate to false otherwise it'll auto activate and won't be tested properly
            user.AutoActivate = false;

            // Set IsActivated to false
            user.IsActivated = false;

            // Update the inactive entity
            UpdateStrategy.New(user, false).Update(user);
        }
Пример #12
0
 public StrategyContext(CreateStrategy strategy)
 {
     this.strategy = strategy;
 }
        public void Test_New()
        {
            ICreateStrategy strategy = CreateStrategy.New("TestArticlePage", false);

            Assert.IsTrue(strategy is CreateSubEntityStrategy, "Wrong strategy type returned.");
        }
Пример #14
0
 /// <summary>
 ///   Инициализирует новый экземпляр класса <see cref="Creator" />.
 /// </summary>
 public Creator(IStoragekeeper storagekeeper, ILogger logger, CreateStrategy strategy = null)
 {
     this.storagekeeper = storagekeeper;
     Strategy           = strategy ?? new TiffCreatorStrategy();
     this.logger        = logger;
 }