versioncake 1.3.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -0
  3. data/Appraisals +6 -0
  4. data/CHANGELOG.md +12 -0
  5. data/Gemfile.lock +4 -4
  6. data/README.md +65 -30
  7. data/RELEASE.md +1 -1
  8. data/bin/versioncake +9 -0
  9. data/gemfiles/rails3.2.gemfile.lock +6 -2
  10. data/gemfiles/rails4.0.gemfile.lock +1 -1
  11. data/gemfiles/rails4.1.gemfile +9 -0
  12. data/gemfiles/rails4.1.gemfile.lock +87 -0
  13. data/lib/versioncake/cli.rb +60 -0
  14. data/lib/versioncake/configuration.rb +21 -21
  15. data/lib/versioncake/railtie.rb +3 -19
  16. data/lib/versioncake/strategies/extraction_strategy.rb +5 -5
  17. data/lib/versioncake/strategies/http_accept_parameter_strategy.rb +1 -1
  18. data/lib/versioncake/strategies/http_header_strategy.rb +2 -2
  19. data/lib/versioncake/strategies/path_parameter_strategy.rb +11 -0
  20. data/lib/versioncake/strategies/query_parameter_strategy.rb +2 -2
  21. data/lib/versioncake/strategies/request_parameter_strategy.rb +2 -2
  22. data/lib/versioncake/version.rb +1 -1
  23. data/lib/versioncake/versioned_request.rb +10 -6
  24. data/lib/versioncake/view_additions.rb +67 -10
  25. data/lib/versioncake.rb +2 -0
  26. data/test/{fixtures/templates/versioned.v1.html.erb → app/views/renders/index.html.v1.erb} +0 -0
  27. data/test/{fixtures/templates/versioned.v2.html.erb → app/views/renders/index.html.v2.erb} +0 -0
  28. data/test/config/application.rb +3 -2
  29. data/test/fixtures/templates/v1_extension_scheme.v3.html.erb +7 -0
  30. data/test/fixtures/templates/v1_extension_scheme.v6.json +4 -0
  31. data/test/fixtures/templates/versioned.html.v1.erb +1 -0
  32. data/test/fixtures/templates/versioned.html.v2.erb +1 -0
  33. data/test/fixtures/templates/{versioned.v3.html.erb → versioned.html.v3.erb} +0 -0
  34. data/test/fixtures/test_cases.yml +70 -0
  35. data/test/functional/custom_strategy_controller_test.rb +16 -0
  36. data/test/functional/multiple_strategy_controller_test.rb +24 -0
  37. data/test/functional/renders_controller_test.rb +14 -168
  38. data/test/functional/strategy_controller_test.rb +37 -0
  39. data/test/unit/cli_test.rb +48 -0
  40. data/test/unit/configuration_test.rb +15 -19
  41. data/test/unit/strategies/extraction_strategy_test.rb +2 -2
  42. data/test/unit/strategies/path_parameter_strategy_test.rb +17 -0
  43. data/test/unit/strategies/query_parameter_strategy_test.rb +5 -0
  44. data/test/unit/versioned_request_test.rb +1 -1
  45. data/test/unit/view_additions_test.rb +35 -0
  46. data/versioncake.gemspec +1 -0
  47. metadata +25 -9
  48. data/test/app/views/renders/index.v1.html.erb +0 -1
  49. data/test/app/views/renders/index.v2.html.erb +0 -1
@@ -2,48 +2,44 @@ require './test/test_helper'
2
2
 
3
3
  class ConfigurationTest < ActiveSupport::TestCase
4
4
  setup do
5
- @previous_versions = VersionCake::Configuration.supported_version_numbers
6
- end
7
-
8
- teardown do
9
- VersionCake::Configuration.supported_version_numbers = @previous_versions
5
+ @config = VersionCake::Configuration.new
10
6
  end
11
7
 
12
8
  test "supported_version_numbers can be set with range" do
