ajaxlibs 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,17 +7,17 @@ describe "Ajaxlibs::IncludesHelper" do
7
7
  end
8
8
  end
9
9
 
10
+ before :each do
11
+ @fake_action_view = FakeActionView.new
12
+ @fake_action_view.stub! :javascript_include_tag
13
+ end
14
+
10
15
  context "in development environment" do
11
16
  before :all do
12
17
  Object.send(:remove_const, 'RAILS_ENV') if Object.const_defined?('RAILS_ENV')
13
18
  RAILS_ENV = 'development'
14
19
  end
15
20
 
16
- before :each do
17
- @fake_action_view = FakeActionView.new
18
- @fake_action_view.stub! :javascript_include_tag
19
- end
20
-
21
21
  context "should call javascript_include_tag to include local javascript library file" do
22
22
  example "once if only one library was specified" do
23
23
  @fake_action_view.should_receive(:javascript_include_tag).
@@ -54,7 +54,7 @@ describe "Ajaxlibs::IncludesHelper" do
54
54
  example "once for specified library, avoiding multiple includes" do
55
55
  @fake_action_view.should_receive(:javascript_include_tag).
56
56
  with(Ajaxlibs::Library.by_name(:prototype).local_path).
57
- once.times
57
+ once
58
58
 
59
59
  @fake_action_view.ajaxlibs_include :prototype, :prototype
60
60
  end
@@ -62,7 +62,7 @@ describe "Ajaxlibs::IncludesHelper" do
62
62
  context "while specifying a specific version number" do
63
63
  example "once if one library was specified" do
64
64
  @fake_action_view.should_receive(:javascript_include_tag).
65
- with(Ajaxlibs::Library.by_name(:prototype).local_path('1.6.0.3')).
65
+ with(Ajaxlibs::Library.by_name(:prototype, :version => '1.6.0.3').local_path).
66
66
  once
67
67
 
68
68
  @fake_action_view.ajaxlibs_include :prototype, :version => '1.6.0.3'
@@ -77,63 +77,48 @@ describe "Ajaxlibs::IncludesHelper" do
77
77
  RAILS_ENV = 'production'
78
78
  end
79
79
 
80
- before :each do
81
- @fake_action_view = FakeActionView.new
82
- @fake_action_view.stub! :javascript_tag
83
- end
84
-
85
- it "should include google jsapi script" do
86
- @fake_action_view.ajaxlibs_include(:prototype).should include("<script type=\"text/javascript\" src=\"#{Ajaxlibs::GoogleJSAPI}\"></script>")
87
- end
88
-
89
- context "should call javascript_tag with google jsapi load code" do
80
+ context "should call javascript_include_tag with google cdn include path" do
90
81
  example "once if only one library was specified" do
91
- @fake_action_view.should_receive(:javascript_tag).
92
- with(Ajaxlibs::Library.by_name(:prototype).google_cdn_load_code).
82
+ @fake_action_view.should_receive(:javascript_include_tag).
83
+ with(Ajaxlibs::Library.by_name(:prototype).google_cdn_include_path).
93
84
  once
94
85
 
95
86
  @fake_action_view.ajaxlibs_include :prototype
96
87
  end
97
88
 
98
89
  example "once for each specified library" do
99
- @fake_action_view.should_receive(:javascript_tag).
100
- with([
101
- Ajaxlibs::Library.by_name(:prototype).google_cdn_load_code,
102
- Ajaxlibs::Library.by_name(:scriptaculous).google_cdn_load_code
103
- ].join("\n")).
104
- once
105
-
90
+ @fake_action_view.should_receive(:javascript_include_tag).
91
+ with(Ajaxlibs::Library.by_name(:prototype).google_cdn_include_path).once
92
+ @fake_action_view.should_receive(:javascript_include_tag).
93
+ with(Ajaxlibs::Library.by_name(:scriptaculous).google_cdn_include_path).once
106
94
  @fake_action_view.ajaxlibs_include :prototype, :scriptaculous
107
95
  end
108
96
 
109
97
  example "once for each specified library and dependendencies" do
110
- @fake_action_view.should_receive(:javascript_tag).
111
- with([
112
- Ajaxlibs::Library.by_name(:prototype).google_cdn_load_code,
113
- Ajaxlibs::Library.by_name(:scriptaculous).google_cdn_load_code
114
- ].join("\n")).
115
- once
116
-
98
+ @fake_action_view.should_receive(:javascript_include_tag).
99
+ with(Ajaxlibs::Library.by_name(:prototype).google_cdn_include_path).once
100
+ @fake_action_view.should_receive(:javascript_include_tag).
101
+ with(Ajaxlibs::Library.by_name(:scriptaculous).google_cdn_include_path).once
117
102
  @fake_action_view.ajaxlibs_include :scriptaculous
118
103
  end
119
104
 
120
105
  example "once for specified library, avoiding multiple includes" do
