From 1b2c568ac6f92f242b21e043ea54992a3f5364b6 Mon Sep 17 00:00:00 2001
From: Jonathan Cremin <jonathan@crem.in>
Date: Thu, 4 Dec 2014 21:00:34 +0000
Subject: [PATCH] Add deezer tests

---
 lib/services/deezer.js  |  8 +++---
 test/services/deezer.js | 57 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/lib/services/deezer.js b/lib/services/deezer.js
index aa73867..c3ba5b4 100644
--- a/lib/services/deezer.js
+++ b/lib/services/deezer.js
@@ -78,12 +78,10 @@ module.exports.search = function(data, next) {
 
 module.exports.parseUrl = function(url, next) {
   var deferred = Q.defer();
-  var matches = parse(url).path.match(/\/albums[\/]+([^\/]+)(\/tracks\/)?([^\/]+)?/);
+  var matches = parse(url).path.match(/\/(album|track)[\/]+([^\/]+)/);
 
-  if (matches && matches[3]) {
-    module.exports.lookupId(matches[3]).then(deferred.resolve);
-  } else if (matches && matches[1]) {
-    module.exports.lookupId(matches[1]).then(deferred.resolve);
+  if (matches && matches[2]) {
+    module.exports.lookupId(matches[2], matches[1]).then(deferred.resolve);
   }
   return deferred.promise;
 }
diff --git a/test/services/deezer.js b/test/services/deezer.js
index e69de29..6e27fe0 100644
--- a/test/services/deezer.js
+++ b/test/services/deezer.js
@@ -0,0 +1,57 @@
+"use strict";
+var assert = require("assert");
+var should = require('should');
+
+var deezer = require("../../lib/services/deezer");
+
+describe('Deezer', function(){
+  describe('lookupId', function(){
+    it('should find album by ID', function(done){
+      deezer.lookupId("302127", "album").then(function(result) {
+        result.name.should.equal("Discovery");
+        done();
+      });
+    });
+
+    it('should find track by ID', function(done){
+      deezer.lookupId("3135554", "track").then(function(result) {
+        result.name.should.equal("Aerodynamic");
+        done();
+      });
+    });
+  });
+
+  describe('search', function(){
+    it('should find album by search', function(done){
+      deezer.search({type: "album", artist: {name: "David Guetta"}, name: "Listen (Deluxe)"}).then(function(result) {
+        result.name.should.equal("Listen (Deluxe)");
+        done();
+      });
+    });
+
+    it('should find track by search', function(done){
+      deezer.search({type: "track", artist: {name: "Deftones"}, album: {name: "Deftones"}, name: "Hexagram"}).then(function(result) {
+        result.name.should.equal("Hexagram");
+        done();
+      });
+    });
+  });
+
+  describe('lookupUrl', function(){
+    describe('parseUrl', function(){
+      it('should parse album url into ID', function(done){
+        deezer.parseUrl("http://www.deezer.com/album/302127").then(function(result) {
+          result.id.should.equal(302127);
+          done();
+        });
+      });
+
+      it('should parse track url into ID', function(done){
+        deezer.parseUrl("http://www.deezer.com/track/3135554").then(function(result) {
+          result.id.should.equal(3135554);
+          done();
+        });
+      });
+    });
+  });
+});