Example #1
0
        public void adds_item_to_cache()
        {
            MongoDbApiOutputCache.Add(_user.Id.ToString(), _user, DateTime.Now.AddSeconds(60));

            var item = MongoCollection.FindAllAs <CachedItem>().FirstOrDefault();

            Assert.That(item, Is.Not.Null);
        }
Example #2
0
        public void added_item_stored_with_supplied_key()
        {
            var key = _user.Id.ToString();

            MongoDbApiOutputCache.Add(key, _user, DateTime.Now.AddSeconds(60));

            var item = MongoCollection.FindAllAs <CachedItem>().FirstOrDefault();

            Assert.That(item.Key, Is.EqualTo(key));
        }
Example #3
0
        public void adding_item_with_long_key_throws_exception()
        {
            var key = "";

            for (var i = 0; i < 100; i++)
            {
                key += Guid.NewGuid().ToString();
            }

            var exception = Assert.Throws <KeyTooLongException>(() => MongoDbApiOutputCache.Add(key, _user, DateTime.Now.AddSeconds(60)));

            Assert.That(exception.Message, Is.EqualTo("The key provided was over the 1024 bytes maximum for an indexed MongoDb field"));
        }
        public void items_are_deleted_from_database_automatically_when_expired()
        {
            var mongoDbApiOutputCache = new MongoDbApiOutputCache(MongoDatabase);

            mongoDbApiOutputCache.Add("something", "a value", DateTime.Now.AddMilliseconds(250));

            //wait just over a minute....
            Thread.Sleep(61000);

            //get the thing directly from mongo
            var resultDirectlyFromMongo = MongoCollection.FindOneAs<CachedItem>(Query.EQ("_id", "something"));

            Assert.That(resultDirectlyFromMongo, Is.Null);
        }
        public void items_are_deleted_from_database_automatically_when_expired()
        {
            var mongoDbApiOutputCache = new MongoDbApiOutputCache(MongoDatabase);

            mongoDbApiOutputCache.Add("something", "a value", DateTime.Now.AddMilliseconds(250));

            //wait just over a minute....
            Thread.Sleep(61000);

            //get the thing directly from mongo
            var resultDirectlyFromMongo = MongoCollection.FindOneAs <CachedItem>(Query.EQ("_id", "something"));

            Assert.That(resultDirectlyFromMongo, Is.Null);
        }
Example #6
0
        public void adding_item_with_duplicate_key_updates_original()
        {
            MongoDbApiOutputCache.Add("user", _user, DateTime.Now.AddSeconds(60));

            var differentUser = new UserFixture {
                Name = "Simon"
            };

            MongoDbApiOutputCache.Add("user", differentUser, DateTime.Now.AddSeconds(60));

            Assert.That(MongoCollection.Count(), Is.EqualTo(1));

            var item = JsonSerializer.DeserializeFromString <UserFixture>(MongoCollection.FindOneAs <CachedItem>().Value);

            Assert.That(item, Is.Not.Null);
            Assert.That(item.Id, Is.EqualTo(differentUser.Id));
            Assert.That(item.Name, Is.EqualTo(differentUser.Name));
        }
Example #7
0
        public void added_item_stored_with_expiry()
        {
            var expiration = DateTime.Now.AddSeconds(60);

            MongoDbApiOutputCache.Add(_user.Id.ToString(), _user, expiration);

            var item         = MongoCollection.FindOneAs <CachedItem>();
            var itemExpireAt = item.ExpireAt;

            //todo: would be good to check they are the same value.. without this rubbish!
            //something like:
            //Assert.That(DateTime.Compare(item.ExpireAt, new DateTime(expiration.Ticks)), Is.EqualTo(0));

            Assert.That(expiration.Day, Is.EqualTo(itemExpireAt.Day));
            Assert.That(expiration.Month, Is.EqualTo(itemExpireAt.Month));
            Assert.That(expiration.Year, Is.EqualTo(itemExpireAt.Year));
            Assert.That(expiration.Hour, Is.EqualTo(itemExpireAt.Hour));
            Assert.That(expiration.Minute, Is.EqualTo(itemExpireAt.Minute));
            Assert.That(expiration.Second, Is.EqualTo(itemExpireAt.Second));
            Assert.That(expiration.Millisecond, Is.EqualTo(itemExpireAt.Millisecond));
        }