121
- @fake_action_view.should_receive(:javascript_tag).
122
- with(Ajaxlibs::Library.by_name(:prototype).google_cdn_load_code).
123
- once.times
106
+ @fake_action_view.should_receive(:javascript_include_tag).
107
+ with(Ajaxlibs::Library.by_name(:prototype).google_cdn_include_path).
108
+ once
124
109
 
125
110
  @fake_action_view.ajaxlibs_include :prototype, :prototype
126
111
  end
127
112
 
128
113
  context "while specifying a specific version number" do
129
114
  example "once if one library was specified" do
130
- @fake_action_view.should_receive(:javascript_tag).
131
- with(Ajaxlibs::Library.by_name(:prototype).google_cdn_load_code('1.6.0.3')).
132
- once.times
115
+ @fake_action_view.should_receive(:javascript_include_tag).
116
+ with(Ajaxlibs::Library.by_name(:prototype, :version => '1.6.0.3').google_cdn_include_path).
117
+ once
133
118
 
134
119
  @fake_action_view.ajaxlibs_include :prototype, :version => '1.6.0.3'
135
120
  end
136
121
  end # end of context "while specifying a specific version number"
137
- end # end of context "should call javascript_tag with google jsapi load code"
122
+ end # end of context "should call javascript_include_tag with google cdn include path"
138
123
  end # end of context "in production environment"
139
124
  end
data/spec/library_spec.rb CHANGED
@@ -6,6 +6,8 @@ class Ajaxlibs::Library::Basic < Ajaxlibs::Library
6
6
  '1.5',
7
7
  '1.8.1',
8
8
  '2.0.1.3']
9
+
10
+ Requirements = {'1.5' => {:prototype => nil}, :all => {:scriptaculous => nil}}
9
11
  end
10
12
 
11
13
  describe "Ajaxlibs::Library" do
@@ -24,6 +26,14 @@ describe "Ajaxlibs::Library" do
24
26
  @library.latest_version.should == '2.0.1.3'
25
27
  end
26
28
 
29
+ it "should use the latest version if non provided" do
30
+ @library.version.should == @library.latest_version
31
+ end
32
+
33
+ it "should use a local source if non provided" do
34
+ @library.source.should == :local
35
+ end
36
+
27
37
  it "should determine library_name by its own class name" do
28
38
  @library.library_name.should == 'basic'
29
39
  end
@@ -32,48 +42,120 @@ describe "Ajaxlibs::Library" do
32
42
  @library.library_name.should == @library.file_name
33
43
  end
34
44
 
45
+ it "should search through requirements using key :all if requirements for specific version is not found" do
46
+ @library.requires.should == {:scriptaculous => nil}
47
+ end
48
+
49
+ it "should be equal to another library instance if class, version and source are equals" do
50
+ another_library = Ajaxlibs::Library::Basic.new(:version => @library.version, :source => @library.source)
51
+ @library.should == another_library
52
+ end
53
+
54
+ it "should not be equal to another library instance if source differs" do
55
+ another_library = Ajaxlibs::Library::Basic.new(:version => @library.version, :source => :remote)
56
+ @library.should_not == another_library
57
+ end
58
+
59
+ it "should not be equal to another library instance if version differs" do
60
+ another_library = Ajaxlibs::Library::Basic.new(:version => '1.5', :source => @library.source)
61
+ @library.should_not == another_library
62
+ end
63
+
64
+ it "should not be equal to another library instance if class differs" do
65
+ class Ajaxlibs::Library::AnotherBasic < Ajaxlibs::Library::Basic
66
+ end
67
+
68
+ another_library = Ajaxlibs::Library::AnotherBasic.new(:version => @library.version, :source => @library.source)
69
+ @library.should_not == another_library
70
+ end
71
+
72
+ example "should raise an error if provided version is wrong" do
73
+ lambda { Ajaxlibs::Library::Basic.new(:version => '42') }.should raise_error(Ajaxlibs::Exception::VersionNotFound)
74
+ end
75
+
35
76
  context "will return a local path composed of library_name, version and file_name" do
36
77
  example "using provided version if specified" do
37
- @library.local_path('1.8.1').should == "ajaxlibs/basic/1.8.1/basic"
78
+ @library = Ajaxlibs::Library::Basic.new(:version => '1.8.1')
79
+ @library.local_path.should == "ajaxlibs/basic/1.8.1/basic"
38
80
  end
39
81
 
40
82
  example "using latest version if none was specified" do
41
83
  @library.local_path.should == "ajaxlibs/basic/2.0.1.3/basic"
42
84
  end
43
85
 
44
- example "unless version was wrong" do
45
- lambda { @library.local_path('42') }.should raise_error(Ajaxlibs::Exception::VersionNotFound)
86
+ example "while calling include_path" do
87
+ @library.include_path.should == @library.local_path
46
88
  end
89
+
47
90
  end
48
91
 
49
92
  context "will return a javascript code to load from google cdn with library_name and version" do
50
93
  example "using provided version if specified" do
51
- @library.google_cdn_load_code('1.8.1').should == "google.load('basic', '1.8.1');"
94
+ @library = Ajaxlibs::Library::Basic.new(:version => '1.8.1')
95
+ @library.google_cdn_include_path.should == "http://ajax.googleapis.com/ajax/libs/basic/1.8.1/basic.js"
52
96
  end
