azeroth 0.3.0 → 0.4.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: d5495356a8fc2f5a5010cc8639e993a7c53ddf4bce282e7483c9c65368f7e913
4
- data.tar.gz: dc31a2fb80a880d7d8228434d8364672bbca638c80ea5a1def52018d09f59e9c
3
+ metadata.gz: 7b900f12e602cd5e71dcb0384e0d4edf783a699a9462dd644d849ec52af171f1
4
+ data.tar.gz: c9212340df4b356fb223874e340a3679111d0dd1d80b4e0293d7b3f7afebb790
5
5
  SHA512:
6
- metadata.gz: 26105d0876fd07335e6eaed85c5b56318959bff5ecf8290fe1dcb1b6faca9971487cd7bf02295f2f093e0ae9cb91429cafd7af8d14cdc4a20b6ac2088b8a644a
7
- data.tar.gz: 1e95b957ef01408897acba372e60532346ec0e51bcc9883c540b08f2b5276f9d8443e39c9cf699728634e3d626c8d735f6504c4a7afda2c416a9bc9066f2231f
6
+ metadata.gz: c884137cfce1ae2e0fac3a35817ecfecb62dc1093a7b95c5f77a8d9fffb426b0b7024028221789b6b560097bcae07a8012ef751edd3c9a08941a1ab6d4890e7d
7
+ data.tar.gz: 63ca6a97a61293b3551852ac2fab43ce0ab27fe9fafc37268c9c542f3c033ce5f6a8aac45d9c5ae0f220c9c6963dcaa169b8e9810841fe7cdf3751e1505631d6
data/.circleci/config.yml CHANGED
@@ -2,7 +2,7 @@ version: 2
2
2
  jobs:
3
3
  build:
4
4
  docker:
5
- - image: darthjee/circleci_rails_gems:0.2.3
5
+ - image: darthjee/circleci_rails_gems:0.4.0
6
6
  environment:
7
7
  PROJECT: azeroth
8
8
  steps:
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
- FROM darthjee/rails_gems:0.2.3 as base
2
- FROM darthjee/scripts:0.1.2 as scripts
1
+ FROM darthjee/rails_gems:0.4.0 as base
2
+ FROM darthjee/scripts:0.1.7 as scripts
3
3
 
4
4
  ######################################
5
5
 
@@ -16,15 +16,9 @@ RUN bundle_builder.sh
16
16
  FROM base
17
17
  RUN mkdir lib/azeroth -p
18
18
 
19
- USER root
20
-
21
- COPY --chown=app:app --from=builder /home/app/bundle/gems /usr/local/bundle/gems
22
- COPY --chown=app:app --from=builder /home/app/bundle/cache /usr/local/bundle/cache
23
- COPY --chown=app:app --from=builder /home/app/bundle/specifications /usr/local/bundle/specifications
24
- COPY --chown=app:app --from=builder /home/app/bundle/bin /usr/local/bundle/bin
25
- COPY --chown=app:app --from=builder /home/app/bundle/extensions /usr/local/bundle/extensions
19
+ COPY --chown=app:app --from=builder /home/app/bundle/ /usr/local/bundle/
26
20
 
