deas-json 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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