UNPKG

taggable-via-redis

Version:

Add tagging functionality backed by Redis. This is a rewrite of sintaxi's node-redis-tag.

140 lines (124 loc) 4.46 kB
// Generated by CoffeeScript 1.6.3 /* # test for taggabler_via_redis */ (function() { var MODULE_NAME, REDIS_CLIENT, TAGS_COFFEESCRIPT, TAGS_JQUERY, TAGS_NODE, TAGS_NODE2, TAGS_RAILS, USER_27, USER_42, should, taggable; should = require("should"); taggable = require("../taggabler_via_redis"); REDIS_CLIENT = null; USER_27 = "user/27"; USER_42 = "user/42"; TAGS_NODE = "javascript,server,programming".split(",").sort(); TAGS_JQUERY = "javascript,client,programming".split(",").sort(); TAGS_RAILS = "ruby,programming".split(",").sort(); TAGS_COFFEESCRIPT = "javascript,client,server,programming".split(",").sort(); TAGS_NODE2 = "javascript,server,programming,async,joyent".split(",").sort(); MODULE_NAME = "book"; describe("scope add tests", function() { before(function(done) { var redis; redis = require("redis"); REDIS_CLIENT = redis.createClient(); REDIS_CLIENT.flushall(); taggable.init(REDIS_CLIENT); return setTimeout(done, 1800); }); return describe("taggabler_via_redis", function() { it("should set tags on book 1", function(done) { taggable.set(MODULE_NAME, 1, TAGS_NODE, USER_27, function(err) { should.not.exist(err); done(); }); }); it("should get tags for book 1", function(done) { taggable.get(MODULE_NAME, 1, USER_27, function(err, rsp) { should.not.exist(err); rsp.sort().should.containDeep(TAGS_NODE); done(); }); }); it("should set tags on book 2", function(done) { taggable.set(MODULE_NAME, 2, TAGS_JQUERY, USER_27, function(err) { should.not.exist(err); done(); }); }); it("should get tags for book 2", function(done) { taggable.get(MODULE_NAME, 2, USER_27, function(err, rsp) { should.not.exist(err); rsp.sort().should.containDeep(TAGS_JQUERY); done(); }); }); it("should set tags on book 3", function(done) { taggable.set(MODULE_NAME, 3, TAGS_RAILS, USER_42, function(err) { should.not.exist(err); done(); }); }); it("should get tags for book 3", function(done) { taggable.get(MODULE_NAME, 3, USER_42, function(err, rsp) { should.not.exist(err); rsp.sort().should.containDeep(TAGS_RAILS); done(); }); }); it("should set tags on book 4", function(done) { taggable.set(MODULE_NAME, 4, TAGS_COFFEESCRIPT, USER_42, function(err) { should.not.exist(err); done(); }); }); it("should get tags for book 4", function(done) { taggable.get(MODULE_NAME, 4, USER_42, function(err, rsp) { should.not.exist(err); rsp.sort().should.containDeep(TAGS_COFFEESCRIPT); done(); }); }); it("should get empty array if book has not been tagged", function(done) { taggable.get(MODULE_NAME, 99, USER_42, function(err, rsp) { should.not.exist(err); rsp.should.be.empty; done(); }); }); it("should find books from tag", function(done) { taggable.find(MODULE_NAME, "client", USER_42, function(err, rsp) { should.not.exist(err); rsp.should.containDeep(["4"]); done(); }); }); it("should get empty array for non existing tag", function(done) { taggable.find(MODULE_NAME, "maytag", USER_42, function(err, rsp) { should.not.exist(err); rsp.should.be.empty; done(); }); }); it("should get all items if no tags specified", function(done) { taggable.find(MODULE_NAME, [], USER_42, function(err, rsp) { should.not.exist(err); rsp.should.be.empty; done(); }); }); it("should get most popular tags from user 42", function(done) { taggable.popular(MODULE_NAME, 10, USER_42, function(err, rsp) { should.not.exist(err); rsp[0].should.containDeep(["programming", 2]); done(); }); }); return it("should get most popular tags globally", function(done) { taggable.popular(MODULE_NAME, 10, function(err, rsp) { should.not.exist(err); rsp[0].should.containDeep(["programming", 4]); done(); }); }); }); }); }).call(this);