27
21
  COPY --chown=app ./*.gemspec ./Gemfile /home/app/app/
28
22
  COPY --chown=app ./lib/azeroth/version.rb /home/app/app/lib/azeroth/
29
- USER app
23
+
30
24
  RUN bundle install
data/README.md CHANGED
@@ -11,4 +11,4 @@ Azeroth
11
11
 
12
12
  Yard Documentation
13
13
  -------------------
14
- [https://www.rubydoc.info/gems/azeroth/0.3.0](https://www.rubydoc.info/gems/azeroth/0.3.0)
14
+ [https://www.rubydoc.info/gems/azeroth/0.4.0](https://www.rubydoc.info/gems/azeroth/0.4.0)
data/azeroth.gemspec CHANGED
@@ -26,23 +26,24 @@ Gem::Specification.new do |gem|
26
26
  gem.add_development_dependency 'activerecord', '~> 5.x'
27
27
  gem.add_development_dependency 'bundler', '~> 1.16.1'
28
28
  gem.add_development_dependency 'factory_bot', '~> 5.1.1'
29
+ gem.add_development_dependency 'nokogiri', '1.10.9'
29
30
  gem.add_development_dependency 'pry', '0.12.2'
30
31
  gem.add_development_dependency 'pry-nav', '0.3.0'
31
32
  gem.add_development_dependency 'rails', '>= 5.2.0'
32
33
  gem.add_development_dependency 'rails-controller-testing', '1.0.4'
33
34
  gem.add_development_dependency 'rake', '12.3.3'
34
- gem.add_development_dependency 'reek', '5.4.0'
35
- gem.add_development_dependency 'rspec', '3.8.0'
36
- gem.add_development_dependency 'rspec-core', '3.8.0'
37
- gem.add_development_dependency 'rspec-expectations', '3.8.3'
38
- gem.add_development_dependency 'rspec-mocks', '3.8.0'
39
- gem.add_development_dependency 'rspec-rails', '3.8.0'
40
- gem.add_development_dependency 'rspec-support', '3.8.0'
41
- gem.add_development_dependency 'rubocop', '0.73.0'
42
- gem.add_development_dependency 'rubocop-rspec', '1.33.0'
43
- gem.add_development_dependency 'rubycritic', '4.1.0'
44
- gem.add_development_dependency 'simplecov', '0.17.0'
35
+ gem.add_development_dependency 'reek', '5.6.0'
36
+ gem.add_development_dependency 'rspec', '3.9.0'
37
+ gem.add_development_dependency 'rspec-core', '3.9.1'
38
+ gem.add_development_dependency 'rspec-expectations', '3.9.0'
39
+ gem.add_development_dependency 'rspec-mocks', '3.9.1'
40
+ gem.add_development_dependency 'rspec-rails', '3.9.0'
41
+ gem.add_development_dependency 'rspec-support', '3.9.2'
42
+ gem.add_development_dependency 'rubocop', '0.80.1'
43
+ gem.add_development_dependency 'rubocop-rspec', '1.38.1'
44
+ gem.add_development_dependency 'rubycritic', '4.4.1'
45
+ gem.add_development_dependency 'simplecov', '0.17.1'
45
46
  gem.add_development_dependency 'sqlite3', '>= 1.3.13'
46
- gem.add_development_dependency 'yard', '0.9.20'
47
+ gem.add_development_dependency 'yard', '0.9.24'
47
48
  gem.add_development_dependency 'yardstick', '0.9.9'
48
49
  end
@@ -4,3 +4,4 @@ ignore:
4
4
  - lib/azeroth/version.rb
5
5
  - lib/azeroth/options.rb
6
6
  - lib/azeroth.rb
7
+ - lib/azeroth/exception.rb
data/config/yardstick.yml CHANGED
@@ -24,7 +24,9 @@ rules:
24
24
  exclude:
25
25
  - Azeroth::Decorator#initialize
26
26
  - Azeroth::Decorator::HashBuilder#initialize
27
+ - Azeroth::Exception::InvalidOptions#initialize
27
28
  - Azeroth::Model#initialize
29
+ - Azeroth::Options#initialize
28
30
  - Azeroth::RequestHandler#initialize
29
31
  - Azeroth::ResourceBuilder#initialize
30
32
  - Azeroth::ResourceRouteBuilder#initialize
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Azeroth
4
+ # @api private
5
+ # @author Darthjee
6
+ #
7
+ # Excaptions raised by azeroth
8
+ class Exception < ::StandardError
9
+ # @api private
10
+ # @author Darthjee
11
+ #
12
+ # Exception raised when invalid options are given
13
+ #
14
+ # @example Usage
15
+ # exception = Azeroth::Exception::InvalidOptions.new(%i[invalid options])
16
+ # exception.message
17
+ # # return 'Invalid keys on options initialization (invalid options)'
18
+ class InvalidOptions < Azeroth::Exception
19
+ # @param invalid_keys [Array<Symbol>] list of invalid keys
20
+ def initialize(invalid_keys = [])
21
+ @invalid_keys = invalid_keys
22
+ end
23
+
24
+ # Exception string showing invalid keys
25
+ #
26
+ # @return [String]
27
+ #
28
+ # @example (see InvalidOptions)
29
+ def message
30
+ keys = invalid_keys.join(' ')
31
+ "Invalid keys on options initialization (#{keys})"
32
+ end
33
+
34
+ private
35
+
36
+ attr_reader :invalid_keys
37
+ # @method invalid_keys
38
+ # @api private
39
+ # @private
40
+ #
41
+ # invalid keys on options initialization
42
+ #
43
+ # @return [Array<Symbol>]
44
+ end
45
+ end
46
+ end
@@ -1,12 +1,49 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Azeroth
4
+ # @api private
5
+ # @author Darthjee
6
+ #
7
+ # Resource buiilding options
4
8
  class Options < ::OpenStruct
5
9
  DEFAULT_OPTIONS = {
10
+ only: %i[create destroy edit index new show update],
11
+ except: []
6
12
  }.freeze
7
13
 
8
- def initialize(options)
14
+ # @param options [Hash] hash with options
15
+ # @option options only [Array<Symbol,String>] List of
16
+ # actions to be built
17
+ # @option options except [Array<Symbol,String>] List of
18
+ # actions to not to be built
19
+ def initialize(options = {})
20
+ check_options(options)
21
+
9
22
  super(DEFAULT_OPTIONS.merge(options))
10
23
  end
24
+
25
+ # Actions to be built
26
+ #
27
+ # @return [Array<Symbol>]
28
+ def actions
29
+ [only].flatten.map(&:to_sym) - [except].flatten.map(&:to_sym)
30
+ end
31
+
32
+ private
33
+
34
+ # @private
35
+ #
36
+ # check if given options are allowed
37
+ #
38
+ # @raise Azeroth::Exception::InvalidOptions
39
+ #
40
+ # @return [NilClass]
41
+ def check_options(options)
42
+ invalid_keys = options.keys - DEFAULT_OPTIONS.keys
43
+
44
+ return if invalid_keys.empty?
45
+
46
+ raise Azeroth::Exception::InvalidOptions, invalid_keys
47
+ end
11
48
  end
12
49
  end
@@ -20,6 +20,9 @@ module Azeroth
20
20
  @resource ||= build_resource
21
21
  end
22
22
 
23
+ # build resource for create
24
+ #
25
+ # @return [Object]
23
26
  def build_resource
24
27
  attributes = controller.send("#{model.name}_params")
25
28
  collection = controller.send(model.plural)
@@ -20,6 +20,9 @@ module Azeroth
20
20
  @resource ||= update_resource
21
21
  end
22
22
 
23
+ # build resource for update
24
+ #
25
+ # @return [Object]
23
26
  def update_resource
24
27
  attributes = controller.send("#{model.name}_params")
25
28
 
@@ -19,16 +19,14 @@ module Azeroth
19
19
  #
20
20
  # @return [Array<Sinclair::MethodDefinition>]
21
21
  def append
22
- actions = %i[create destroy edit index new show update]
23
-
24
- actions.each do |route|
22
+ options.actions.each do |route|
25
23
  add_method(route, &route_code(route))
26
24
  end
27
25
  end
28
26
 
29
27
  private
30
28
 
31
- attr_reader :model, :builder
29
+ attr_reader :model, :builder, :options
32
30
  # @method model
33
31
  # @api private
34
32
  # @private
@@ -45,6 +43,14 @@ module Azeroth
45
43
  #
46
44
  # @return [Sinclair]
47
45
 
46
+ # @method options
47
+ # @api private
48
+ # @private
49
+ #
50
+ # Buiding options
51
+ #
52
+ # @return [Options]
53
+
48
54
  delegate :add_method, to: :builder
49
55
  # @method add_method
50
56
  # @api private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Azeroth
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
data/lib/azeroth.rb CHANGED
@@ -11,6 +11,7 @@ require 'sinclair'
11
11
  # @see Resourceable
12
12
  module Azeroth
13
13
  autoload :Decorator, 'azeroth/decorator'
14
+ autoload :Exception, 'azeroth/exception'
14
15
  autoload :Model, 'azeroth/model'
15
16
  autoload :RequestHandler, 'azeroth/request_handler'
16
17
  autoload :Resourceable, 'azeroth/resourceable'
@@ -9,12 +9,9 @@ describe DocumentsController do
9
9
 
10
10
  describe 'GET index' do
11
11
  let(:documents_count) { 0 }
12
- let!(:documents) do
13
- documents_count.times.map { create(:document) }
14
- end
15
12
 
16
- let(:expected_json) do
17
- Document::Decorator.new(documents).as_json
13
+ before do
14
+ documents_count.times.map { create(:document) }
18
15
  end
19
16
 
20
17
  context 'when calling on format json' do
@@ -24,8 +21,8 @@ describe DocumentsController do
24
21
 
25
22
  it { expect(response).to be_successful }
26
23
 
27
- it 'returns empty array' do
28
- expect(parsed_response).to eq(expected_json)
24
+ it 'returns empty text' do
25
+ expect(response.body).to eq('')
29
26
  end
30
27
 
31
28
  context 'when there is a document' do
@@ -33,8 +30,8 @@ describe DocumentsController do
33
30
 
34
31
  it { expect(response).to be_successful }
35
32
 
36
- it 'renders documents json' do
37
- expect(parsed_response).to eq(expected_json)
33
+ it 'returns empty text' do
34
+ expect(response.body).to eq('')
38
35
  end
39
36
  end
40
37
  end
@@ -53,7 +50,6 @@ describe DocumentsController do
53
50
  describe 'GET show' do
54
51
  let(:document) { create(:document) }
55
52
  let(:document_id) { document.id }
56
-
57
53
  let(:expected_json) do
58
54
  Document::Decorator.new(document).as_json
59
55
  end
@@ -0,0 +1,160 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe IndexDocumentsController 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
+ documents_count.times.map { create(:document) }
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
+ before do
22
+ get :index, params: { format: :json }
23
+ end
24
+
25
+ it { expect(response).to be_successful }
26
+
27
+ it 'returns empty array' do
28
+ expect(parsed_response).to eq(expected_json)
29
+ end
30
+
31
+ context 'when there is a document' do
32
+ let(:documents_count) { 1 }
33
+
34
+ it { expect(response).to be_successful }
35
+
36
+ it 'renders documents json' do
37
+ expect(parsed_response).to eq(expected_json)
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ describe 'GET show' do
44
+ let(:document) { create(:document) }
45
+ let(:document_id) { document.id }
46
+
47
+ context 'when calling on format json' do
48
+ let(:parameters) { { id: document_id, format: :json } }
49
+
50
+ it do
51
+ expect { get :show, params: parameters }
52
+ .to raise_error(AbstractController::ActionNotFound)
53
+ end
54
+
55
+ context 'when calling on an inexistent id' do
56
+ let(:document_id) { :wrong_id }
57
+
58
+ it do
59
+ expect { get :show, params: parameters }
60
+ .to raise_error(AbstractController::ActionNotFound)
61
+ end
62
+ end
63
+ end
64
+
65
+ context 'when calling on format html' do
66
+ let(:parameters) { { id: document_id, format: :html } }
67
+
68
+ it do
69
+ expect { get :show, params: parameters }
70
+ .to raise_error(AbstractController::ActionNotFound)
71
+ end
72
+ end
73
+ end
74
+
75
+ describe 'POST create' do
76
+ let(:payload) do
77
+ {
78
+ name: 'My document'
79
+ }
80
+ end
81
+ let(:parameters) do
82
+ {
83
+ format: format,
84
+ document: payload
85
+ }
86
+ end
87
+
88
+ context 'when requesting format json' do
89
+ let(:format) { :json }
90
+
91
+ it do
92
+ expect { get :create, params: parameters }
93
+ .to raise_error(AbstractController::ActionNotFound)
94
+ end
95
+ end
96
+ end
97
+
98
+ describe 'PATCH update' do
99
+ let(:document) { create(:document) }
100
+ let(:document_id) { document.id }
101
+
102
+ let(:payload) do
103
+ {
104
+ name: 'My document'
105
+ }
106
+ end
107
+
108
+ let(:parameters) do
109
+ {
110
+ id: document_id,
111
+ format: :json,
112
+ document: payload
113
+ }
114
+ end
115
+
116
+ it do
117
+ expect { get :update, params: parameters }
118
+ .to raise_error(AbstractController::ActionNotFound)
119
+ end
120
+ end
121
+
122
+ describe 'GET new' do
123
+ context 'when calling with format json' do
124
+ it do
125
+ expect { get :new, params: { format: :json } }
126
+ .to raise_error(AbstractController::ActionNotFound)
127
+ end
128
+ end
129
+
130
+ context 'when calling with format html' do
131
+ it do
132
+ expect { get :new, params: { format: :html } }
133
+ .to raise_error(AbstractController::ActionNotFound)
134
+ end
135
+ end
136
+ end
137
+
138
+ describe 'GET edit' do
139
+ let(:document) { create(:document) }
140
+ let(:document_id) { document.id }
141
+
142
+ context 'when calling on format json' do
143
+ let(:parameters) { { id: document_id, format: :json } }
144
+
145
+ it do
146
+ expect { get :edit, params: parameters }
147
+ .to raise_error(AbstractController::ActionNotFound)
148
+ end
149
+ end
150
+
151
+ context 'when calling on format html' do
152
+ let(:parameters) { { id: document_id, format: :html } }
153
+
154
+ it do
155
+ expect { get :edit, params: parameters }
156
+ .to raise_error(AbstractController::ActionNotFound)
157
+ end
158
+ end
159
+ end
160
+ end
@@ -3,5 +3,5 @@
3
3
  class DocumentsController < ApplicationController
4
4
  include Azeroth::Resourceable
5
5
 
6
- resource_for :document
6
+ resource_for :document, except: :index
7
7
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class IndexDocumentsController < ApplicationController
4
+ include Azeroth::Resourceable
5
+
6
+ resource_for :document, only: :index
7
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Rails.application.routes.draw do
4
- resources :documents, only: %i[index show create update new edit destroy]
4
+ resources :documents
5
+ resources :public_documents, controller: :index_documents
5
6
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Azeroth::Exception::InvalidOptions do
6
+ describe '#message' do
7
+ let(:exception) { described_class.new(%i[invalid options]) }
8
+ let(:expected_message) do
9
+ 'Invalid keys on options initialization (invalid options)'
10
+ end
11
+
12
+ it 'shows invalid keys' do
13
+ expect(exception.message).to eq(expected_message)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Azeroth::Exception::InvalidOptions do
6
+ describe '#message' do
7
+ let(:exception) { described_class.new(%i[invalid options]) }
8
+ let(:expected_message) do
9
+ 'Invalid keys on options initialization (invalid options)'
10
+ end
11
+
12
+ it 'shows invalid keys' do
13
+ expect(exception.message).to eq(expected_message)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Azeroth::Options do
6
+ subject(:options) { described_class.new }
7
+
8
+ describe 'validation' do
9
+ context 'when initializing with invalid options' do
10
+ it do
11
+ expect { described_class.new(invalid_option: 1) }
12
+ .to raise_error(Azeroth::Exception::InvalidOptions)
13
+ end
14
+ end
15
+ end
16
+
17
+ describe '#actions' do
18
+ it 'returns default actions' do
19
+ expect(options.actions)
20
+ .to eq(%i[create destroy edit index new show update])
21
+ end
22
+
23
+ context 'when passing only options' do
24
+ subject(:options) { described_class.new(only: [:index]) }
25
+
26
+ it 'returns defined actions' do
27
+ expect(options.actions)
28
+ .to eq(%i[index])
29
+ end
30
+
31
+ context 'when not passing an array' do
32
+ subject(:options) { described_class.new(only: :index) }
33
+
34
+ it 'returns defined actions as array' do
35
+ expect(options.actions)
36
+ .to eq(%i[index])
37
+ end
38
+ end
39
+ end
40
+
41
+ context 'when passing except options' do
42
+ subject(:options) do
43
+ described_class.new(except: %i[index create])
44
+ end
45
+
46
+ it 'returns not excluded actions' do
47
+ expect(options.actions)
48
+ .to eq(%i[destroy edit new show update])
49
+ end
50
+
51
+ context 'when not passing an array' do
52
+ subject(:options) { described_class.new(except: :index) }
53
+
54
+ it 'returns not excluded actions' do
55
+ expect(options.actions)
56
+ .to eq(%i[create destroy edit new show update])
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
data/spec/spec_helper.rb CHANGED
@@ -19,7 +19,7 @@ require 'rspec/rails'
19
19
  require 'active_support/railtie'
20
20
 
21
21
  support_files = File.expand_path('spec/support/**/*.rb')
