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