public void GetAllModerationClassesFromDb_NoReads_ReturnsEmptyList()
        {
            var reader = Mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(false);

            var readerCreator = Mocks.DynamicMock<IDnaDataReaderCreator>();
            readerCreator.Stub(x => x.CreateDnaDataReader("getmoderationclasslist")).Return(reader);

            var cache = Mocks.DynamicMock<ICacheManager>();
            cache.Stub(x => x.Contains("")).Constraints(Is.Anything()).Return(false);
            var diag = Mocks.DynamicMock<IDnaDiagnostics>();

            Mocks.ReplayAll();

            var actual = new ModerationClassListCache(readerCreator, diag, cache, null, null); ;
            Assert.IsNotNull(actual);
            Assert.AreEqual(0, actual.GetObjectFromCache().ModClassList.Count);
        }
        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);

        }