22
- Dir[support_files].each { |file| require file }
22
+ Dir[support_files].sort.each { |file| require file }
23
23
 
24
24
  RSpec.configure do |config|
25
25
  config.infer_spec_type_from_file_location!
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :document, class: ::Document do
4
+ factory :document, class: '::Document' do
5
5
  sequence(:name) { |n| "Name-#{n}" }
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :dummy_model, class: ::DummyModel do
4
+ factory :dummy_model, class: '::DummyModel' do
5
5
  sequence(:id)
6
6
  first_name { 'dummy' }
7
7
  last_name { 'bot' }
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :user, class: ::User do
4
+ factory :user, class: '::User' do
5
5
  sequence(:name) { |n| "Name-#{n}" }
6
6
  sequence(:email) { |n| "user-#{n}@email.com" }
7
7
  end
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.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darthjee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-17 00:00:00.000000000 Z
11
+ date: 2020-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 5.1.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: nokogiri
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 1.10.9
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 1.10.9
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: pry
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -184,154 +198,154 @@ dependencies:
184
198
  requirements:
185
199
  - - '='
186
200
  - !ruby/object:Gem::Version
187
- version: 5.4.0
201
+ version: 5.6.0
188
202
  type: :development
189
203
  prerelease: false
190
204
  version_requirements: !ruby/object:Gem::Requirement
