deas-json 0.2.0 → 0.3.0

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.
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source "https://rubygems.org"
3
3
  gemspec
4
4
 
5
5
  gem 'rake', "~> 10.4.0"
6
- gem 'pry', "~> 0.9.0"
6
+ gem 'pry', "~> 0.9.0"
data/deas-json.gemspec CHANGED
@@ -18,8 +18,9 @@ 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.14"])
21
+ gem.add_development_dependency("assert", ["~> 2.15"])
22
22
 
23
- gem.add_dependency("deas", ["~> 0.34"])
23
+ gem.add_dependency("deas", ["~> 0.39"])
24
+ gem.add_dependency("much-plugin", ["~> 0.1"])
24
25
 
25
26
  end
@@ -1,4 +1,4 @@
1
1
  module Deas; end
2
2
  module Deas::Json
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
@@ -1,40 +1,35 @@
1
1
  require 'deas/view_handler'
2
+ require 'much-plugin'
2
3
 
3
4
  module Deas::Json
4
5
 
5
6
  module ViewHandler
7
+ include MuchPlugin
6
8
 
7
- DEF_STATUS = nil
9
+ DEF_STATUS = 200.freeze
8
10
  DEF_HEADERS = {}.freeze
9
11
  DEF_BODY = '{}'.freeze
10
12
 
11
- def self.included(klass)
12
- klass.class_eval do
13
- include Deas::ViewHandler
14
- include InstanceMethods
15
- end
13
+ plugin_included do
14
+ include Deas::ViewHandler
15
+ include InstanceMethods
16
+
17
+ before_init{ content_type('.json', 'charset' => 'utf-8') }
16
18
  end
17
19
 
18
20
  module InstanceMethods
19
21
 
20
- def initialize(*args)
21
- super(*args)
22
- content_type :json
23
- end
24
-
25
22
  private
26
23
 
27
24
  # Some http clients will error when trying to parse an empty body when the
28
25
  # content type is 'json'. This will default the body to a string that
29
26
  # can be parsed to an empty json object
30
27
  def halt(*args)
31
- super(DEF_STATUS, DEF_HEADERS, DEF_BODY) if args.empty?
32
- body, headers, status = [
33
- !args.last.kind_of?(::Hash) && !args.last.kind_of?(::Integer) ? args.pop : DEF_BODY,
34
- args.last.kind_of?(::Hash) ? args.pop : DEF_HEADERS,
35
- args.first.kind_of?(::Integer) ? args.first : DEF_STATUS
36
- ]
37
- super(status, headers, body)
28
+ super(
29
+ args.first.instance_of?(::Fixnum) ? args.shift : DEF_STATUS,
30
+ args.first.kind_of?(::Hash) ? args.shift : DEF_HEADERS,
31
+ args.first.respond_to?(:each) ? args.shift : DEF_BODY
32
+ )
38
33
  end
39
34
 
40
35
  end
@@ -1,7 +1,6 @@
1
1
  require 'assert'
2
2
  require 'deas-json/view_handler'
3
3
 
4
- require 'deas/test_helpers'
5
4
  require 'deas/view_handler'
6
5
 
7
6
  module Deas::Json::ViewHandler
@@ -13,12 +12,16 @@ module Deas::Json::ViewHandler
13
12
  end
14
13
  subject{ @handler_class }
15
14
 
15
+ should "use much-plugin" do
16
+ assert_includes MuchPlugin, Deas::Json::ViewHandler
17
+ end
18
+
16
19
  should "be a deas view handler" do
17
20
  assert_includes Deas::ViewHandler, subject
18
21
  end
19
22
 
20
23
  should "know its default status, headers and body values" do
21
- assert_equal nil, subject::DEF_STATUS
24
+ assert_equal 200, subject::DEF_STATUS
22
25
  assert_equal Hash.new, subject::DEF_HEADERS
23
26
  assert_equal '{}', subject::DEF_BODY
24
27
  end
@@ -26,28 +29,32 @@ module Deas::Json::ViewHandler
26
29
  end
27
30
 
28
31
  class InitTests < UnitTests
29
- include Deas::TestHelpers
32
+ include Deas::ViewHandler::TestHelpers
30
33
 
31
34
  desc "when init"
32
35
  setup do
36
+ @status = Factory.integer
37
+ @headers = { Factory.string => Factory.string }
38
+ @body = [Factory.text]
39
+
33
40
  @runner = test_runner(@handler_class)
