json_api_toolbox 0.6.1 → 0.7.0

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
  SHA1:
3
- metadata.gz: 9e89034246f639df9db8ed22e59a9c36c6106d6e
4
- data.tar.gz: 3b6aa85aeb7d1c5b637f2dc1f23591ec0524bfd4
3
+ metadata.gz: d0559ff7f9c8bb8d2bab74981d15ec808a29efaf
4
+ data.tar.gz: '08d15e1d6f8b234f7af34d1864ea4429d429ed83'
5
5
  SHA512:
6
- metadata.gz: 419b604717ac0006a07d65054f74449930858dca63d7ee3b2826d8dc0506bc3a5df62a9d7779d37d0bbc009ba743fbab3260cbc9d796ae738efe223d190c91e4
7
- data.tar.gz: be81ed014c3e6a760ef749637ccf4c88c6b81d557de0ac0ae4640867f3620e2446e31c9c5da8b5e68b38fa6435b544c8a5ddec802dd4df4659491f105b777d3a
6
+ metadata.gz: 97eb5a10f3a1c0ffb66cdfd2fc79b74319b0b9a7442cf379f66aa63dabcc9e8d7783d30690b20bc47d3aee3dc0c806311be99b04e46b67044b846d8c1e765404
7
+ data.tar.gz: d54e00475644cebb4a7fe8283c963242c70d54cf8a4f975f373812eeaf40f62836a14d70310fbe71d87a64b8ac83c5c4ccf21405c1a77abb219bf65f0d32993f
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [0.7.0] - 2017-12-11
10
+ ### Added
11
+ - Added Enum Serializable
12
+ - Added Job Serializable
13
+ - Added shared example "a json api response"
14
+ - Added meta response count for all index routes
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_dependency 'activesupport', '>= 4.0'
23
- spec.add_dependency 'jsonapi-rails', '>= 0.3.1'
23
+ spec.add_dependency 'jsonapi-serializable', '>= 0.3.0'
24
24
  spec.add_dependency 'rspec', '~> 3.0'
25
25
 
26
26
  spec.add_development_dependency 'bundler', '~> 1.15'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JsonApiToolbox
4
+ module Serializables
5
+ class SerializableEnumOption < JSONAPI::Serializable::Resource
6
+ type { @object[:type] }
7
+
8
+ id { @object[:id] }
9
+
10
+ attribute :description { @object[:description] }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JsonApiToolbox
4
+ module Serializables
5
+ class SerializableJob < JSONAPI::Serializable::Resource
6
+ type :jobs
7
+
8
+ id { @object.job_id }
9
+
10
+ attribute(:queue_name) { @object.queue_name }
11
+ end
12
+ end
13
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rspec'
4
-
5
3
  module JsonApiToolbox
6
4
  module SpecSupport
7
5
  module SharedExamplesForControllers
@@ -62,6 +60,16 @@ module JsonApiToolbox
62
60
  expect(attributes).to match_array(relation_keys)
63
61
  end
64
62
  end
63
+
64
+ RSpec.shared_examples 'a json api response' do
65
+ let(:body) { JSON.parse(response.body) }
66
+ let(:data) { body['data'].first }
67
+
68
+ it { expect(body).to have_key('data') }
69
+ it { expect(data).to have_key('type') }
70
+ it { expect(data).to have_key('id') }
71
+ it { expect(data).to have_key('attributes') }
72
+ end
65
73
  end
66
74
  end
67
75
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonApiToolbox
4
- VERSION = '0.6.1'
4
+ VERSION = '0.7.0'
5
5
  end
@@ -1,9 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/inflector'
4
- require_relative 'json_api_toolbox/spec_support/shared_examples_for_controllers'
5
4
  require 'renderizable'
6
5
  require 'enums'
7
6
  require 'postable'
7
+ require 'jsonapi/serializable'
8
+
9
+ require_relative 'json_api_toolbox/spec_support/shared_examples_for_controllers'
10
+ require_relative 'json_api_toolbox/serializables/serializable_enum_option'
11
+ require_relative 'json_api_toolbox/serializables/serializable_job'
8
12
 
9
13
  module JsonApiToolbox; end
data/lib/renderizable.rb CHANGED
@@ -6,7 +6,9 @@ module JsonApiToolbox
6
6
  if object.respond_to?(:errors) && object.errors.any?
7
7
  render({ jsonapi_errors: object.errors }.merge(options))
8
8
  else
9
- render({ jsonapi: object, include: includes_params }.merge(options))
9
+ renderization =
10
+ { jsonapi: object, include: includes_params }.merge(options)
11
+ render(renderization, build_meta_data(object))
10
12
  end
11
13
  end
12
14
 
@@ -46,5 +48,11 @@ module JsonApiToolbox
46
48
  detail: message
47
49
  }
48
50
  end
51
+
52
+ def build_meta_data(objects)
53
+ if objects.respond_to?(:count)
54
+ { meta: { 'total-count' => objects.count } }
55
+ end
56
+ end
49
57
  end
50
58
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_api_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adriano Bacha
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-30 00:00:00.000000000 Z
11
+ date: 2017-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: jsonapi-rails
28
+ name: jsonapi-serializable
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.3.1
33
+ version: 0.3.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.3.1
40
+ version: 0.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -133,6 +133,7 @@ files:
133
133
  - ".rspec"
134
134
  - ".ruby-version"
135
135
  - ".travis.yml"
136
+ - CHANGELOG.md
136
137
  - Gemfile
137
138
  - README.md
138
139
  - Rakefile
@@ -140,6 +141,8 @@ files:
140
141
  - json_api_toolbox.gemspec
141
142
  - lib/enums.rb
142
143
  - lib/json_api_toolbox.rb
144
+ - lib/json_api_toolbox/serializables/serializable_enum_option.rb
145
+ - lib/json_api_toolbox/serializables/serializable_job.rb
143
146
  - lib/json_api_toolbox/spec_support/shared_examples_for_controllers.rb
144
147
  - lib/json_api_toolbox/version.rb
145
148
  - lib/postable.rb