191
205
  requirements:
192
206
  - - '='
193
207
  - !ruby/object:Gem::Version
194
- version: 5.4.0
208
+ version: 5.6.0
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: rspec
197
211
  requirement: !ruby/object:Gem::Requirement
198
212
  requirements:
199
213
  - - '='
200
214
  - !ruby/object:Gem::Version
201
- version: 3.8.0
215
+ version: 3.9.0
202
216
  type: :development
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
220
  - - '='
207
221
  - !ruby/object:Gem::Version
208
- version: 3.8.0
222
+ version: 3.9.0
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: rspec-core
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - '='
214
228
  - !ruby/object:Gem::Version
215
- version: 3.8.0
229
+ version: 3.9.1
216
230
  type: :development
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
219
233
  requirements:
220
234
  - - '='
221
235
  - !ruby/object:Gem::Version
222
- version: 3.8.0
236
+ version: 3.9.1
223
237
  - !ruby/object:Gem::Dependency
224
238
  name: rspec-expectations
225
239
  requirement: !ruby/object:Gem::Requirement
226
240
  requirements:
227
241
  - - '='
228
242
  - !ruby/object:Gem::Version
229
- version: 3.8.3
243
+ version: 3.9.0
230
244
  type: :development
231
245
  prerelease: false
232
246
  version_requirements: !ruby/object:Gem::Requirement