13
- VersionCake::Configuration.supported_version_numbers = (1..7)
14
- assert_equal [7,6,5,4,3,2,1], VersionCake::Configuration.supported_version_numbers
9
+ @config.supported_version_numbers = (1..7)
10
+ assert_equal [7,6,5,4,3,2,1], @config.supported_version_numbers
15
11
  end
16
12
 
17
13
  test "supported_version_numbers can be set with an unordered array" do
18
- VersionCake::Configuration.supported_version_numbers = [2,4,1,5,3,6,7]
19
- assert_equal [7,6,5,4,3,2,1], VersionCake::Configuration.supported_version_numbers
14
+ @config.supported_version_numbers = [2,4,1,5,3,6,7]
15
+ assert_equal [7,6,5,4,3,2,1], @config.supported_version_numbers
20
16
  end
21
17
 
22
18
  test "supported_version_numbers can be set with a single value" do
23
- VersionCake::Configuration.supported_version_numbers = 19
24
- assert_equal [19], VersionCake::Configuration.supported_version_numbers
19
+ @config.supported_version_numbers = 19
20
+ assert_equal [19], @config.supported_version_numbers
25
21
  end
26
22
 
27
23
  test "supports_version? is only true for given supported versions" do
28
- VersionCake::Configuration.supported_version_numbers = (1..7)
29
- VersionCake::Configuration.supported_version_numbers.each do |supported_version|
30
- assert VersionCake::Configuration.supports_version? supported_version
24
+ @config.supported_version_numbers = (1..7)
25
+ @config.supported_version_numbers.each do |supported_version|
26
+ assert @config.supports_version? supported_version
31
27
  end
32
28
  end
33
29
 
34
30
  test "supports_version? is not true for other versions" do
35
- VersionCake::Configuration.supported_version_numbers = (1..7)
31
+ @config.supported_version_numbers = (1..7)
36
32
  [-2,-1,0,8,9,10].each do |unsupported_version|
37
- assert !VersionCake::Configuration.supports_version?(unsupported_version)
33
+ assert !@config.supports_version?(unsupported_version)
38
34
  end
39
35
  end
40
36
 
41
37
  test "latest_version retrieves the highest supported version" do
42
- VersionCake::Configuration.supported_version_numbers = [4,1,3,9,2,54]
43
- assert_equal 54, VersionCake::Configuration.latest_version
38
+ @config.supported_version_numbers = [4,1,3,9,2,54]
39
+ assert_equal 54, @config.latest_version
44
40
  end
45
41
 
46
42
  test "default supported_version_numbers should be a logic set of version numbers" do
47
- assert_equal VersionCake::Configuration::SUPPORTED_VERSIONS_DEFAULT, (1..10)
43
+ assert_equal (1..10).to_a.reverse, @config.supported_version_numbers
48
44
  end
49
45
  end
@@ -7,11 +7,11 @@ class ExtractionStrategyTest < ActiveSupport::TestCase
7
7
  end
8
8
  end
9
9
 
10
- test "extract will convert the the result to integer" do
10
+ test "extract will convert the result to integer" do
11
11
  class TestStrategy < VersionCake::ExtractionStrategy
12
12
  def execute(request); "123"; end
13
13
  end
14
- assert_equal TestStrategy.new.extract("request"), 123
14
+ assert_equal 123, TestStrategy.new.extract("request")
15
15
  end
16
16
 
17
17
  test "it can lookup a strategy" do
@@ -0,0 +1,17 @@
1
+ require './test/test_helper'
2
+
3
+ class PathParameterStrategyTest < ActiveSupport::TestCase
4
+ setup do
5
+ @strategy = VersionCake::PathParameterStrategy.new
6
+ end
7
+
8
+ test "a request with an api_version path parameter retrieves the version" do
9
+ request = stub(:path_parameters => {:api_version => '11', :other => 'parameter'})
10
+ assert_equal 11, @strategy.extract(request)
11
+ end
12
+
13
+ test "a request without an api_version path parameter returns nil" do
14
+ request = stub(:path_parameters => {:other => 'parameter', :another => 'parameter'})
15
+ assert_nil @strategy.extract(request)
16
+ end
17
+ end
@@ -10,6 +10,11 @@ class QueryParameterStrategyTest < ActiveSupport::TestCase
10
10
  assert_equal 11, @strategy.extract(request)
