deas-json 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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