deas-json 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA512:
3
- metadata.gz: ffb78b97d32a51e70c814c6d4ba88679de271f00e93b013284119e3012332748ffc1375d6c9f5b7a6dee8c787ba1ed8e4b3f2b70d63a6f95b631c83d8e81e736
4
- data.tar.gz: 697337237b5f8a0df6af90d68f9b2165289b3ae86557bf082b03255009e3258d88c7836ba5bd250ae9f224344bea322d3373fe7e1fe81569fa9bb26329454041
3
+ metadata.gz: f10592e8ae7579a179ff09c746c33237428123fc3f236d33f4aed052afde257636696eb27a9301d3f85a297a3e3563ce7213b6fa45f0d4aaed107775cf0b2860
4
+ data.tar.gz: bd4249d3019e86146d10a0e4686b8e67dab7e7f2e7852a8a59c069bcbbbfe91bde051be23569ee8afb26ebde75ae2ccc6a5ac651afc348feedb746e4b82352e8
5
5
  SHA1:
6
- metadata.gz: b86dfc65f0df9f644eca7b0cb7aa489922aec73e
7
- data.tar.gz: 6e80493cd90b61b8e4b7c733e66cfdc3d5d6ca54
6
+ metadata.gz: 106b45bc2305eab2e914aa6ba24f7829716f09b8
7
+ data.tar.gz: 6b37408a031c490bb156b5429b67df18c2730286
@@ -18,9 +18,10 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_development_dependency("assert", ["~> 2.16.3"])
21
+ gem.add_development_dependency("assert", ["~> 2.16.3"])
22
+ gem.add_development_dependency("assert-rack-test", ["~> 1.0.5"])
22
23
 
23
- gem.add_dependency("deas", ["~> 0.43.4"])
24
+ gem.add_dependency("deas", ["~> 0.43.5"])
24
25
  gem.add_dependency("much-plugin", ["~> 0.2.0"])
25
26
 
26
27
  end
@@ -1,4 +1,4 @@
1
1
  module Deas; end
2
2
  module Deas::Json
3
- VERSION = "0.3.4"
3
+ VERSION = "0.3.5"
4
4
  end
@@ -6,33 +6,13 @@ module Deas::Json
6
6
  module ViewHandler
7
7
  include MuchPlugin
8
8
 
9
- DEF_STATUS = 200.freeze
10
- DEF_HEADERS = {}.freeze
11
- DEF_BODY = '{}'.freeze
12
-
13
9
  plugin_included do
14
10
  include Deas::ViewHandler
15
- include InstanceMethods
16
-
17
- before_init{ content_type('.json', 'charset' => 'utf-8') }
18
- end
19
11
 
20
- module InstanceMethods
21
-
22
- private
23
-
24
- # Some http clients will error when trying to parse an empty body when the
25
- # content type is 'json'. This will default the body to a string that
26
- # can be parsed to an empty json object.
27
- # We call the `body` helper method to make sure it adhere's to the Rack spec
28
- def halt(*args)
29
- super(
30
- args.first.instance_of?(::Fixnum) ? args.shift : DEF_STATUS,
31
- args.first.kind_of?(::Hash) ? args.shift : DEF_HEADERS,
32
- body(!args.first.to_s.empty? ? args.shift : DEF_BODY)
33
- )
34
- end
12
+ default_status 200
13
+ default_body ['{}']
35
14
 
15
+ before_init{ content_type('.json', 'charset' => 'utf-8') }
36
16
  end
37
17
 
38
18
  end
