azeroth 0.7.4 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/azeroth.gemspec +26 -24
- data/lib/azeroth/decorator.rb +2 -3
- data/lib/azeroth/decorator/method_builder.rb +26 -0
- data/lib/azeroth/options.rb +24 -1
- data/lib/azeroth/request_handler/index.rb +46 -0
- data/lib/azeroth/version.rb +1 -1
- data/spec/controllers/documents_controller_spec.rb +1 -1
- data/spec/controllers/documents_with_error_controller_spec.rb +1 -1
- data/spec/controllers/index_documents_controller_spec.rb +12 -1
- data/spec/controllers/paginated_documents_controller_spec.rb +97 -0
- data/spec/dummy/app/controllers/paginated_documents_controller.rb +7 -0
- data/spec/dummy/config/routes.rb +1 -0
- data/spec/lib/azeroth/decorator/method_builder_spec.rb +23 -0
- data/spec/lib/azeroth/request_handler/index_spec.rb +43 -0
- data/spec/lib/azeroth/request_handler_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/support/shared_examples/request_handler.rb +1 -1
- metadata +37 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09152b8053d40bd19405c5b7165458483d4304310fa5ec64c0d2b5723dda0067'
|
4
|
+
data.tar.gz: 1a1039542352929720e5cc7ae1242932b7d2a65856e2156b14a36d1a8bb1722b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ae5257e2851ccbbadbd79d9a0c0a13be63e392b2af16c6e1f66be399ee00bc51b06f9682f25d88648f3a32d2c07451d456d80035f04b48a4cc471d27a572e59
|
7
|
+
data.tar.gz: d7c01b81ce09615d65cc451d2a1669ac9d843d18d75fbb0c12c2e4356507fce62288145bd30295674619a0649327b1b69568fede8adb452e602073f67659235e
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Azeroth
|
|
11
11
|
|
12
12
|
Yard Documentation
|
13
13
|
-------------------
|
14
|
-
[https://www.rubydoc.info/gems/azeroth/0.
|
14
|
+
[https://www.rubydoc.info/gems/azeroth/0.8.0](https://www.rubydoc.info/gems/azeroth/0.8.0)
|
15
15
|
|
16
16
|
Azeroth has been designed making the coding of controllers easier
|
17
17
|
as routes in controllers are usually copy, paste and replace of same
|
@@ -61,6 +61,8 @@ It accepts options
|
|
61
61
|
- before_save: Method/Proc to be ran before saving the resource on create or update
|
62
62
|
- after_save: Method/Proc to be ran after saving the resource on create or update
|
63
63
|
- build_with: Method/Block to be ran when building the reource on create
|
64
|
+
- paginated: Flag when pagination should be applied
|
65
|
+
- per_page: Number of items returned when pagination is active
|
64
66
|
|
65
67
|
```ruby
|
66
68
|
# publishers_controller.rb
|
data/azeroth.gemspec
CHANGED
@@ -23,28 +23,30 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_runtime_dependency 'jace', '>= 0.0.3'
|
24
24
|
gem.add_runtime_dependency 'sinclair', '>= 1.6.7'
|
25
25
|
|
26
|
-
gem.add_development_dependency 'actionpack',
|
27
|
-
gem.add_development_dependency 'activerecord',
|
28
|
-
gem.add_development_dependency 'bundler',
|
29
|
-
gem.add_development_dependency 'factory_bot',
|
30
|
-
gem.add_development_dependency 'nokogiri',
|
31
|
-
gem.add_development_dependency 'pry',
|
32
|
-
gem.add_development_dependency 'pry-nav',
|
33
|
-
gem.add_development_dependency 'rails',
|
34
|
-
gem.add_development_dependency 'rails-controller-testing',
|
35
|
-
gem.add_development_dependency 'rake',
|
36
|
-
gem.add_development_dependency 'reek',
|
37
|
-
gem.add_development_dependency 'rspec',
|
38
|
-
gem.add_development_dependency 'rspec-
|
39
|
-
gem.add_development_dependency 'rspec-
|
40
|
-
gem.add_development_dependency 'rspec-
|
41
|
-
gem.add_development_dependency 'rspec-
|
42
|
-
gem.add_development_dependency 'rspec-
|
43
|
-
gem.add_development_dependency '
|
44
|
-
gem.add_development_dependency 'rubocop
|
45
|
-
gem.add_development_dependency '
|
46
|
-
gem.add_development_dependency '
|
47
|
-
gem.add_development_dependency '
|
48
|
-
gem.add_development_dependency '
|
49
|
-
gem.add_development_dependency '
|
26
|
+
gem.add_development_dependency 'actionpack', '~> 5.2.x'
|
27
|
+
gem.add_development_dependency 'activerecord', '~> 5.2.x'
|
28
|
+
gem.add_development_dependency 'bundler', '1.16.1'
|
29
|
+
gem.add_development_dependency 'factory_bot', '5.2.0'
|
30
|
+
gem.add_development_dependency 'nokogiri', '1.11.4'
|
31
|
+
gem.add_development_dependency 'pry', '0.12.2'
|
32
|
+
gem.add_development_dependency 'pry-nav', '0.3.0'
|
33
|
+
gem.add_development_dependency 'rails', '~> 5.2.x'
|
34
|
+
gem.add_development_dependency 'rails-controller-testing', '1.0.4'
|
35
|
+
gem.add_development_dependency 'rake', '13.0.3'
|
36
|
+
gem.add_development_dependency 'reek', '6.0.3'
|
37
|
+
gem.add_development_dependency 'rspec', '3.9.0'
|
38
|
+
gem.add_development_dependency 'rspec-collection_matchers', '1.2.0'
|
39
|
+
gem.add_development_dependency 'rspec-core', '3.9.3'
|
40
|
+
gem.add_development_dependency 'rspec-expectations', '3.9.4'
|
41
|
+
gem.add_development_dependency 'rspec-mocks', '3.9.1'
|
42
|
+
gem.add_development_dependency 'rspec-rails', '3.9.0'
|
43
|
+
gem.add_development_dependency 'rspec-support', '3.9.4'
|
44
|
+
gem.add_development_dependency 'rubocop', '0.80.1'
|
45
|
+
gem.add_development_dependency 'rubocop-rspec', '1.38.1'
|
46
|
+
gem.add_development_dependency 'rubycritic', '4.6.1'
|
47
|
+
gem.add_development_dependency 'shoulda-matchers', '4.3.0'
|
48
|
+
gem.add_development_dependency 'simplecov', '0.17.1'
|
49
|
+
gem.add_development_dependency 'sqlite3', '1.4.2'
|
50
|
+
gem.add_development_dependency 'yard', '0.9.26'
|
51
|
+
gem.add_development_dependency 'yardstick', '0.9.9'
|
50
52
|
end
|
data/lib/azeroth/decorator.rb
CHANGED
@@ -42,6 +42,7 @@ module Azeroth
|
|
42
42
|
class Decorator
|
43
43
|
autoload :HashBuilder, 'azeroth/decorator/hash_builder'
|
44
44
|
autoload :KeyValueExtractor, 'azeroth/decorator/key_value_extractor'
|
45
|
+
autoload :MethodBuilder, 'azeroth/decorator/method_builder'
|
45
46
|
autoload :Options, 'azeroth/decorator/options'
|
46
47
|
|
47
48
|
class << self
|
@@ -228,9 +229,7 @@ module Azeroth
|
|
228
229
|
def expose(attribute, **options_hash)
|
229
230
|
options = Decorator::Options.new(options_hash)
|
230
231
|
|
231
|
-
|
232
|
-
builder.add_method(attribute, "@object.#{attribute}")
|
233
|
-
builder.build
|
232
|
+
MethodBuilder.build_reader(self, attribute)
|
234
233
|
|
235
234
|
attributes_map[attribute] = options
|
236
235
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sinclair'
|
4
|
+
|
5
|
+
module Azeroth
|
6
|
+
class Decorator
|
7
|
+
# Responsible for building readers for attributes
|
8
|
+
# @api private
|
9
|
+
class MethodBuilder < Sinclair
|
10
|
+
# Builds reader
|
11
|
+
#
|
12
|
+
# reaader delegate method calls to @object
|
13
|
+
#
|
14
|
+
# @return (see Sinclair#build)
|
15
|
+
def self.build_reader(klass, attribute)
|
16
|
+
new(klass).build_reader(attribute)
|
17
|
+
end
|
18
|
+
|
19
|
+
# (see MethodBuilder.build_reader)
|
20
|
+
def build_reader(attribute)
|
21
|
+
add_method(attribute, "@object.#{attribute}")
|
22
|
+
build
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/azeroth/options.rb
CHANGED
@@ -20,7 +20,9 @@ module Azeroth
|
|
20
20
|
decorator: true,
|
21
21
|
before_save: nil,
|
22
22
|
after_save: nil,
|
23
|
-
build_with: nil
|
23
|
+
build_with: nil,
|
24
|
+
paginated: false,
|
25
|
+
per_page: 20
|
24
26
|
}.freeze
|
25
27
|
|
26
28
|
with_options DEFAULT_OPTIONS
|
@@ -46,6 +48,13 @@ module Azeroth
|
|
46
48
|
)
|
47
49
|
end
|
48
50
|
|
51
|
+
alias paginated? paginated
|
52
|
+
# @method paginated?
|
53
|
+
# @api private
|
54
|
+
#
|
55
|
+
# @see paginated
|
56
|
+
# @return [TrueClass,FalseClass]
|
57
|
+
|
49
58
|
# @method only
|
50
59
|
# @api private
|
51
60
|
#
|
@@ -100,5 +109,19 @@ module Azeroth
|
|
100
109
|
# Block or method name to be ran when building the resource
|
101
110
|
#
|
102
111
|
# @return [Symbol,Proc]
|
112
|
+
|
113
|
+
# @method paginated
|
114
|
+
# @api private
|
115
|
+
#
|
116
|
+
# Boolean indicating if pagination should or not be used
|
117
|
+
#
|
118
|
+
# @return [TrueClass,FalseClass]
|
119
|
+
|
120
|
+
# @method per_page
|
121
|
+
# @api private
|
122
|
+
#
|
123
|
+
# Number of elements when pagination is active
|
124
|
+
#
|
125
|
+
# @return [Integer]
|
103
126
|
end
|
104
127
|
end
|
@@ -8,12 +8,58 @@ module Azeroth
|
|
8
8
|
class Index < RequestHandler
|
9
9
|
private
|
10
10
|
|
11
|
+
delegate :paginated?, :per_page, to: :options
|
12
|
+
|
11
13
|
# @private
|
12
14
|
#
|
13
15
|
# return a collection of the model
|
14
16
|
#
|
15
17
|
# @return [Enumerable<Object>]
|
16
18
|
def resource
|
19
|
+
return scoped_entries unless paginated?
|
20
|
+
|
21
|
+
paginated_entries
|
22
|
+
end
|
23
|
+
|
24
|
+
# @private
|
25
|
+
#
|
26
|
+
# paginated collection of the model
|
27
|
+
#
|
28
|
+
# @return [Enumerable<Object>]
|
29
|
+
def paginated_entries
|
30
|
+
scoped_entries.offset(offset).limit(limit)
|
31
|
+
end
|
32
|
+
|
33
|
+
# @private
|
34
|
+
#
|
35
|
+
# offest used in pagination
|
36
|
+
#
|
37
|
+
# offset is retrieved from +params[:per_page]+
|
38
|
+
# or +options.per_page+
|
39
|
+
#
|
40
|
+
# @return [Integer]
|
41
|
+
def offset
|
42
|
+
page = (params[:page] || 1).to_i - 1
|
43
|
+
page * limit
|
44
|
+
end
|
45
|
+
|
46
|
+
# @private
|
47
|
+
#
|
48
|
+
# limit used in pagination
|
49
|
+
#
|
50
|
+
# limit is retrieved from +params[:page]+
|
51
|
+
#
|
52
|
+
# @return [Integer]
|
53
|
+
def limit
|
54
|
+
(params[:per_page] || per_page).to_i
|
55
|
+
end
|
56
|
+
|
57
|
+
# @private
|
58
|
+
#
|
59
|
+
# default scope of elements
|
60
|
+
#
|
61
|
+
# @return [Enumerable<Object>]
|
62
|
+
def scoped_entries
|
17
63
|
controller.send(model.plural)
|
18
64
|
end
|
19
65
|
end
|
data/lib/azeroth/version.rb
CHANGED
@@ -10,7 +10,7 @@ describe IndexDocumentsController do
|
|
10
10
|
describe 'GET index' do
|
11
11
|
let(:documents_count) { 0 }
|
12
12
|
let!(:documents) do
|
13
|
-
|
13
|
+
create_list(:document, documents_count)
|
14
14
|
end
|
15
15
|
|
16
16
|
let(:expected_json) do
|
@@ -37,6 +37,17 @@ describe IndexDocumentsController do
|
|
37
37
|
expect(parsed_response).to eq(expected_json)
|
38
38
|
end
|
39
39
|
end
|
40
|
+
|
41
|
+
context 'when there are more documents than expected pagination' do
|
42
|
+
let(:documents_count) { Random.rand(21..30) }
|
43
|
+
|
44
|
+
it { expect(response).to be_successful }
|
45
|
+
|
46
|
+
it 'returns all documents' do
|
47
|
+
expect(parsed_response)
|
48
|
+
.to have(documents_count).elements
|
49
|
+
end
|
50
|
+
end
|
40
51
|
end
|
41
52
|
end
|
42
53
|
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PaginatedDocumentsController do
|
6
|
+
let(:parsed_response) do
|
7
|
+
JSON.parse(response.body)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'GET index' do
|
11
|
+
let(:documents_count) { 0 }
|
12
|
+
let!(:documents) do
|
13
|
+
create_list(:document, documents_count)
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:expected_json) do
|
17
|
+
Document::Decorator.new(documents).as_json
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when calling on format json' do
|
21
|
+
let(:parameters) { {} }
|
22
|
+
|
23
|
+
before do
|
24
|
+
get :index, params: parameters.merge(format: :json)
|
25
|
+
end
|
26
|
+
|
27
|
+
it { expect(response).to be_successful }
|
28
|
+
|
29
|
+
it 'returns empty array' do
|
30
|
+
expect(parsed_response).to eq(expected_json)
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when there is a document' do
|
34
|
+
let(:documents_count) { 1 }
|
35
|
+
|
36
|
+
it { expect(response).to be_successful }
|
37
|
+
|
38
|
+
it 'renders documents json' do
|
39
|
+
expect(parsed_response).to eq(expected_json)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when there are more documents than expected pagination' do
|
44
|
+
let(:documents_count) { Random.rand(21..30) }
|
45
|
+
|
46
|
+
it { expect(response).to be_successful }
|
47
|
+
|
48
|
+
it 'returns paginated documents' do
|
49
|
+
expect(parsed_response)
|
50
|
+
.not_to have(documents_count).elements
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'returns full page of documents' do
|
54
|
+
expect(parsed_response)
|
55
|
+
.to have(20).elements
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'when page is given' do
|
60
|
+
let(:documents_count) { Random.rand(21..30) }
|
61
|
+
let(:parameters) { { page: 2 } }
|
62
|
+
|
63
|
+
it { expect(response).to be_successful }
|
64
|
+
|
65
|
+
it 'returns paginated documents' do
|
66
|
+
expect(parsed_response)
|
67
|
+
.not_to have(documents_count).elements
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'returns full page of documents' do
|
71
|
+
expect(parsed_response)
|
72
|
+
.to have(documents_count - 20)
|
73
|
+
.elements
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when per_page is given' do
|
78
|
+
let(:documents_count) { Random.rand(21..30) }
|
79
|
+
let(:per_page) { Random.rand(5..15) }
|
80
|
+
let(:parameters) { { per_page: per_page } }
|
81
|
+
|
82
|
+
it { expect(response).to be_successful }
|
83
|
+
|
84
|
+
it 'returns paginated documents' do
|
85
|
+
expect(parsed_response)
|
86
|
+
.not_to have(documents_count).elements
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'returns full page of documents' do
|
90
|
+
expect(parsed_response)
|
91
|
+
.to have(per_page)
|
92
|
+
.elements
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -4,6 +4,7 @@ Rails.application.routes.draw do
|
|
4
4
|
resources :documents
|
5
5
|
resources :public_documents, controller: :index_documents
|
6
6
|
resources :create_documents, controller: :documents_with_error
|
7
|
+
resources :paginated_documents
|
7
8
|
|
8
9
|
resources :publishers, only: %i[create index] do
|
9
10
|
resources :games, except: :delete
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Azeroth::Decorator::MethodBuilder do
|
6
|
+
let(:decorator_class) { Class.new(Azeroth::Decorator) }
|
7
|
+
let(:decorator) { decorator_class.new(object) }
|
8
|
+
let(:model) { build(:dummy_model) }
|
9
|
+
let(:object) { model }
|
10
|
+
|
11
|
+
describe '.build_reader' do
|
12
|
+
it do
|
13
|
+
expect { described_class.build_reader(decorator_class, :age) }
|
14
|
+
.to add_method(:age).to(decorator)
|
15
|
+
end
|
16
|
+
|
17
|
+
it do
|
18
|
+
described_class.build_reader(decorator_class, :age)
|
19
|
+
|
20
|
+
expect(decorator.age).to eq(model.age)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -8,5 +8,48 @@ describe Azeroth::RequestHandler::Index do
|
|
8
8
|
let(:documents_count) { 3 }
|
9
9
|
let(:expected_resource) { Document.all }
|
10
10
|
end
|
11
|
+
|
12
|
+
context 'when pagination is active' do
|
13
|
+
it_behaves_like 'a request handler' do
|
14
|
+
let(:documents_count) { Random.rand(21..30) }
|
15
|
+
let(:expected_resource) { Document.all.limit(20) }
|
16
|
+
let(:options_hash) { { paginated: true } }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when page is given' do
|
20
|
+
it_behaves_like 'a request handler' do
|
21
|
+
let(:documents_count) { Random.rand(41..50) }
|
22
|
+
let(:expected_resource) { Document.all.offset(20).limit(20) }
|
23
|
+
let(:options_hash) { { paginated: true } }
|
24
|
+
let(:extra_params) { { page: '2' } }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when third page is given' do
|
29
|
+
it_behaves_like 'a request handler' do
|
30
|
+
let(:documents_count) { Random.rand(41..50) }
|
31
|
+
let(:expected_resource) { Document.all.offset(40) }
|
32
|
+
let(:options_hash) { { paginated: true } }
|
33
|
+
let(:extra_params) { { page: '3' } }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when per_page is not default' do
|
38
|
+
it_behaves_like 'a request handler' do
|
39
|
+
let(:documents_count) { Random.rand(21..30) }
|
40
|
+
let(:expected_resource) { Document.all.limit(10) }
|
41
|
+
let(:options_hash) { { paginated: true, per_page: 10 } }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when per page is given in params' do
|
46
|
+
it_behaves_like 'a request handler' do
|
47
|
+
let(:documents_count) { Random.rand(41..50) }
|
48
|
+
let(:expected_resource) { Document.all.offset(15).limit(15) }
|
49
|
+
let(:options_hash) { { paginated: true, per_page: 10 } }
|
50
|
+
let(:extra_params) { { page: '2', per_page: '15' } }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
11
54
|
end
|
12
55
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -18,6 +18,8 @@ require File.expand_path('spec/dummy/db/schema.rb')
|
|
18
18
|
require 'rspec/rails'
|
19
19
|
require 'active_support/railtie'
|
20
20
|
require 'sinclair/matchers'
|
21
|
+
require 'shoulda-matchers'
|
22
|
+
require 'rspec/collection_matchers'
|
21
23
|
|
22
24
|
support_files = File.expand_path('spec/support/**/*.rb')
|
23
25
|
Dir[support_files].sort.each { |file| require file }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: azeroth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darthjee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -234,6 +234,20 @@ dependencies:
|
|
234
234
|
- - '='
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: 3.9.0
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: rspec-collection_matchers
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - '='
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: 1.2.0
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - '='
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: 1.2.0
|
237
251
|
- !ruby/object:Gem::Dependency
|
238
252
|
name: rspec-core
|
239
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -346,6 +360,20 @@ dependencies:
|
|
346
360
|
- - '='
|
347
361
|
- !ruby/object:Gem::Version
|
348
362
|
version: 4.6.1
|
363
|
+
- !ruby/object:Gem::Dependency
|
364
|
+
name: shoulda-matchers
|
365
|
+
requirement: !ruby/object:Gem::Requirement
|
366
|
+
requirements:
|
367
|
+
- - '='
|
368
|
+
- !ruby/object:Gem::Version
|
369
|
+
version: 4.3.0
|
370
|
+
type: :development
|
371
|
+
prerelease: false
|
372
|
+
version_requirements: !ruby/object:Gem::Requirement
|
373
|
+
requirements:
|
374
|
+
- - '='
|
375
|
+
- !ruby/object:Gem::Version
|
376
|
+
version: 4.3.0
|
349
377
|
- !ruby/object:Gem::Dependency
|
350
378
|
name: simplecov
|
351
379
|
requirement: !ruby/object:Gem::Requirement
|
@@ -431,6 +459,7 @@ files:
|
|
431
459
|
- lib/azeroth/decorator.rb
|
432
460
|
- lib/azeroth/decorator/hash_builder.rb
|
433
461
|
- lib/azeroth/decorator/key_value_extractor.rb
|
462
|
+
- lib/azeroth/decorator/method_builder.rb
|
434
463
|
- lib/azeroth/decorator/options.rb
|
435
464
|
- lib/azeroth/dummy_decorator.rb
|
436
465
|
- lib/azeroth/model.rb
|
@@ -452,6 +481,7 @@ files:
|
|
452
481
|
- spec/controllers/documents_controller_spec.rb
|
453
482
|
- spec/controllers/documents_with_error_controller_spec.rb
|
454
483
|
- spec/controllers/index_documents_controller_spec.rb
|
484
|
+
- spec/controllers/paginated_documents_controller_spec.rb
|
455
485
|
- spec/controllers/pokemon_masters_controller_spec.rb
|
456
486
|
- spec/controllers/pokemons_controller_spec.rb
|
457
487
|
- spec/dummy/.ruby-version
|
@@ -470,6 +500,7 @@ files:
|
|
470
500
|
- spec/dummy/app/controllers/documents_with_error_controller.rb
|
471
501
|
- spec/dummy/app/controllers/games_controller.rb
|
472
502
|
- spec/dummy/app/controllers/index_documents_controller.rb
|
503
|
+
- spec/dummy/app/controllers/paginated_documents_controller.rb
|
473
504
|
- spec/dummy/app/controllers/pokemon_masters_controller.rb
|
474
505
|
- spec/dummy/app/controllers/pokemons_controller.rb
|
475
506
|
- spec/dummy/app/controllers/publishers_controller.rb
|
@@ -554,6 +585,7 @@ files:
|
|
554
585
|
- spec/integration/yard/controllers/games_controller_spec.rb
|
555
586
|
- spec/lib/azeroth/decorator/hash_builder_spec.rb
|
556
587
|
- spec/lib/azeroth/decorator/key_value_extractor_spec.rb
|
588
|
+
- spec/lib/azeroth/decorator/method_builder_spec.rb
|
557
589
|
- spec/lib/azeroth/decorator_spec.rb
|
558
590
|
- spec/lib/azeroth/dummy_decorator_spec.rb
|
559
591
|
- spec/lib/azeroth/model_spec.rb
|
@@ -614,6 +646,7 @@ test_files:
|
|
614
646
|
- spec/controllers/documents_controller_spec.rb
|
615
647
|
- spec/controllers/documents_with_error_controller_spec.rb
|
616
648
|
- spec/controllers/index_documents_controller_spec.rb
|
649
|
+
- spec/controllers/paginated_documents_controller_spec.rb
|
617
650
|
- spec/controllers/pokemon_masters_controller_spec.rb
|
618
651
|
- spec/controllers/pokemons_controller_spec.rb
|
619
652
|
- spec/dummy/.ruby-version
|
@@ -632,6 +665,7 @@ test_files:
|
|
632
665
|
- spec/dummy/app/controllers/documents_with_error_controller.rb
|
633
666
|
- spec/dummy/app/controllers/games_controller.rb
|
634
667
|
- spec/dummy/app/controllers/index_documents_controller.rb
|
668
|
+
- spec/dummy/app/controllers/paginated_documents_controller.rb
|
635
669
|
- spec/dummy/app/controllers/pokemon_masters_controller.rb
|
636
670
|
- spec/dummy/app/controllers/pokemons_controller.rb
|
637
671
|
- spec/dummy/app/controllers/publishers_controller.rb
|
@@ -716,6 +750,7 @@ test_files:
|
|
716
750
|
- spec/integration/yard/controllers/games_controller_spec.rb
|
717
751
|
- spec/lib/azeroth/decorator/hash_builder_spec.rb
|
718
752
|
- spec/lib/azeroth/decorator/key_value_extractor_spec.rb
|
753
|
+
- spec/lib/azeroth/decorator/method_builder_spec.rb
|
719
754
|
- spec/lib/azeroth/decorator_spec.rb
|
720
755
|
- spec/lib/azeroth/dummy_decorator_spec.rb
|
721
756
|
- spec/lib/azeroth/model_spec.rb
|