var RedisDocumentStore = require('../lib/redis_document_store');

describe('redis_document_store', function() {

  describe('set', function() {

    it('should be able to set a key and have an expiration set', function() {
      var store = new RedisDocumentStore({ expire: 10 });
      runs(function() {
        var _this = this;
        store.set('hello1', 'world', function(worked) {
          _this.result = worked; 
        });
      });
      waitsFor(function() {
        return typeof(this.result) === 'boolean';
      });
      runs(function() {
        var _this = this;
        RedisDocumentStore.client.ttl('hello1', function(err, res) {
          expect(res).toBeGreaterThan(1);
          _this.done = true;
        });
      });
      waitsFor(function() {
        return this.done;
      });
    });

    it('should not set an expiration when told not to', function() {
      var store = new RedisDocumentStore({ expire: 10 });
      runs(function() {
        var _this = this;
        store.set('hello2', 'world', function(worked) {
          _this.result = worked; 
        }, true);
      });
      waitsFor(function() {
        return typeof(this.result) === 'boolean';
      });
      runs(function() {
        var _this = this;
        RedisDocumentStore.client.ttl('hello2', function(err, res) {
          expect(res).toBe(-1);
          _this.done = true;
        });
      });
      waitsFor(function() {
        return this.done;
      });
    });

    it('should not set an expiration when expiration is off', function() {
      var store = new RedisDocumentStore({ expire: false });
      runs(function() {
        var _this = this;
        store.set('hello3', 'world', function(worked) {
          _this.result = worked; 
        });
      });
      waitsFor(function() {
        return typeof(this.result) === 'boolean';
      });
      runs(function() {
        var _this = this;
        RedisDocumentStore.client.ttl('hello3', function(err, res) {
          expect(res).toBe(-1);
          _this.done = true;
        });
      });
      waitsFor(function() {
        return this.done;
      });
    });

  });

});

@@ -63,54 +63,331 @@
 );%0A%0A
-describe('redis_document_store', function() %7B%0A
+var winston = require('winston');%0Awinston.remove(winston.transports.Console);%0A%0Adescribe('redis_document_store', function() %7B%0A%0A  /* reconnect to redis on each test */%0A  afterEach(function() %7B%0A    if (RedisDocumentStore.client) %7B%0A      RedisDocumentStore.client.quit();%0A      RedisDocumentStore.client = false;%0A    %7D%0A  %7D);%0A  
 %0A  d

Clean up redis test to exit properly