233
247
  requirements:
234
248
  - - '='
235
249
  - !ruby/object:Gem::Version
236
- version: 3.8.3
250
+ version: 3.9.0
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: rspec-mocks
239
253
  requirement: !ruby/object:Gem::Requirement
240
254
  requirements:
241
255
  - - '='
242
256
  - !ruby/object:Gem::Version
243
- version: 3.8.0
257
+ version: 3.9.1
244
258
  type: :development
245
259
  prerelease: false
246
260
  version_requirements: !ruby/object:Gem::Requirement
247
261
  requirements:
248
262
  - - '='
249
263
  - !ruby/object:Gem::Version
250
- version: 3.8.0
264
+ version: 3.9.1
251
265
  - !ruby/object:Gem::Dependency
252
266
  name: rspec-rails
253
267
  requirement: !ruby/object:Gem::Requirement
254
268
  requirements:
255
269
  - - '='
256
270
  - !ruby/object:Gem::Version
257
- version: 3.8.0
271
+ version: 3.9.0
258
272
  type: :development
259
273
  prerelease: false
260
274
  version_requirements: !ruby/object:Gem::Requirement
261
275
  requirements:
262
276
  - - '='
263
277
  - !ruby/object:Gem::Version
264
- version: 3.8.0
278
+ version: 3.9.0
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: rspec-support
267
281
  requirement: !ruby/object:Gem::Requirement