53
97
 
54
98
  example "using latest version if none was specified" do
55
- @library.google_cdn_load_code.should == "google.load('basic', '2.0.1.3');"
56
- end
57
-
58
- example "unless version was wrong" do
59
- lambda { @library.google_cdn_load_code('42') }.should raise_error(Ajaxlibs::Exception::VersionNotFound)
60
- end
99
+ @library.google_cdn_include_path.should == "http://ajax.googleapis.com/ajax/libs/basic/2.0.1.3/basic.js"
100
+ end
101
+
102
+ example "while calling include_path" do
103
+ @library = Ajaxlibs::Library::Basic.new(:source => :remote)
104
+ @library.include_path.should == @library.google_cdn_include_path
105
+ end
61
106
  end
62
107
  end
63
108
 
109
+ context "instance with version provided" do
110
+ before :each do
111
+ @library = Ajaxlibs::Library::Basic.new(:version => '1.5')
112
+ end
113
+
114
+ it "should returns provided version" do
115
+ @library.version.should == '1.5'
116
+ end
117
+
118
+ it "should search through requirements using provided version" do
119
+ @library.requires.should == {:prototype => nil}
120
+ end
121
+ end
122
+
123
+ context "instance with source provided" do
124
+ before :each do
125
+ @library = Ajaxlibs::Library::Basic.new(:source => :remote)
126
+ end
127
+
128
+ it "should returns provided source" do
129
+ @library.source.should == :remote
130
+ end
131
+ end
132
+
64
133
  context "base class" do
65
134
  example "will return the right instance while searching by name" do
66
135
  Ajaxlibs::Library.by_name(:jquery).should be_kind_of(Ajaxlibs::Library::Jquery)
67
136
  end
137
+
138
+ example "will use given version" do
139
+ Ajaxlibs::Library.by_name(:jquery, :version => '1.3.2').version.should == '1.3.2'
140
+ end
141
+
142
+ example "will use given source" do
143
+ Ajaxlibs::Library.by_name(:jquery, :source => :remote).source.should == :remote
144
+ end
68
145
 
69
146
  example "will raise an exception if library is not found" do
70
147
  lambda { Ajaxlibs::Library.by_name(:foo) }.should raise_error(Ajaxlibs::Exception::LibraryNotFound)
71
148
  end
149
+
150
+ example "will raise an exception if version is not found" do
151
+ lambda { Ajaxlibs::Library.by_name(:jquery, :version => '42') }.should raise_error(Ajaxlibs::Exception::VersionNotFound)
152
+ end
72
153
 
73
154
  example "will register class by name when inherited" do
74
155
  Ajaxlibs::Library.should_not have_registered_child_class(:foo)
75
156
  lambda { Ajaxlibs::Library.by_name(:foo) }.should raise_error(Ajaxlibs::Exception::LibraryNotFound)
76
157
  class Ajaxlibs::Library::Foo < Ajaxlibs::Library
158
+ Versions = %w{0}
77
159
  end
78
160
  Ajaxlibs::Library.should have_registered_child_class(:foo)
79
161
  Ajaxlibs::Library.all.should include(Ajaxlibs::Library::Foo)
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Fabien Jakimowicz
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-02 00:00:00 +01:00
17
+ date: 2010-03-11 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -51,12 +51,22 @@ files:
51
51
  - lib/ajaxlibs/constants.rb
52
52
  - lib/ajaxlibs/exceptions.rb
53
53
  - lib/ajaxlibs/includes_helper.rb
54
+ - lib/ajaxlibs/libraries/dojo.rb
54
55
  - lib/ajaxlibs/libraries/jquery.rb
55
56
  - lib/ajaxlibs/libraries/jqueryui.rb
57
+ - lib/ajaxlibs/libraries/mootools.rb
56
58
  - lib/ajaxlibs/libraries/prototype.rb
57
59
  - lib/ajaxlibs/libraries/scriptaculous.rb
58
60
  - lib/ajaxlibs/library.rb
59
61
  - lib/ajaxlibs/versions_tools.rb
62
+ - public/dojo/1.1.1/dojo.xd.js.uncompressed.js
63
+ - public/dojo/1.2.0/dojo.xd.js.uncompressed.js
64
+ - public/dojo/1.2.3/dojo.xd.js.uncompressed.js
65
+ - public/dojo/1.3.0/dojo.xd.js.uncompressed.js
66
+ - public/dojo/1.3.1/dojo.xd.js.uncompressed.js
67
+ - public/dojo/1.3.2/dojo.xd.js.uncompressed.js
68
+ - public/dojo/1.4.0/dojo.xd.js.uncompressed.js
69
+ - public/dojo/1.4.1/dojo.xd.js.uncompressed.js
60
70
  - public/jquery/1.2.3/jquery.js
61
71
  - public/jquery/1.2.6/jquery.js
62
72
  - public/jquery/1.3.0/jquery.js