From 01bb05c5360cfce02418cc35ca20ac7bbdb7e523 Mon Sep 17 00:00:00 2001
From: Alexandre Morignot <erdnaxeli@gmail.com>
Date: Tue, 1 Jan 2013 22:23:44 +0100
Subject: [PATCH] =?UTF-8?q?Plugin=20Youtube,=20test=20suppl=C3=A9mentaire?=
 =?UTF-8?q?=20pour=20SitePlugin?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lib/site_plugin.rb          |  2 +-
 plugins/youtube_plugin.rb   | 12 ++++++++++++
 spec/site_plugin_spec.rb    | 10 ++++++++--
 spec/youtube_plugin_spec.rb | 17 +++++++++++++++++
 4 files changed, 38 insertions(+), 3 deletions(-)
 create mode 100644 plugins/youtube_plugin.rb
 create mode 100644 spec/youtube_plugin_spec.rb

diff --git a/lib/site_plugin.rb b/lib/site_plugin.rb
index 3ac1c38..a756a3e 100644
--- a/lib/site_plugin.rb
+++ b/lib/site_plugin.rb
@@ -14,7 +14,7 @@ class SitePlugin
 
     # Return the plugin that can handle a given site.
     def self.for_site(site)
-        @@repository.find {|handler| handler.can_handle? site }
+        @@repository.find { |handler| handler.can_handle? site }
     end
 
     # A place holder method. This method *must* be implemented in the subclasses.
diff --git a/plugins/youtube_plugin.rb b/plugins/youtube_plugin.rb
new file mode 100644
index 0000000..bffb681
--- /dev/null
+++ b/plugins/youtube_plugin.rb
@@ -0,0 +1,12 @@
+require_relative '../lib/site_plugin.rb'
+
+class YoutubePlugin < SitePlugin
+    def self.can_handle?(site) 
+        site =~ /^http:\/\/((www.)?youtube.(fr|com)\/watch\?v=|youtu\.be\/)[a-zA-Z0-9]+$/
+    end
+
+    public
+    def get(url)
+        puts "Oh oh oh ! #{url}"
+    end
+end
diff --git a/spec/site_plugin_spec.rb b/spec/site_plugin_spec.rb
index 612cf31..241ab69 100644
--- a/spec/site_plugin_spec.rb
+++ b/spec/site_plugin_spec.rb
@@ -1,5 +1,4 @@
-$LOAD_PATH << '../lib'
-require 'site_plugin'
+require_relative '../lib/site_plugin.rb'
 
 describe SitePlugin do
     describe 'inherance' do
@@ -25,4 +24,11 @@ describe SitePlugin do
             SitePlugin.for_site('OfCourseICanHandle_test_').nil?.should be_false
         end
     end
+
+    describe '#can_handle?' do
+        it 'raise an exception' do
+            @siteplugin = SitePlugin.new
+            lambda { @siteplugin.can_handle?('test') }.should raise_error
+        end
+    end
 end
diff --git a/spec/youtube_plugin_spec.rb b/spec/youtube_plugin_spec.rb
new file mode 100644
index 0000000..3dba54c
--- /dev/null
+++ b/spec/youtube_plugin_spec.rb
@@ -0,0 +1,17 @@
+require_relative '../plugins/youtube_plugin.rb'
+
+describe YoutubePlugin do
+    describe '.can_handle?' do
+        it 'true with "youtube.com"' do
+            YoutubePlugin.can_handle?('http://youtube.com/watch?v=Pb8VPYMgHlg').should be_true
+        end
+
+        it 'true with "www.youtube.com"' do
+            YoutubePlugin.can_handle?('http://www.youtube.com/watch?v=Pb8VPYMgHlg').should be_true
+        end
+
+        it 'true with "youtu.be"' do
+            YoutubePlugin.can_handle?('http://youtu.be/Pb8VPYMgHlg').should be_true
+        end
+    end
+end
-- 
GitLab