Пример #1
0
        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"));
            
        }