34
41
  @handler = @runner.handler
35
42
  end
36
43
  subject{ @runner }
37
44
 
38
45
  should "force its content type to :json" do
39
- assert_equal :json, subject.content_type.value
46
+ assert_equal '.json', subject.content_type_args.extname
47
+ exp = { 'charset' => 'utf-8' }
48
+ assert_equal exp, subject.content_type_args.params
40
49
  end
41
50
 
42
51
  should "use all given args" do
43
- @handler.status = Factory.integer
44
- @handler.headers = { Factory.string => Factory.string }
45
- @handler.body = Factory.text
52
+ @handler.halt_args = [@status, @headers, @body]
46
53
  response = @runner.run
47
54
 
48
- assert_equal @handler.status, response.status
49
- assert_equal @handler.headers, response.headers
50
- assert_equal @handler.body, response.body
55
+ assert_equal @status, response.status
56
+ assert_equal @headers, response.headers
57
+ assert_equal @body, response.body
51
58
  end
52
59
 
53
60
  should "default its status, headers and body if not provided" do
@@ -59,60 +66,57 @@ module Deas::Json::ViewHandler
59
66
  end
60
67
 
61
68
  should "default its headers and body if not provided" do
62
- @handler.status = Factory.integer
69
+ @handler.halt_args = [@status]
63
70
  response = @runner.run
64
71
 
65
- assert_equal @handler.status, response.status
66
- assert_equal DEF_HEADERS, response.headers
67
- assert_equal DEF_BODY, response.body
72
+ assert_equal @status, response.status
73
+ assert_equal DEF_HEADERS, response.headers
74
+ assert_equal DEF_BODY, response.body
68
75
  end
69
76
 
70
77
  should "default its status and body if not provided" do
71
- @handler.headers = { Factory.string => Factory.string }
78
+ @handler.halt_args = [@headers]
72
79
  response = @runner.run
73
80
 
74
- assert_equal DEF_STATUS, response.status
75
- assert_equal @handler.headers, response.headers
76
- assert_equal DEF_BODY, response.body
81
+ assert_equal DEF_STATUS, response.status
82
+ assert_equal @headers, response.headers
83
+ assert_equal DEF_BODY, response.body
77
84
  end
78
85
 
79
86
  should "default its status and headers if not provided" do
80
- @handler.body = Factory.text
87
+ @handler.halt_args = [@body]
81
88
  response = @runner.run
82
89
 
83
- assert_equal DEF_STATUS, response.status
84
- assert_equal DEF_HEADERS, response.headers
85
- assert_equal @handler.body, response.body
90
+ assert_equal DEF_STATUS, response.status
91
+ assert_equal DEF_HEADERS, response.headers
92
+ assert_equal @body, response.body
86
93
  end
87
94
 
88
95
  should "default its status if not provided" do
89
- @handler.headers = { Factory.string => Factory.string }
90
- @handler.body = Factory.text
96
+ @handler.halt_args = [@headers, @body]
91
97
  response = @runner.run
92
98
 
93
- assert_equal DEF_STATUS, response.status
94
- assert_equal @handler.headers, response.headers
95
- assert_equal @handler.body, response.body
99
+ assert_equal DEF_STATUS, response.status
100
+ assert_equal @headers, response.headers
101
+ assert_equal @body, response.body
96
102
  end
97
103
 
98
104
  should "default its headers if not provided" do
99
- @handler.status = Factory.integer
100
- @handler.body = Factory.text
105
+ @handler.halt_args = [@status, @body]
101
106
  response = @runner.run
102
107
 
103
- assert_equal @handler.status, response.status
104
- assert_equal DEF_HEADERS, response.headers
105
- assert_equal @handler.body, response.body
108
+ assert_equal @status, response.status
109
+ assert_equal DEF_HEADERS, response.headers
110
+ assert_equal @body, response.body
106
111
  end
107
112
 
108
113
  should "default its body if not provided" do
109
- @handler.status = Factory.integer
110
- @handler.headers = { Factory.string => Factory.string }
114
+ @handler.halt_args = [@status, @headers]
111
115
  response = @runner.run
112
116
 