268
282
  requirements:
269
283
  - - '='
270
284
  - !ruby/object:Gem::Version
271
- version: 3.8.0
285
+ version: 3.9.2
272
286
  type: :development
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
290
  - - '='
277
291
  - !ruby/object:Gem::Version
278
- version: 3.8.0
292
+ version: 3.9.2
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: rubocop
281
295
  requirement: !ruby/object:Gem::Requirement
282
296
  requirements:
283
297
  - - '='
284
298
  - !ruby/object:Gem::Version
285
- version: 0.73.0
299
+ version: 0.80.1
286
300
  type: :development
287
301
  prerelease: false
288
302
  version_requirements: !ruby/object:Gem::Requirement
289
303
  requirements:
290
304
  - - '='
291
305
  - !ruby/object:Gem::Version
292
- version: 0.73.0
306
+ version: 0.80.1
293
307
  - !ruby/object:Gem::Dependency
294
308
  name: rubocop-rspec
295
309
  requirement: !ruby/object:Gem::Requirement
296
310
  requirements:
297
311
  - - '='
298
312
  - !ruby/object:Gem::Version
299
- version: 1.33.0
313
+ version: 1.38.1
300
314
  type: :development
301
315
  prerelease: false
302
316
  version_requirements: !ruby/object:Gem::Requirement