@@ -0,0 +1,85 @@
1
+ require 'assert'
2
+ require 'deas-json'
3
+
4
+ require 'assert-rack-test'
5
+ require 'deas'
6
+
7
+ module Deas::Json
8
+
9
+ class RackTestsContext < Assert::Context
10
+ include Assert::Rack::Test
11
+
12
+ def app; @app; end
13
+ end
14
+
15
+ class RackTests < RackTestsContext
16
+ desc "a Deas server rack app"
17
+ setup do
18
+ @status_val = Factory.integer
19
+ @body_val = Factory.text
20
+
21
+ @app = DeasTestServer.new
22
+ end
23
+
24
+ should "use given status/body values" do
25
+ get '/test.json', {
26
+ 'status_val' => @status_val,
27
+ 'body_val' => @body_val
28
+ }
29
+
30
+ assert_equal @status_val, last_response.status
31
+ assert_equal @body_val, last_response.body
32
+ end
33
+
34
+ should "default its status and body if not provided" do
35
+ get '/test.json'
36
+
37
+ assert_equal TestJsonHandler.default_status, last_response.status
38
+ assert_equal TestJsonHandler.default_body.first, last_response.body
39
+ end
40
+
41
+ should "default its body if not provided" do
42
+ get '/test.json', {
43
+ 'status_val' => @status_val
44
+ }
45
+
46
+ assert_equal @status_val, last_response.status
47
+ assert_equal TestJsonHandler.default_body.first, last_response.body
48
+ end
49
+
50
+ should "default its status if not provided" do
51
+ get '/test.json', {
52
+ 'body_val' => @body_val
53
+ }
54
+
55
+ assert_equal TestJsonHandler.default_status, last_response.status
56
+ assert_equal @body_val, last_response.body
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+
63
+ class DeasTestServer
64
+ include Deas::Server
65
+
66
+ router do
67
+ get '/test.json', 'TestJsonHandler'
68
+ end
69
+
70
+ end
71
+
72
+ class TestJsonHandler
73
+ include Deas::Json::ViewHandler
74
+
75
+ attr_accessor :halt_args
76
+
77
+ def run!
78
+ halt *([
79
+ (params['status_val'].to_i if params['status_val']),
80
+ params['body_val']
81
+ ].compact)
82
+ end
83
+
84
+ end
85
+
@@ -20,10 +20,9 @@ module Deas::Json::ViewHandler
20
20
  assert_includes Deas::ViewHandler, subject
21
21
  end
22
22
 
23
- should "know its default status, headers and body values" do
24
- assert_equal 200, subject::DEF_STATUS
25
- assert_equal Hash.new, subject::DEF_HEADERS
26
- assert_equal '{}', subject::DEF_BODY
23
+ should "override the default status and body values" do
24
+ assert_equal 200, subject.default_status
25
+ assert_equal ['{}'], subject.default_body
27
26
  end
28
27
 
29
28
  end
@@ -33,10 +32,6 @@ module Deas::Json::ViewHandler
33
32
 
34
33
  desc "when init"
35
34
  setup do
36
- @status = Factory.integer
37
- @headers = { Factory.string => Factory.string }
38
- @body = [Factory.text]
39
-
40
35
  @runner = test_runner(@handler_class)
41
36
  @handler = @runner.handler
42
37
  end
@@ -48,95 +43,6 @@ module Deas::Json::ViewHandler
48
43
  assert_equal exp, subject.content_type_args.params
49
44
  end
50
45
 