11
11
  end
12
12
 
13
+ test "a request with an Integer api_version parameter retrieves the version" do
14
+ request = stub(:query_parameters => {:api_version => 11, :other => 'parameter'})
15
+ assert_equal 11, @strategy.extract(request)
16
+ end
17
+
13
18
  test "a request without an api_version parameter returns nil" do
14
19
  request = stub(:query_parameters => {:other => 'parameter', :another => 'parameter'})
15
20
  assert_nil @strategy.extract(request)
@@ -22,7 +22,7 @@ class VersionedRequestTest < ActiveSupport::TestCase
22
22
 
23
23
  test "a request for a deprecated version raises an exception" do
24
24
  VersionCake::VersionedRequest.any_instance.stubs(:apply_strategies => 2)
25
- VersionCake::Configuration.stubs(:supports_version? => false)
25
+ VersionCake::Configuration.any_instance.stubs(:supports_version? => false)
26
26
  assert_raise ActionController::RoutingError do
27
27
  VersionCake::VersionedRequest.new(stub())
28
28
  end
@@ -0,0 +1,35 @@
1
+ require './test/test_helper'
2
+
3
+ class ViewAdditionsTest < ActiveSupport::TestCase
4
+ setup do
5
+ @resolver = ActionView::PathResolver.new
6
+ end
7
+
8
+ test "it retrieves the correct handler and format when only handler and format are present" do
9
+ handler, format = @resolver.extract_handler_and_format('application.html.erb', nil)
10
+ assert_equal 'text/html', format.to_s
11
+ end
12
+
13
+ test "it retrieves the correct handler and format when only handler, format and version are present" do
14
+ handler, format = @resolver.extract_handler_and_format('application.json.v1.jbuilder', nil)
15
+ assert_equal 'application/json', format.to_s
16
+ end
17
+
18
+ test "it retrieves the correct handler and format when only handler, format and locale are present" do
19
+ handler, format = @resolver.extract_handler_and_format('application.en.json.jbuilder', nil)
20
+ assert_equal 'application/json', format.to_s
21
+ end
22
+
23
+ test "it retrieves the correct handler and format when only handler, format, locale and version are present" do
24
+ handler, format = @resolver.extract_handler_and_format('application.en.json.v1.jbuilder', nil)
25
+ assert_equal 'application/json', format.to_s
26
+ end
27
+
28
+ if ActionPack::VERSION::MAJOR == 4 && ActionPack::VERSION::MINOR >= 1
29
+ test "it retrieves the correct handler and format when only handler, format, variant and version are present" do
30
+ handler, format = @resolver.extract_handler_and_format('application.json+tablet.v1.jbuilder', nil)
31
+ assert_equal 'application/json', format.to_s
32
+ end
33
+ end
34
+
35
+ end
data/versioncake.gemspec CHANGED
@@ -5,6 +5,7 @@ require "versioncake/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "versioncake"
7
7
  s.version = VersionCake::VERSION
8
+ s.license = 'MIT'
8
9
  s.authors = ["Jim Jones", "Ben Willis"]
9
10
  s.email = ["jim.jones1@gmail.com", "benjamin.willis@gmail.com"]
10
11
  s.homepage = "https://github.com/bwillis/versioncake"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: versioncake
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Jones
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-27 00:00:00.000000000 Z
12
+ date: 2014-02-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -141,7 +141,8 @@ description: Render versioned views automagically based on the clients requested
141
141
  email:
142
142
  - jim.jones1@gmail.com
143
143
  - benjamin.willis@gmail.com
144
- executables: []
144
+ executables:
145
+ - versioncake
145
146
  extensions: []
146
147
  extra_rdoc_files: []
147
148
  files:
@@ -155,12 +156,16 @@ files:
155
156
  - README.md
156
157
  - RELEASE.md
157
158
  - Rakefile
159
+ - bin/versioncake
158
160
  - gemfiles/rails3.2.gemfile