303
317
  requirements:
304
318
  - - '='
305
319
  - !ruby/object:Gem::Version
306
- version: 1.33.0
320
+ version: 1.38.1
307
321
  - !ruby/object:Gem::Dependency
308
322
  name: rubycritic
309
323
  requirement: !ruby/object:Gem::Requirement
310
324
  requirements:
311
325
  - - '='
312
326
  - !ruby/object:Gem::Version
313
- version: 4.1.0
327
+ version: 4.4.1
314
328
  type: :development
315
329
  prerelease: false
316
330
  version_requirements: !ruby/object:Gem::Requirement
317
331
  requirements:
318
332
  - - '='
319
333
  - !ruby/object:Gem::Version
320
- version: 4.1.0
334
+ version: 4.4.1
321
335
  - !ruby/object:Gem::Dependency
322
336
  name: simplecov
323
337
  requirement: !ruby/object:Gem::Requirement
324
338
  requirements:
325
339
  - - '='
326
340
  - !ruby/object:Gem::Version
327
- version: 0.17.0
341
+ version: 0.17.1
328
342
  type: :development
329
343
  prerelease: false
330
344
  version_requirements: !ruby/object:Gem::Requirement
331
345
  requirements:
332
346
  - - '='
333
347
  - !ruby/object:Gem::Version
334
- version: 0.17.0
348
+ version: 0.17.1
335
349
  - !ruby/object:Gem::Dependency
336
350
  name: sqlite3
337
351
  requirement: !ruby/object:Gem::Requirement
@@ -352,14 +366,14 @@ dependencies:
352
366
  requirements:
353
367
  - - '='
354
368
  - !ruby/object:Gem::Version
355
- version: 0.9.20
369
+ version: 0.9.24
356
370
  type: :development
357
371
  prerelease: false
358
372
  version_requirements: !ruby/object:Gem::Requirement
359
373
  requirements:
360
374
  - - '='
361
375
  - !ruby/object:Gem::Version
362
- version: 0.9.20
376
+ version: 0.9.24
363
377
  - !ruby/object:Gem::Dependency
364
378
  name: yardstick
365
379
  requirement: !ruby/object:Gem::Requirement