51
- should "use all given args" do
52
- @handler.halt_args = [@status, @headers, @body]
53
- response = @runner.run
54
-
55
- assert_equal @status, response.status
56
- assert_equal @headers, response.headers
57
- assert_equal @body, response.body
58
- end
59
-
60
- should "should adhere to the rack spec for its body" do
61
- @handler.halt_args = [@status, @headers, @body.first]
62
- response = @runner.run
63
-
64
- assert_equal @status, response.status
65
- assert_equal @headers, response.headers
66
- assert_equal @body, response.body
67
- end
68
-
69
- should "default its status, headers and body if not provided" do
70
- response = @runner.run
71
-
72
- assert_equal DEF_STATUS, response.status
73
- assert_equal DEF_HEADERS, response.headers
74
- assert_equal [DEF_BODY], response.body
75
- end
76
-
77
- should "default its headers and body if not provided" do
78
- @handler.halt_args = [@status]
79
- response = @runner.run
80
-
81
- assert_equal @status, response.status
82
- assert_equal DEF_HEADERS, response.headers
83
- assert_equal [DEF_BODY], response.body
84
- end
85
-
86
- should "default its status and body if not provided" do
87
- @handler.halt_args = [@headers]
88
- response = @runner.run
89
-
90
- assert_equal DEF_STATUS, response.status
91
- assert_equal @headers, response.headers
92
- assert_equal [DEF_BODY], response.body
93
- end
94
-
95
- should "default its status and headers if not provided" do
96
- @handler.halt_args = [@body]
97
- response = @runner.run
98
-
99
- assert_equal DEF_STATUS, response.status
100
- assert_equal DEF_HEADERS, response.headers
101
- assert_equal @body, response.body
102
- end
103
-
104
- should "default its status if not provided" do
105
- @handler.halt_args = [@headers, @body]
106
- response = @runner.run
107
-
108
- assert_equal DEF_STATUS, response.status
109
- assert_equal @headers, response.headers
110
- assert_equal @body, response.body
111
- end
112
-
113
- should "default its headers if not provided" do
114
- @handler.halt_args = [@status, @body]
115
- response = @runner.run
116
-
117
- assert_equal @status, response.status
118
- assert_equal DEF_HEADERS, response.headers
119
- assert_equal @body, response.body
120
- end
121
-
122
- should "default its body if not provided" do
123
- @handler.halt_args = [@status, @headers, [nil, ''].sample]
124
- response = @runner.run
125
-
126
- assert_equal @status, response.status
127
- assert_equal @headers, response.headers
128
- assert_equal [DEF_BODY], response.body
129
- end
130
-
131
- end
132
-
133
- class TestJsonHandler
134
- include Deas::Json::ViewHandler
135
-
136
- attr_accessor :halt_args
137
-
138
- def run!; halt *(@halt_args || []).dup; end
139
-
140
46
  end
141
47
 
142
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deas-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelly Redding
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2018-04-18 00:00:00 Z
13
+ date: 2018-04-19 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: assert
@@ -23,25 +23,35 @@ dependencies:
23
23
  type: :development
24
24
  version_requirements: *id001
25
25
  - !ruby/object:Gem::Dependency
26
- name: deas
26
+ name: assert-rack-test
27
27
  prerelease: false
28
28
  requirement: &id002 !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: 0.43.4
33
- type: :runtime
32
+ version: 1.0.5
33
+ type: :development
34
34
  version_requirements: *id002
35
35
  - !ruby/object:Gem::Dependency
36
- name: much-plugin
36
+ name: deas
37
37
  prerelease: false
38
38
  requirement: &id003 !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - ~>
41
41
  - !ruby/object:Gem::Version
42
- version: 0.2.0
42
+ version: 0.43.5
43
43
  type: :runtime
44
44
  version_requirements: *id003
45
+ - !ruby/object:Gem::Dependency
46
+ name: much-plugin
47
+ prerelease: false
48
+ requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ version: 0.2.0
53
+ type: :runtime
54
+ version_requirements: *id004
45
55
  description: JSON helpers for Deas apps
46
56
  email:
47
57
  - kelly@kellyredding.com
@@ -64,6 +74,7 @@ files:
64
74
  - log/.gitkeep
65
75
  - test/helper.rb
66
76
  - test/support/factory.rb
77
+ - test/system/rack_tests.rb
67
78
  - test/unit/view_handler_tests.rb
68
79
  - tmp/.gitkeep
69
80
  homepage: http://github.com/redding/deas-json
@@ -78,13 +89,13 @@ require_paths:
78
89
  - lib
79
90
  required_ruby_version: !ruby/object:Gem::Requirement
80
91
  requirements:
81
- - &id004
92
+ - &id005
82
93
  - ">="
83
94
  - !ruby/object:Gem::Version
84
95
  version: "0"
85
96
  required_rubygems_version: !ruby/object:Gem::Requirement
86
97
  requirements:
87
- - *id004
98
+ - *id005
88
99
  requirements: []
89
100
 
90
101
  rubyforge_project:
@@ -95,4 +106,5 @@ summary: JSON helpers for Deas apps
95
106
  test_files:
96
107
  - test/helper.rb
97
108
  - test/support/factory.rb
109
+ - test/system/rack_tests.rb
98
110
  - test/unit/view_handler_tests.rb