159
161
  - gemfiles/rails3.2.gemfile.lock
160
162
  - gemfiles/rails4.0.gemfile
161
163
  - gemfiles/rails4.0.gemfile.lock
164
+ - gemfiles/rails4.1.gemfile
165
+ - gemfiles/rails4.1.gemfile.lock
162
166
  - images/versioncake-logo450x100.png
163
167
  - lib/versioncake.rb
168
+ - lib/versioncake/cli.rb
164
169
  - lib/versioncake/configuration.rb
165
170
  - lib/versioncake/controller_additions.rb
166
171
  - lib/versioncake/railtie.rb
@@ -168,6 +173,7 @@ files:
168
173
  - lib/versioncake/strategies/extraction_strategy.rb
169
174
  - lib/versioncake/strategies/http_accept_parameter_strategy.rb
170
175
  - lib/versioncake/strategies/http_header_strategy.rb
176
+ - lib/versioncake/strategies/path_parameter_strategy.rb
171
177
  - lib/versioncake/strategies/query_parameter_strategy.rb
172
178
  - lib/versioncake/strategies/request_parameter_strategy.rb
173
179
  - lib/versioncake/version.rb
@@ -175,8 +181,8 @@ files:
175
181
  - lib/versioncake/view_additions.rb
176
182
  - test/app/controllers/renders_controller.rb
177
183
  - test/app/views/renders/index.html.erb
178
- - test/app/views/renders/index.v1.html.erb
179
- - test/app/views/renders/index.v2.html.erb
184
+ - test/app/views/renders/index.html.v1.erb
185
+ - test/app/views/renders/index.html.v2.erb
180
186
  - test/config.ru
181
187
  - test/config/application.rb
182
188
  - test/config/routes.rb
@@ -187,24 +193,34 @@ files:
187
193
  - test/fixtures/partials/another_versioned_partial.erb
188
194
  - test/fixtures/partials/another_versioned_partial.v1.erb
189
195
  - test/fixtures/templates/unversioned.html.erb
196
+ - test/fixtures/templates/v1_extension_scheme.v3.html.erb
197
+ - test/fixtures/templates/v1_extension_scheme.v6.json
190
198
  - test/fixtures/templates/versioned.html.erb
191
- - test/fixtures/templates/versioned.v1.html.erb
192
- - test/fixtures/templates/versioned.v2.html.erb
193
- - test/fixtures/templates/versioned.v3.html.erb
199
+ - test/fixtures/templates/versioned.html.v1.erb
200
+ - test/fixtures/templates/versioned.html.v2.erb
201
+ - test/fixtures/templates/versioned.html.v3.erb
202
+ - test/fixtures/test_cases.yml
203
+ - test/functional/custom_strategy_controller_test.rb
204
+ - test/functional/multiple_strategy_controller_test.rb
194
205
  - test/functional/renders_controller_test.rb
206
+ - test/functional/strategy_controller_test.rb
195
207
  - test/script/rails
196
208
  - test/template/render_test.rb
197
209
  - test/test_helper.rb
210
+ - test/unit/cli_test.rb
198
211
  - test/unit/configuration_test.rb
199
212
  - test/unit/strategies/extraction_strategy_test.rb
200
213
  - test/unit/strategies/http_accept_parameter_strategy_test.rb
201
214
  - test/unit/strategies/http_header_strategy_test.rb
215
+ - test/unit/strategies/path_parameter_strategy_test.rb
202
216
  - test/unit/strategies/query_parameter_strategy_test.rb
203
217
  - test/unit/strategies/request_parameter_strategy_test.rb
204
218
  - test/unit/versioned_request_test.rb
219
+ - test/unit/view_additions_test.rb
205
220
  - versioncake.gemspec
206
221
  homepage: https://github.com/bwillis/versioncake
207
- licenses: []
222
+ licenses:
223
+ - MIT
208
224
  metadata: {}
209
225
  post_install_message:
210
226
  rdoc_options: []
@@ -1 +0,0 @@
1
- index.v1.html.erb
@@ -1 +0,0 @@
1
- index.v2.html.erb