113
- assert_equal @handler.status, response.status
114
- assert_equal @handler.headers, response.headers
115
- assert_equal DEF_BODY, response.body
117
+ assert_equal @status, response.status
118
+ assert_equal @headers, response.headers
119
+ assert_equal DEF_BODY, response.body
116
120
  end
117
121
 
118
122
  end
@@ -120,12 +124,9 @@ module Deas::Json::ViewHandler
120
124
  class TestJsonHandler
121
125
  include Deas::Json::ViewHandler
122
126
 
123
- attr_accessor :status, :headers, :body
127
+ attr_accessor :halt_args
124
128
 
125
- def run!
126
- args = [status, headers, body].compact
127
- halt *args
128
- end
129
+ def run!; halt *(@halt_args || []).dup; end
129
130
 
130
131
  end
131
132
 
metadata CHANGED
@@ -1,55 +1,82 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: deas-json
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 19
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Kelly Redding
8
14
  - Collin Redding
9
15
  autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
- date: 2015-06-09 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: assert
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '2.14'
18
+
19
+ date: 2015-11-24 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ hash: 29
28
+ segments:
29
+ - 2
30
+ - 15
31
+ version: "2.15"
21
32
  type: :development
33
+ name: assert
34
+ version_requirements: *id001
22
35
  prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '2.14'
28
- - !ruby/object:Gem::Dependency
36
+ - !ruby/object:Gem::Dependency
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ hash: 69
43
+ segments:
44
+ - 0
45
+ - 39
46
+ version: "0.39"
47
+ type: :runtime
29
48
  name: deas
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '0.34'
49
+ version_requirements: *id002
50
+ prerelease: false
51
+ - !ruby/object:Gem::Dependency
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ hash: 9
58
+ segments:
59
+ - 0
60
+ - 1
61
+ version: "0.1"
35
62
  type: :runtime
63
+ name: much-plugin
64
+ version_requirements: *id003
36
65
  prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '0.34'
42
66
  description: JSON helpers for Deas apps
43
- email:
67
+ email:
44
68
  - kelly@kellyredding.com
45
69
  - collin.redding@me.com
46
70
  executables: []
71
+
47
72
  extensions: []
73
+
48
74
  extra_rdoc_files: []
49
- files:
50
- - ".gitignore"
75
+
76
+ files:
77
+ - .gitignore
51
78
  - Gemfile
52
- - LICENSE.txt
79
+ - LICENSE
53
80
  - README.md
54
81
  - Rakefile
55
82
  - deas-json.gemspec
@@ -62,30 +89,39 @@ files:
62
89
  - test/unit/view_handler_tests.rb
63
90
  - tmp/.gitkeep
64
91
  homepage: http://github.com/redding/deas-json
65
- licenses:
92
+ licenses:
66
93
  - MIT
67
- metadata: {}
68
94
  post_install_message:
69
95
  rdoc_options: []
70
- require_paths:
96
+
97
+ require_paths:
71
98
  - lib
72
- required_ruby_version: !ruby/object:Gem::Requirement
73
- requirements:
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
74
102
  - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- required_rubygems_version: !ruby/object:Gem::Requirement
78
- requirements:
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
79
111
  - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
112
+ - !ruby/object:Gem::Version
113
+ hash: 3
114
+ segments:
115
+ - 0
116
+ version: "0"
82
117
  requirements: []
118
+
83
119
  rubyforge_project:
84
- rubygems_version: 2.4.5
120
+ rubygems_version: 1.8.29
85
121
  signing_key:
86
- specification_version: 4
122
+ specification_version: 3
87
123
  summary: JSON helpers for Deas apps
88
- test_files:
124
+ test_files:
89
125
  - test/helper.rb
90
126
  - test/support/factory.rb
91
127
  - test/unit/view_handler_tests.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 55107842eeb3637f778f8e16577e0bee2fd0c200
4
- data.tar.gz: d49484cda7e61e455a73545c21b3042d058b1215
5
- SHA512:
6
- metadata.gz: 0745d0de048a72bdcd85fb0a0f02116ae461cbe668eda971fe990abcf8ea4e36ffa5891af4979200fa6185c711fa404ba07d9a17be75e974c7db27be3a8ac29a
7
- data.tar.gz: f9c60e7d663ae35c2a26ee4763b48687ff89686434db9185f990d940de36b63179b09202ae19e2e05024ab28cfe4aa0a8620e2c1d6e6eab4a8f350a2407a5aae
File without changes