public void Test_CreateUpdateDelete() { int count = this.Random.Next(3, 10); List <string> names = new List <string>(); List <string> names2 = new List <string>(); ICMSContentLevelNode topContentLevelNode; Dictionary <int, ICMSContentLevelNode> lookup; #region create for (int i = 0; i < count; i++) { names.Add("__ &\"'%<tag></tag>TestCat " + i + " " + this.Random.Next(1000, 100000000)); } CMSContentLevelNodeManager manager = new CMSContentLevelNodeManager(this.DataStore); int contentLevelNodeId; Assert.IsTrue(manager.CreateContentLevelNodes(names, null, null, out contentLevelNodeId)); lookup = manager.GetContentLevelNodes(); Assert.IsTrue(lookup.ContainsKey(contentLevelNodeId)); topContentLevelNode = lookup[contentLevelNodeId]; int index; int lastIndex = 0; foreach (string split in topContentLevelNode.BreadCrumbsSplitIndexes.Split(',')) { index = int.Parse(split); names2.Add(topContentLevelNode.BreadCrumbs.Substring(lastIndex, index)); lastIndex += index; } Assert.AreEqual(names.Count, names2.Count); for (int i = 0; i < count; i++) { Assert.AreEqual(names[i], names2[i]); } #endregion #region update List <ICMSContentLevelNode> allNodes; ICMSContentLevelNode current; allNodes = new List <ICMSContentLevelNode>(); current = topContentLevelNode; while (current.Parent != null) { allNodes.Insert(0, current); current = current.Parent; } allNodes.Insert(0, current); string newName = "some &\"'%: name " + this.Random.Next(100, 1000); int changedLevel = this.Random.Next(0, count); int renamedContentLevelNodeId = allNodes[changedLevel].ContentLevelNodeId; Assert.IsTrue( manager.RenameContentLevelNode( renamedContentLevelNodeId , newName) ); lookup = manager.GetContentLevelNodes(); Assert.IsTrue(lookup.ContainsKey(contentLevelNodeId)); topContentLevelNode = lookup[contentLevelNodeId]; allNodes = new List <ICMSContentLevelNode>(); current = topContentLevelNode; while (current.Parent != null) { allNodes.Insert(0, current); current = current.Parent; } allNodes.Insert(0, current); lastIndex = 0; names2 = new List <string>(); foreach (string split in topContentLevelNode.BreadCrumbsSplitIndexes.Split(',')) { index = int.Parse(split); names2.Add(topContentLevelNode.BreadCrumbs.Substring(lastIndex, index)); lastIndex += index; } Assert.AreEqual(names.Count, names2.Count); for (int i = 0; i < count; i++) { if (i == changedLevel) { Assert.AreEqual(HttpUtility.HtmlEncode(newName), names2[i]); } else { Assert.AreEqual(names[i], names2[i]); } } #endregion #region delete Assert.IsTrue(manager.DeleteContentLevelNode(allNodes[0].ContentLevelNodeId)); lookup = manager.GetContentLevelNodes(); Assert.IsFalse(lookup.ContainsKey(contentLevelNodeId)); #endregion }
public void Test_CreateUpdateDeleteArticle() { IUserBasic userBasic = Test_WorkmateMembershipProvider.CreateUser(this.DataStore, Workmate.Components.InstanceContainer.ApplicationSettings, this.Application, this.DummyDataManager); MessageBoard messageBoard = Test_MessageBoards.Create(this.DataStore, Workmate.Components.InstanceContainer.ApplicationSettings, this.Application, this.Random); ArticleGroup articleGroup = Test_ArticleGroups.Create(this.DataStore, Workmate.Components.InstanceContainer.ApplicationSettings, this.Application, this.Random); ArticleGroupThread articleGroupThread = Test_ArticleGroupThreads.Create(this.DataStore, Workmate.Components.InstanceContainer.ApplicationSettings, this.Application, articleGroup, this.Random); ArticleManager manager = new ArticleManager(this.DataStore); Article record = Create(this.DataStore, Workmate.Components.InstanceContainer.ApplicationSettings, this.Application, userBasic , articleGroupThread, messageBoard, this.Random); MessageBoardThreadManager messageBoardThreadManager = new MessageBoardThreadManager(this.DataStore); Article recordToCompare; for (int i = 0; i < this.DefaultUpdateTestIterations; i++) { PopulateWithRandomValues(record, this.DummyDataManager, this.Random); recordToCompare = record; manager.Update(record); record = manager.GetArticle(record.ArticleId); string errors = string.Empty; // TODO (Roman): relax datetime comparisons Assert.IsTrue(DebugUtility.ArePropertyValuesEqual(record, recordToCompare, out errors), errors); Trace.WriteLine("Update test successfull."); } IArticleModel articleModel = manager.GetArticleModel(record.ArticleId); Assert.AreEqual(0, articleModel.TotalComments); #region messageboards MessageBoardThread messageBoardThread = messageBoardThreadManager.GetMessageBoardThread(articleModel.MessageBoardThreadId); Assert.IsNotNull(messageBoardThread); MessageManager messageManager = new MessageManager(this.DataStore); messageManager.Create(new Message(userBasic, messageBoardThread, "Test Message Subject 1", "Body1")); messageManager.Create(new Message(userBasic, messageBoardThread, "Test Message Subject 2", "Body2")); Message message = new Message(userBasic, messageBoardThread, "Test Message Subject 3", "Body3"); messageManager.Create(message); articleModel = manager.GetArticleModel(record.ArticleId); Assert.AreEqual(3, articleModel.TotalComments); Assert.AreEqual(DataRepositoryActionStatus.Success, messageManager.Delete(message).Status); articleModel = manager.GetArticleModel(record.ArticleId); Assert.AreEqual(2, articleModel.TotalComments); #endregion #region attachments IArticleAttachmentModel articleAttachmentModel = AddAttachment(this.DataStore, this.Application.ApplicationId, articleModel, userBasic, this.Random); AddAttachment(this.DataStore, this.Application.ApplicationId, articleModel, userBasic, this.Random); DeleteAttachment(this.DataStore, articleModel, articleAttachmentModel.AttachmentId, this.Random); AddAttachment(this.DataStore, this.Application.ApplicationId, articleModel, userBasic, this.Random); AddAttachment(this.DataStore, this.Application.ApplicationId, articleModel, userBasic, this.Random); articleAttachmentModel = AddAttachment(this.DataStore, this.Application.ApplicationId, articleModel, userBasic, this.Random); DeleteAttachment(this.DataStore, articleModel, articleAttachmentModel.AttachmentId, this.Random); AddAttachment(this.DataStore, this.Application.ApplicationId, articleModel, userBasic, this.Random); #endregion #region contentnodelevels if (articleModel.ContentLevelNodeId.HasValue) { string newName = "Some Name" + this.Random.Next(10000, 100000); CMSContentLevelNodeManager contentLevelNodeManager = new CMSContentLevelNodeManager(this.DataStore); contentLevelNodeManager.RenameContentLevelNode(articleModel.ContentLevelNodeId.Value, newName); articleModel = manager.GetArticleModel(record.ArticleId); Assert.AreEqual(articleModel.ContentLevelNodes[articleModel.ContentLevelNodes.Count - 1], newName); } #endregion Delete(this.DataStore, record); Test_ArticleGroups.Delete(this.DataStore, articleGroup); Assert.IsNull(messageBoardThreadManager.GetMessageBoardThread(articleModel.MessageBoardThreadId)); ArticleAttachmentManager articleAttachmentManager = new ArticleAttachmentManager(this.DataStore); Assert.IsEmpty(articleAttachmentManager.GetArticleAttachments(articleModel.ArticleId)); }