@@ -402,6 +416,7 @@ files:
402
416
  - lib/azeroth.rb
403
417
  - lib/azeroth/decorator.rb
404
418
  - lib/azeroth/decorator/hash_builder.rb
419
+ - lib/azeroth/exception.rb
405
420
  - lib/azeroth/model.rb
406
421
  - lib/azeroth/options.rb
407
422
  - lib/azeroth/request_handler.rb
@@ -419,6 +434,7 @@ files:
419
434
  - lib/azeroth/routes_builder.rb
420
435
  - lib/azeroth/version.rb
421
436
  - spec/controllers/documents_controller_spec.rb
437
+ - spec/controllers/index_documents_controller_spec.rb
422
438
  - spec/dummy/.ruby-version
423
439
  - spec/dummy/Rakefile
424
440
  - spec/dummy/app/assets/config/manifest.js
@@ -432,6 +448,7 @@ files:
432
448
  - spec/dummy/app/controllers/application_controller.rb
433
449
  - spec/dummy/app/controllers/concerns/.keep
434
450
  - spec/dummy/app/controllers/documents_controller.rb
451
+ - spec/dummy/app/controllers/index_documents_controller.rb
435
452
  - spec/dummy/app/helpers/application_helper.rb
436
453
  - spec/dummy/app/jobs/application_job.rb
437
454
  - spec/dummy/app/mailers/application_mailer.rb
@@ -493,9 +510,12 @@ files:
493
510
  - spec/dummy/tmp/.keep
494
511
  - spec/dummy/tmp/storage/.keep
495
512
  - spec/integration/yard/azeroth/decorator_spec.rb
513
+ - spec/integration/yard/azeroth/exception/invalid_options_spec.rb
496
514
  - spec/lib/azeroth/decorator/hash_builder_spec.rb
497
515
  - spec/lib/azeroth/decorator_spec.rb
516
+ - spec/lib/azeroth/exception/invalid_options_spec.rb
498
517
  - spec/lib/azeroth/model_spec.rb
518
+ - spec/lib/azeroth/options_spec.rb
499
519
  - spec/lib/azeroth/request_handler/create_spec.rb
500
520
  - spec/lib/azeroth/request_handler/destroy_spec.rb
501
521
  - spec/lib/azeroth/request_handler/edit_spec.rb
@@ -543,6 +563,7 @@ specification_version: 4
543
563
  summary: Azeroth
544
564
  test_files:
545
565
  - spec/controllers/documents_controller_spec.rb
566
+ - spec/controllers/index_documents_controller_spec.rb
546
567
  - spec/dummy/.ruby-version
547
568
  - spec/dummy/Rakefile
548
569
  - spec/dummy/app/assets/config/manifest.js
@@ -556,6 +577,7 @@ test_files:
556
577
  - spec/dummy/app/controllers/application_controller.rb
557
578
  - spec/dummy/app/controllers/concerns/.keep
558
579
  - spec/dummy/app/controllers/documents_controller.rb
580
+ - spec/dummy/app/controllers/index_documents_controller.rb
559
581
  - spec/dummy/app/helpers/application_helper.rb
560
582
  - spec/dummy/app/jobs/application_job.rb
561
583
  - spec/dummy/app/mailers/application_mailer.rb
@@ -617,9 +639,12 @@ test_files:
617
639
  - spec/dummy/tmp/.keep
618
640
  - spec/dummy/tmp/storage/.keep
619
641
  - spec/integration/yard/azeroth/decorator_spec.rb
642
+ - spec/integration/yard/azeroth/exception/invalid_options_spec.rb
620
643
  - spec/lib/azeroth/decorator/hash_builder_spec.rb
621
644
  - spec/lib/azeroth/decorator_spec.rb
645
+ - spec/lib/azeroth/exception/invalid_options_spec.rb
622
646
  - spec/lib/azeroth/model_spec.rb
647
+ - spec/lib/azeroth/options_spec.rb
623
648
  - spec/lib/azeroth/request_handler/create_spec.rb
624
649
  - spec/lib/azeroth/request_handler/destroy_spec.rb
625
650
  - spec/lib/azeroth/request_handler/edit_spec.rb