public void HandleSignal_CorrectSignal_ReturnsValidObject() { var signalType = "recache-terms"; var cacheObj = GetProfanityCacheObject(); var modclassId = new Queue<int>(); modclassId.Enqueue(1); modclassId.Enqueue(2); modclassId.Enqueue(2); var forumId = new Queue<int>(); forumId.Enqueue(1); forumId.Enqueue(2); forumId.Enqueue(2); var profanity = new Queue<string>(); profanity.Enqueue("hello"); profanity.Enqueue("hello1"); profanity.Enqueue("hello"); var refer = new Queue<byte>(); refer.Enqueue(1); refer.Enqueue(0); refer.Enqueue(1); var cache = _mocks.DynamicMock<ICacheManager>(); cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey("LASTUPDATE"))).Return(false).Repeat.Once(); cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey())).Return(true).Repeat.Once(); cache.Stub(x => x.GetData(ProfanityFilter.GetCacheKey())).Return(cacheObj).Repeat.Once(); var reader = _mocks.DynamicMock<IDnaDataReader>(); reader.Stub(x => x.Read()).Return(true).Repeat.Times(3); reader.Stub(x => x.GetInt32("ModClassID")).Return(0).WhenCalled(x => x.ReturnValue = modclassId.Dequeue()); reader.Stub(x => x.GetInt32("ForumID")).Return(0).WhenCalled(x => x.ReturnValue = forumId.Dequeue()); reader.Stub(x => x.GetStringNullAsEmpty("Profanity")).Return("").WhenCalled(x => x.ReturnValue = profanity.Dequeue()); reader.Stub(x => x.GetByte("Refer")).Return(1).WhenCalled(x => x.ReturnValue = refer.Dequeue()); var creator = _mocks.DynamicMock<IDnaDataReaderCreator>(); creator.Stub(x => x.CreateDnaDataReader("getallprofanities")).Return(reader); var diag = _mocks.DynamicMock<IDnaDiagnostics>(); _mocks.ReplayAll(); var profanityObj = new ProfanityFilter(creator, diag, cache, null, null); creator.AssertWasNotCalled(x => x.CreateDnaDataReader("getallprofanities")); Assert.AreEqual(cacheObj.ProfanityClasses.ModClassProfanities.Count, ProfanityFilter.GetObject().GetObjectFromCache().ProfanityClasses.ModClassProfanities.Keys.Count); Assert.AreEqual(cacheObj.ProfanityClasses.ForumProfanities.Count, ProfanityFilter.GetObject().GetObjectFromCache().ProfanityClasses.ForumProfanities.Keys.Count); Assert.IsTrue(profanityObj.HandleSignal(signalType, null)); creator.AssertWasCalled(x => x.CreateDnaDataReader("getallprofanities")); }