public void UpdateTermsInDatabase_WithoutUser_ReturnsCorrectError() { var cacheManager = Mocks.DynamicMock<ICacheManager>(); var historyReader = Mocks.DynamicMock<IDnaDataReader>(); historyReader.Stub(x => x.GetInt32NullAsZero("historyId")).Return(1); historyReader.Stub(x => x.Read()).Return(true).Repeat.Once(); var creator = Mocks.DynamicMock<IDnaDataReaderCreator>(); creator.Stub(x => x.CreateDnaDataReader("addtermsfilterterm")).Return(Mocks.DynamicMock<IDnaDataReader>()); creator.Stub(x => x.CreateDnaDataReader("addtermsfilterupdate")).Return(historyReader); var getTermsReader = Mocks.DynamicMock<IDnaDataReader>(); getTermsReader.Stub(x => x.Read()).Return(false); creator.Stub(x => x.CreateDnaDataReader("gettermsbymodclassid")).Return(getTermsReader); Mocks.ReplayAll(); string reason = "a reason"; int userId = 0; Error expected = new Error { Type = "UpdateTermsInDatabase", ErrorMessage = "Valid user must be supplied" }; TermsLists target = new TermsLists(); target.Termslist.Add(TermsListTest.GetTermsList()); Error actual = target.UpdateTermsInDatabase(creator, cacheManager, reason, userId, true); Assert.AreEqual(expected.ErrorMessage, actual.ErrorMessage); Assert.AreEqual(expected.Type, actual.Type); creator.AssertWasNotCalled(x => x.CreateDnaDataReader("addtermsfilterterm")); creator.AssertWasNotCalled(x => x.CreateDnaDataReader("addtermsfilterupdate")); }
public void IsUpToDate_AlwaysReturnsTrue() { var target = new TermsLists(); Assert.IsFalse(target.IsUpToDate(null)); }
public void FilterListByTermIdTest() { var term = new TermDetails(){Id=1}; var termsList = new TermsList(1); termsList.Terms.Add(term); var target = new TermsLists(); target.Termslist.Add(TermsListTest.GetTermsList()); target.Termslist.Add(termsList); target.FilterListByTermId(1); Assert.AreEqual(1, target.Termslist.Count); }
public void UpdateTermsInDatabase_InvalidTerms_ReturnsCorrectError() { var cacheManager = Mocks.DynamicMock<ICacheManager>(); var historyReader = Mocks.DynamicMock<IDnaDataReader>(); historyReader.Stub(x => x.GetInt32NullAsZero("historyId")).Return(1); historyReader.Stub(x => x.Read()).Return(true).Repeat.Once(); var creator = Mocks.DynamicMock<IDnaDataReaderCreator>(); creator.Stub(x => x.CreateDnaDataReader("addtermsfilterterm")).Return(Mocks.DynamicMock<IDnaDataReader>()); creator.Stub(x => x.CreateDnaDataReader("addtermsfilterupdate")).Return(historyReader); var getTermsReader = Mocks.DynamicMock<IDnaDataReader>(); getTermsReader.Stub(x => x.Read()).Return(false); creator.Stub(x => x.CreateDnaDataReader("gettermsbymodclassid")).Return(getTermsReader); Mocks.ReplayAll(); string reason = "a reason"; int userId = 1; Error expected = new Error { Type = "UpdateTermForModClassId", ErrorMessage = "Term value cannot be empty./r/nTerm value cannot be empty." }; var termsList = new TermsList(1); termsList.Terms.Add(new TermDetails()); TermsLists target = new TermsLists(); target.Termslist.Add(termsList); target.Termslist.Add(termsList); Error actual = target.UpdateTermsInDatabase(creator, cacheManager, reason, userId, true); Assert.AreEqual(expected.ErrorMessage, actual.ErrorMessage); Assert.AreEqual(expected.Type, actual.Type); creator.AssertWasNotCalled(x => x.CreateDnaDataReader("addtermsfilterterm")); creator.AssertWasCalled(x => x.CreateDnaDataReader("addtermsfilterupdate")); }
public void UpdateTermsInDatabase_CorrectValue_ReturnsNullError() { var cacheManager = Mocks.DynamicMock<ICacheManager>(); var historyReader = Mocks.DynamicMock<IDnaDataReader>(); historyReader.Stub(x => x.GetInt32NullAsZero("historyId")).Return(1); historyReader.Stub(x => x.Read()).Return(true).Repeat.Once(); var creator = Mocks.DynamicMock<IDnaDataReaderCreator>(); creator.Stub(x => x.CreateDnaDataReader("addtermsfilterterm")).Return(Mocks.DynamicMock<IDnaDataReader>()); creator.Stub(x => x.CreateDnaDataReader("addtermsfilterupdate")).Return(historyReader); var getTermsReader = Mocks.DynamicMock<IDnaDataReader>(); getTermsReader.Stub(x => x.Read()).Return(false); creator.Stub(x => x.CreateDnaDataReader("gettermsbymodclassid")).Return(getTermsReader); Mocks.ReplayAll(); string reason = "a reason"; int userId = 1; Error expected = new Error { Type = "UpdateTermsInDatabase", ErrorMessage = "Unable to get history id" }; TermsLists target = new TermsLists(); target.Termslist.Add(TermsListTest.GetTermsList()); Error actual = target.UpdateTermsInDatabase(creator, cacheManager, reason, userId, true); Assert.IsNull(actual); creator.AssertWasCalled(x => x.CreateDnaDataReader("addtermsfilterterm")); creator.AssertWasCalled(x => x.CreateDnaDataReader("addtermsfilterupdate")); }
/// <summary> /// Checks the term is in the db correctly /// </summary> /// <param name="termStr"></param> private void CheckTermsInDB(string termStr) { var threadModId = 0; var modClassId = 0; var userId = 6; var termId = 0; using (FullInputContext inputcontext = new FullInputContext("")) { using (IDnaDataReader reader = inputcontext.CreateDnaDataReader("")) { reader.ExecuteDEBUGONLY("select * from threadmod where modid = (select max(modid) from threadmod)"); Assert.IsTrue(reader.Read()); Assert.AreEqual("Filtered terms: " + termStr, reader.GetStringNullAsEmpty("notes")); reader.ExecuteDEBUGONLY("select ID from TermsLookUp where term='" + termStr + "'"); Assert.IsTrue(reader.Read()); termId = reader.GetInt32("ID"); reader.ExecuteDEBUGONLY("select * from ForumModTermMapping where threadmodid = (select max(modid) from threadmod)"); Assert.IsTrue(reader.Read()); Assert.AreEqual(termId, reader.GetInt32("TermID")); threadModId = reader.GetInt32("ThreadModID"); reader.ExecuteDEBUGONLY("SELECT s.modclassid AS ModClassID FROM threadmod TM INNER JOIN sites S ON TM.SiteID = S.SiteID WHERE modid = (select max(modid) from threadmod) "); Assert.IsTrue(reader.Read()); modClassId = reader.GetInt32("ModClassID"); } } //ensure an update so that there is a reson in db var reason = "test reason"; IDnaDataReaderCreator creator = DnaMockery.CreateDatabaseReaderCreator(); var termsLists = new TermsLists(); var term = new TermDetails() { Value = termStr, Action = TermAction.Refer }; var termsList = new TermsList(modClassId); termsList.Terms.Add(term); termsLists.Termslist.Add(termsList); termsLists.UpdateTermsInDatabase(creator, CacheFactory.GetCacheManager(), reason, userId, true); //check reason is valid in output termsList = TermsList.GetTermsListByThreadModIdFromThreadModDB(creator, threadModId, true); Assert.AreEqual(termStr, termsList.Terms[0].Value); Assert.AreEqual(reason, termsList.Terms[0].Reason); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="reason"></param> /// <param name="termsLists"></param> /// <returns></returns> private TermsLists ValidateHistory(DnaTestURLRequest request, string reason, TermsLists termsLists) { IInputContext context = DnaMockery.CreateDatabaseInputContext(); using (IDnaDataReader reader = context.CreateDnaDataReader("")) { foreach (var termsList in termsLists.Termslist) { foreach(var term in termsList.Terms) { reader.ExecuteDEBUGONLY("select id from termslookup where term='" + term.Value + "'"); if (reader.Read()) { term.Id = reader.GetInt32NullAsZero("id"); } Assert.AreNotEqual(0, term.Id); } } var historyId = 0; reader.ExecuteDEBUGONLY("select top 1 * from TermsUpdateHistory order by updatedate desc"); if (reader.Read()) { historyId = reader.GetInt32NullAsZero("id"); Assert.AreNotEqual(0, historyId); Assert.AreEqual(reason, reader.GetStringNullAsEmpty("notes")); Assert.AreEqual(request.CurrentUserID, reader.GetInt32NullAsZero("userid")); } var termsListsClone = (TermsLists)termsLists.Clone(); reader.ExecuteDEBUGONLY("select * from TermsByModClassHistory where updateid=" + historyId + " order by modclassid"); while (reader.Read()) { //remove items from lists if in db var termsListFound = termsListsClone.Termslist.FirstOrDefault(x => x.ModClassId == reader.GetInt32NullAsZero("modclassid")); Assert.IsNotNull(termsListFound); var termFound = termsListFound.Terms.FirstOrDefault(x => x.Id == reader.GetInt32NullAsZero("termid") && (byte)x.Action == reader.GetTinyIntAsInt("actionid")); Assert.IsTrue(termsListFound.Terms.Remove(termFound)); if(termsListFound.Terms.Count == 0) { Assert.IsTrue(termsListsClone.Termslist.Remove(termsListFound)); } } Assert.AreEqual(0, termsListsClone.Termslist.Count); } return termsLists; }
public void PostToForum_ReferredForumTermsInPost_CorrectModeratedPost() { var forumTerm = "humbug123"; var processPreMod = false; var siteStatus = ModerationStatus.SiteStatus.UnMod; var forumStatus = ModerationStatus.ForumStatus.Reactive; var threadStatus = ModerationStatus.ForumStatus.Reactive; var userStatus = ModerationStatus.UserStatus.Standard; var expectedPostStatus = ModerationStatus.ForumStatus.PostMod; SetPermissions(siteStatus, forumStatus, threadStatus, userStatus, processPreMod); DnaTestURLRequest request = new DnaTestURLRequest(_siteName); //request.SetCurrentUserNormal(); //Add the terms to the terms update history ICacheManager _cache = CacheFactory.GetCacheManager(); IDnaDataReaderCreator creator = DnaMockery.CreateDatabaseReaderCreator(); var termsLists = new TermsLists(); var termList = new TermsList(_forumId, false, true); termList.Terms.Add(new TermDetails { Value = forumTerm, Action = TermAction.Refer }); termsLists.Termslist.Add(termList); Error error = termsLists.UpdateTermsInDatabase(creator, _cache, "Testing humbug123", 6, false); SendTermsSignal(); request = PostToForumWithException(request, "Testing terms with refferred item " + forumTerm + " post", DnaTestURLRequest.usertype.NORMALUSER); var xml = request.GetLastResponseAsXML(); CheckPostInModQueue(xml, expectedPostStatus, processPreMod); CheckPostInThread(xml, expectedPostStatus, processPreMod); CheckModerationTerms(forumTerm, creator); }
public void TermsFilterImportPage_AddMultipleTermsWithErrors_ReturnsErrors() { var term1 = Guid.NewGuid().ToString(); var term2 = Guid.NewGuid().ToString(); //set up data var reason = "this has a reason"; var termsLists = new TermsLists(); var termsList = new TermsList(1); termsList.Terms.Add(new TermDetails { Action = TermAction.Refer, Value = term1 }); termsList.Terms.Add(new TermDetails { Action = TermAction.Refer, Value = term2 }); termsLists.Termslist.Add(termsList); termsList = new TermsList(2); termsList.Terms.Add(new TermDetails { Action = TermAction.ReEdit, Value = term1 }); termsList.Terms.Add(new TermDetails { Action = TermAction.ReEdit, Value = term2 }); termsLists.Termslist.Add(termsList); string postText = termsLists.Termslist.Aggregate("", (current1, tmpTermsList) => tmpTermsList.Terms.Aggregate(current1, (current, term) => current + (term.Value + "\n"))); var postParams = new Queue<KeyValuePair<string, string>>(); postParams.Enqueue(new KeyValuePair<string, string>("reason", reason)); postParams.Enqueue(new KeyValuePair<string, string>("termtext", postText)); foreach (var tempTermsList in termsLists.Termslist) { postParams.Enqueue(new KeyValuePair<string, string>("action_modclassid_" + tempTermsList.ModClassId, (tempTermsList.Terms[0].Action).ToString())); } postParams.Enqueue(new KeyValuePair<string, string>("action_modclassid_" + 3, "100"));//invalid action var request = new DnaTestURLRequest(SiteName) { UseEditorAuthentication = true }; request.SetCurrentUserSuperUser(); request.RequestPage("termsfilterimport?action=UPDATETERMS&skin=purexml&ignorecache=1", postParams); //check correct error message returned ValidateError(request, "UPDATETERMINVALIDACTION", "Terms action invalid."); }
public void TermsFilterImportPage_AddMultipleTerms_PassesValidation() { var term1 = Guid.NewGuid().ToString(); var term2 = Guid.NewGuid().ToString(); //set up data var reason = "this has a reason"; var termsLists = new TermsLists(); var termsList = new TermsList(1); termsList.Terms.Add(new TermDetails { Action = TermAction.Refer, Value = term1 }); termsList.Terms.Add(new TermDetails { Action = TermAction.Refer, Value = term2 }); termsLists.Termslist.Add(termsList); termsList = new TermsList(2); termsList.Terms.Add(new TermDetails { Action = TermAction.ReEdit, Value = term1 }); termsList.Terms.Add(new TermDetails { Action = TermAction.ReEdit, Value = term2 }); termsLists.Termslist.Add(termsList); string postText = termsLists.Termslist.Aggregate("", (current1, tmpTermsList) => tmpTermsList.Terms.Aggregate(current1, (current, term) => current + (term.Value + "\n"))); var postParams = new Queue<KeyValuePair<string, string>>(); postParams.Enqueue(new KeyValuePair<string, string>("reason", reason)); postParams.Enqueue(new KeyValuePair<string, string>("termtext", postText)); foreach (var tempTermsList in termsLists.Termslist) { postParams.Enqueue(new KeyValuePair<string, string>("action_modclassid_" + tempTermsList.ModClassId, (tempTermsList.Terms[0].Action).ToString())); } var request = new DnaTestURLRequest(SiteName) { UseEditorAuthentication = true }; request.SetCurrentUserSuperUser(); request.RequestPage("termsfilterimport?action=UPDATETERMS&skin=purexml&ignorecache=1", postParams); ValidateResponse(request); //check correct error message returned ValidateOkResult(request, "TermsUpdateSuccess", "Terms updated successfully."); //check history table termsLists = ValidateHistory(request, reason, termsLists); //Check that all terms are actually associated ValidateTermAssociations(request, termsLists); }
public void TermsFilterImportPage_AddSingleTermWithoutTerms_ReturnsCorrectError() { //set up data var reason = "Not Empty";//empty for test var termsLists = new TermsLists(); var termsList = new TermsList(1); termsList.Terms.Add(new TermDetails { Action = TermAction.ReEdit, Value = "bollocks" }); termsLists.Termslist.Add(termsList); termsList = new TermsList(2); termsList.Terms.Add(new TermDetails { Action = TermAction.Refer, Value = "bollocks" }); termsLists.Termslist.Add(termsList); string postText = "";//breaks test var postParams = new Queue<KeyValuePair<string, string>>(); postParams.Enqueue(new KeyValuePair<string, string>("reason", reason)); postParams.Enqueue(new KeyValuePair<string, string>("termtext", postText)); foreach (var tempTermsList in termsLists.Termslist) { postParams.Enqueue(new KeyValuePair<string, string>("action_modclassid_" + tempTermsList.ModClassId, (tempTermsList.Terms[0].Action).ToString())); } var request = new DnaTestURLRequest(SiteName) { UseEditorAuthentication = true }; request.SetCurrentUserSuperUser(); request.RequestPage("termsfilterimport?action=UPDATETERMS&skin=purexml", postParams); ValidateError(request, "UPDATETERMMISSINGTERM", "Terms text must contain newline delimited terms."); }
public void TermsFilterImportPage_AddSingleTermWithoutReason_ReturnsCorrectError() { //set up data var reason = "";//empty for test var termsLists = new TermsLists(); var termsList = new TermsList(1); termsList.Terms.Add(new TermDetails { Action = TermAction.ReEdit, Value = "bollocks" }); termsLists.Termslist.Add(termsList); termsList = new TermsList(2); termsList.Terms.Add(new TermDetails { Action = TermAction.Refer, Value = "bollocks" }); termsLists.Termslist.Add(termsList); string postText = termsLists.Termslist.Aggregate("", (current1, tmpTermsList) => tmpTermsList.Terms.Aggregate(current1, (current, term) => current + (term.Value + "\n"))); var postParams = new Queue<KeyValuePair<string, string>>(); postParams.Enqueue(new KeyValuePair<string, string>("reason", reason)); postParams.Enqueue(new KeyValuePair<string, string>("termtext", postText)); foreach (var tempTermsList in termsLists.Termslist) { postParams.Enqueue(new KeyValuePair<string, string>("action_modclassid_" + tempTermsList.ModClassId, (tempTermsList.Terms[0].Action).ToString())); } var request = new DnaTestURLRequest(SiteName) { UseEditorAuthentication = true }; request.SetCurrentUserSuperUser(); request.RequestPage("termsfilterimport?action=UPDATETERMS&skin=purexml", postParams); ValidateError(request, "UPDATETERMMISSINGDESCRIPTION", "The import description cannot be empty."); }
public void TermsFilterImportPage_AddSingleReferTermToAll_PassesValidation() { //refresh mod classes SendSignal(); //set up data var reason = "this has a reason"; var term = "potato"; var action = TermAction.Refer; var moderationClasses = new ModerationClassListCache(DnaMockery.CreateDatabaseReaderCreator(), DnaDiagnostics.Default, CacheFactory.GetCacheManager(), null, null); var moderationClassList = moderationClasses.GetObjectFromCache(); var termsLists = new TermsLists(); foreach (var modClass in moderationClassList.ModClassList) { var termsList = new TermsList { ModClassId = modClass.ClassId }; termsList.Terms.Add(new TermDetails { Value = term, Action = action }); termsLists.Termslist.Add(termsList); } Assert.AreNotEqual(0, termsLists.Termslist.Count); var postParams = new Queue<KeyValuePair<string, string>>(); postParams.Enqueue(new KeyValuePair<string, string>("reason", reason)); postParams.Enqueue(new KeyValuePair<string, string>("termtext", term)); postParams.Enqueue(new KeyValuePair<string, string>("action_modclassid_all", action.ToString())); var request = new DnaTestURLRequest(SiteName) { UseEditorAuthentication = true }; request.SetCurrentUserSuperUser(); request.RequestPage("termsfilterimport?action=UPDATETERMS&skin=purexml", postParams); ValidateResponse(request); //check correct error message returned ValidateOkResult(request, "TermsUpdateSuccess", "Term updated successfully."); //check history table termsLists = ValidateHistory(request, reason, termsLists); //Check that all terms are actually associated ValidateTermAssociations(request, termsLists); }
public void PostToForum_BlockedForumTermsInPost_CorrectModeratedPost() { var forumTerm = "bum1234"; var processPreMod = false; var siteStatus = ModerationStatus.SiteStatus.UnMod; var forumStatus = ModerationStatus.ForumStatus.Reactive; var threadStatus = ModerationStatus.ForumStatus.Reactive; var userStatus = ModerationStatus.UserStatus.Standard; //var expectedPostStatus = ModerationStatus.ForumStatus.PostMod; SetPermissions(siteStatus, forumStatus, threadStatus, userStatus, processPreMod); DnaTestURLRequest request = new DnaTestURLRequest(_siteName); //request.SetCurrentUserNormal(); //Add the terms to the terms update history ICacheManager _cache = CacheFactory.GetCacheManager(); IDnaDataReaderCreator creator = DnaMockery.CreateDatabaseReaderCreator(); var termsLists = new TermsLists(); var termList = new TermsList(_forumId, false, true); termList.Terms.Add(new TermDetails { Value = forumTerm, Action = TermAction.ReEdit }); termsLists.Termslist.Add(termList); Error error = termsLists.UpdateTermsInDatabase(creator, _cache, "Testing bum1234", 6, false); SendTermsSignal(); request = PostToForumWithException(request, "Testing terms with refferred item " + forumTerm + " post", DnaTestURLRequest.usertype.NORMALUSER); var xml = request.GetLastResponseAsXML(); IInputContext context = DnaMockery.CreateDatabaseInputContext(); using (IDnaDataReader dataReader = context.CreateDnaDataReader("")) { dataReader.ExecuteDEBUGONLY("select * from ForumModTermMapping where ThreadModID = (select max(modid) from threadmod where notes like '%" + forumTerm + "%')"); Assert.IsFalse(dataReader.Read()); } }
public void PostToForum_ReferredForumReferredModClassTermsInPost_CorrectModeratedPost() { var forumTerm = "potato"; var processPreMod = false; var siteStatus = ModerationStatus.SiteStatus.UnMod; var forumStatus = ModerationStatus.ForumStatus.Reactive; var threadStatus = ModerationStatus.ForumStatus.Reactive; var userStatus = ModerationStatus.UserStatus.Standard; var expectedPostStatus = ModerationStatus.ForumStatus.PostMod; SetPermissions(siteStatus, forumStatus, threadStatus, userStatus, processPreMod); DnaTestURLRequest request = new DnaTestURLRequest(_siteName); //request.SetCurrentUserNormal(); new TermsFilterImportPageTests().TermsFilterImportPage_AddSingleReferTermToAll_PassesValidation(); SendTermsSignal(); //Add the terms to the terms update history ICacheManager _cache = CacheFactory.GetCacheManager(); IDnaDataReaderCreator creator = DnaMockery.CreateDatabaseReaderCreator(); var termsLists = new TermsLists(); var termList = new TermsList(_forumId, false, true); termList.Terms.Add(new TermDetails { Value = forumTerm, Action = TermAction.Refer }); termsLists.Termslist.Add(termList); Error error = termsLists.UpdateTermsInDatabase(creator, _cache, "Testing potato", 6, false); SendTermsSignal(); request = PostToForumWithException(request, "Testing terms with refferred item " + forumTerm + " post", DnaTestURLRequest.usertype.NORMALUSER); var xml = request.GetLastResponseAsXML(); CheckPostInModQueue(xml, expectedPostStatus, processPreMod); CheckPostInThread(xml, expectedPostStatus, processPreMod); var termId = 0; var threadModId = 0; IInputContext context = DnaMockery.CreateDatabaseInputContext(); using (IDnaDataReader dataReader = context.CreateDnaDataReader("")) { dataReader.ExecuteDEBUGONLY("select ID from TermsLookUp where term = '" + forumTerm + "'"); Assert.IsTrue(dataReader.Read()); termId = dataReader.GetInt32("ID"); dataReader.ExecuteDEBUGONLY("select * from ForumModTermMapping where ThreadModID = (select max(modid) from threadmod)"); Assert.IsTrue(dataReader.Read()); Assert.AreEqual(termId, dataReader.GetInt32("TermID")); threadModId = dataReader.GetInt32("ThreadModID"); } var terms = TermsList.GetTermsListByThreadModIdFromThreadModDB(creator, threadModId, true); Assert.AreEqual(forumTerm, terms.Terms[0].Value); Assert.AreEqual("this has a reason", terms.Terms[0].Reason); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="termsLists"></param> private void ValidateTermAssociations(DnaTestURLRequest request, TermsLists termsLists) { XmlDocument doc; var termIds = new List<int>(); foreach (var tmpList in termsLists.Termslist) { termIds.AddRange(tmpList.Terms.Select(term => term.Id)); } //strip duplicates termIds = termIds.Distinct().ToList(); //check the term association foreach (var id in termIds) { var termsListsClone = (TermsLists)termsLists.Clone(); termsListsClone.FilterListByTermId(id); request.RequestPage(String.Format("termsfilterimport?s_termid={0}&skin=purexml&ignorecache=1", id)); doc = request.GetLastResponseAsXML(); ValidateResponse(request); var termsListNodes = doc.SelectNodes("//H2G2/TERMSLISTS/TERMSLIST"); Assert.IsNotNull(termsListNodes); foreach(XmlNode termsListNode in termsListNodes) { var termsList = termsListsClone.Termslist.FirstOrDefault( x => x.ModClassId == Int32.Parse(termsListNode.Attributes["MODCLASSID"].Value)); Assert.IsNotNull(termsList); Assert.AreEqual(id, termsList.Terms[0].Id); termsListsClone.Termslist.Remove(termsList); } //check if all elements removed Assert.AreEqual(0, termsListsClone.Termslist.Count); } }
/// <summary> /// Checks the parameters and updates the term passed in /// </summary> /// <returns></returns> private BaseResult UpdateTerm() { var forumId = InputContext.GetParamIntOrZero("forumid", "Forum ID"); if (forumId == 0) { return new Error { Type = "UPDATETERM", ErrorMessage = "Forum ID cannot be 0." }; } var termText = InputContext.GetParamStringOrEmpty("termtext", "the text of the term"); string[] terms = termText.Split('\n'); terms = terms.Where(x => x != String.Empty).Distinct().ToArray(); if (terms.Length == 0) { return new Error { Type = "UPDATETERMMISSINGTERM", ErrorMessage = "Terms text must contain newline delimited terms." }; } var termReason = InputContext.GetParamStringOrEmpty("reason", "Reason for the term added.").Trim(); if (string.IsNullOrEmpty(termReason)) { return new Error { Type = "UPDATETERMMISSINGDESCRIPTION", ErrorMessage = "Term reason cannot be empty." }; } string actionParam = string.Format("action_forumid_all"); TermAction termAction; if (Enum.IsDefined(typeof(TermAction), InputContext.GetParamStringOrEmpty(actionParam, "Forum action value"))) { termAction = (TermAction)Enum.Parse(typeof(TermAction), InputContext.GetParamStringOrEmpty(actionParam, "Forum action value")); } else { return new Error { Type = "UPDATETERMINVALIDACTION", ErrorMessage = "Terms action invalid." }; } var termsLists = new TermsLists(); var termList = new TermsList(forumId, false, true); foreach (var term in terms) { termList.Terms.Add(new TermDetails { Value = term, Action = termAction }); } termsLists.Termslist.Add(termList); BaseResult error = termsLists.UpdateTermsInDatabase(InputContext.CreateDnaDataReaderCreator(), _cache, termReason.Trim(), InputContext.ViewingUser.UserID, false); if (error == null) { //Send email to the distribution list SendTermUpdateEmail(terms, forumId, termReason.Trim(), termAction, InputContext.ViewingUser.UserID); return new Result("TermsUpdateSuccess", String.Format("{0} updated successfully.", terms.Length == 1 ? "Term" : "Terms")); } return error; }
/// <summary> /// Checks the parameters and updates the term passed in /// </summary> /// <returns></returns> private BaseResult UpdateTerms() { string reason = InputContext.GetParamStringOrEmpty("reason", "The reason for the change"); if (reason == string.Empty) { return new Error {Type = "UPDATETERMMISSINGDESCRIPTION", ErrorMessage = "The import description cannot be empty."}; } string termText = InputContext.GetParamStringOrEmpty("termtext", "the text of the term"); string[] terms = termText.Split('\n'); terms = terms.Where(x => x != String.Empty).Distinct().ToArray(); if (terms.Length == 0) { return new Error {Type = "UPDATETERMMISSINGTERM", ErrorMessage = "Terms text must contain newline delimited terms."}; } var moderationClassList = ModerationClassListCache.GetObject(); var termsLists = new TermsLists(); foreach (var modClass in moderationClassList.ModClassList) { //get all action or just the one for the specific mod class string actionParam = string.Format("action_modclassid_all"); if(!InputContext.DoesParamExist(actionParam, "Modclass action value")) { actionParam = string.Format("action_modclassid_{0}", modClass.ClassId); if (!InputContext.DoesParamExist(actionParam, "Modclass action value")) continue; } //parse term id TermAction termAction; if (Enum.IsDefined(typeof(TermAction), InputContext.GetParamStringOrEmpty(actionParam, "Modclass action value"))) { termAction = (TermAction) Enum.Parse(typeof(TermAction), InputContext.GetParamStringOrEmpty(actionParam, "Modclass action value")); } else { return new Error {Type = "UPDATETERMINVALIDACTION", ErrorMessage = "Terms action invalid."}; } var termsList = new TermsList(modClass.ClassId); foreach (var term in terms) { termsList.Terms.Add(new TermDetails { Value = term, Action = termAction }); } termsLists.Termslist.Add(termsList); } BaseResult error = termsLists.UpdateTermsInDatabase(AppContext.ReaderCreator, _cache, reason, InputContext.ViewingUser.UserID, true); if (error == null) { return new Result("TermsUpdateSuccess", String.Format("{0} updated successfully.", terms.Length==1?"Term":"Terms")); } return error; }