azeroth 0.7.4 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 197968637291c04e3ce145d6d5dd9f84451e4b47d104d420aef7c1a5e7b999dc
4
- data.tar.gz: 9936013b82fcc56048027c6a469130bc15913e095c5373a9b3b50d577d2fcc93
3
+ metadata.gz: '09152b8053d40bd19405c5b7165458483d4304310fa5ec64c0d2b5723dda0067'
4
+ data.tar.gz: 1a1039542352929720e5cc7ae1242932b7d2a65856e2156b14a36d1a8bb1722b
5
5
  SHA512:
6
- metadata.gz: d05f185b913c3ac80e58bfad3cdcfea1de68c4836251d5a121826961bf3779adc3e9b39e4dff6d92e72204a4bc8d355d063f0b910c4607dad17f741206a31149
7
- data.tar.gz: 85e4d4c4625e36fd40358bf486e5bb2dd81fef82cc6fbf198545b6fdad51642d63d3ee5af2e828d0cf394ca0dfbf7aff5efd568634517a1c5236a79901275915
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.7.4](https://www.rubydoc.info/gems/azeroth/0.7.4)
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', '~> 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-core', '3.9.3'
39
- gem.add_development_dependency 'rspec-expectations', '3.9.4'
40
- gem.add_development_dependency 'rspec-mocks', '3.9.1'
41
- gem.add_development_dependency 'rspec-rails', '3.9.0'
42
- gem.add_development_dependency 'rspec-support', '3.9.4'
43
- gem.add_development_dependency 'rubocop', '0.80.1'
44
- gem.add_development_dependency 'rubocop-rspec', '1.38.1'
45
- gem.add_development_dependency 'rubycritic', '4.6.1'
46
- gem.add_development_dependency 'simplecov', '0.17.1'
47
- gem.add_development_dependency 'sqlite3', '1.4.2'
48
- gem.add_development_dependency 'yard', '0.9.26'
49
- gem.add_development_dependency 'yardstick', '0.9.9'
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
@@ -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
- builder = Sinclair.new(self)
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Azeroth
4
- VERSION = '0.7.4'
4
+ VERSION = '0.8.0'
5
5
  end
@@ -11,7 +11,7 @@ describe DocumentsController do
11
11
  let(:documents_count) { 0 }
12
12
 
13
13
  before do
14
- documents_count.times.map { create(:document) }
14
+ create_list(:document, documents_count)
15
15
  end
16
16
 
17
17
  context 'when calling on format json' do
@@ -11,7 +11,7 @@ describe DocumentsWithErrorController do
11
11
  let(:documents_count) { 0 }
12
12
 
13
13
  before do
14
- documents_count.times.map { create(:document) }
14
+ create_list(:document, documents_count)
15
15
  end
16
16
 
17
17
  context 'when calling on format json' do
@@ -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
- documents_count.times.map { create(:document) }
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
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class PaginatedDocumentsController < ApplicationController
4
+ include Azeroth::Resourceable
5
+
6
+ resource_for :document, only: 'index', paginated: true
7
+ end
@@ -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
@@ -34,7 +34,7 @@ describe Azeroth::RequestHandler do
34
34
  end
35
35
 
36
36
  before do
37
- documents_count.times { create(:document) }
37
+ create_list(:document, documents_count)
38
38
 
39
39
  allow(controller).to receive(:params)
40
40
  .and_return(params)
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 }
@@ -25,7 +25,7 @@ shared_examples 'a request handler' do |status: :ok|
25
25
  end
26
26
 
27
27
  before do
28
- documents_count.times { create(:document) }
28
+ create_list(:document, documents_count)
29
29
 
30
30
  allow(controller).to receive(:params)
31
31
  .and_return(params)
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.7.4
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-07-09 00:00:00.000000000 Z
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