mongoid-embedded-errors 2.1.1 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,33 +1,84 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Mongoid::EmbeddedErrors do
2
4
  describe '#errors_with_embedded_errors' do
3
5
  subject(:article) { Article.new name: 'Test', summary: '-', pages: pages }
6
+
4
7
  before { |spec| article.validate unless spec.metadata[:do_not_validate] }
5
8
 
9
+ context 'when module is already included in a class', :do_not_validate do
10
+ let(:dummy_class) do
11
+ Class.new do
12
+ include Mongoid::Document
13
+ include Mongoid::EmbeddedErrors
14
+ end
15
+ end
16
+
17
+ it 'does not create errors_without_embedded_errors alias again' do
18
+ a = dummy_class.instance_method(:errors_without_embedded_errors)
19
+ dummy_class.include described_class
20
+
21
+ expect(
22
+ a
23
+ ).to eq(dummy_class.instance_method(:errors_without_embedded_errors))
24
+ end
25
+ end
26
+
6
27
  context 'when article does not have any pages associated' do
7
28
  let(:pages) { [] }
8
29
 
9
30
  it { is_expected.not_to be_valid }
31
+
10
32
  it "returns `can't be blank` error for pages" do
11
33
  expect(article.errors[:pages]).to include "can't be blank"
12
34
  end
13
35
  end
36
+
14
37
  context 'when article has one or more invalid pages' do
15
38
  let(:pages) { [Page.new] }
16
39
 
17
40
  it { is_expected.not_to be_valid }
41
+
18
42
  it 'does not have any errors under `:pages` key' do
19
43
  expect(article.errors[:pages]).to be_empty
20
44
  end
45
+
21
46
  it 'returns all errors for `pages[0]` object' do
22
47
  expect(article.errors[:'pages[0].title']).to include "can't be blank"
23
48
  end
24
49
  end
25
- context 'when all pages in article are valid' do
26
- let(:pages) { [Page.new(title: 'First page')] }
27
50
 
28
- it { is_expected.to be_valid }
51
+ context 'when validated multiple times' do
52
+ let(:pages) { [Page.new] }
53
+
54
+ it 'does not have duplicated errors for the same object' do
55
+ article.valid?
56
+ expect(article.errors[:'pages[0].title']).to eq(["can't be blank"])
57
+ end
58
+ end
59
+
60
+ context 'when embeds_many relation is invalid' do
61
+ let(:pages) { [Page.new(title: 'Test page', sections: sections)] }
62
+ let(:sections) { [Section.new] }
63
+
64
+ it 'returns all errors for `sections[0]` object' do
65
+ expect(article.errors[:'pages[0].sections[0].header']).to include "can't be blank"
66
+ end
29
67
  end
30
- context 'when embedded document has not been validated', :do_not_validate do
68
+
69
+ context 'when embeds_one relation is invalid' do
70
+ subject(:article) { Article.new name: 'Test', summary: '-', pages: pages, annotation: annotation }
71
+
72
+ let(:pages) { [Page.new(title: 'Test page')] }
73
+ let(:annotation) { Annotation.new }
74
+
75
+ it 'returns all errors for `annotation` object' do
76
+ expect(article.errors[:'annotation.text']).to include "can't be blank"
77
+ end
78
+ end
79
+
80
+ context 'when embedded document has not been validated',
81
+ :do_not_validate do
31
82
  let(:pages) { [Page.new] }
32
83
 
33
84
  it 'does not trigger validations' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/setup'
2
4
  require 'mongoid-embedded-errors'
3
5
  require 'database_cleaner'
@@ -27,11 +29,11 @@ RSpec.configure do |config|
27
29
  DatabaseCleaner.strategy = :truncation
28
30
  end
29
31
 
30
- config.around(:each) do |example|
32
+ config.around do |example|
31
33
  DatabaseCleaner.cleaning { example.run }
32
34
  end
33
35
 
34
- config.before(:each) do
36
+ config.before do
35
37
  # Need to manually reload spec models for mutant to work as expected
36
38
  if ENV['MUTANT']
37
39
  Dir[SPEC_MODELS_PATH].each do |filename|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Annotation
2
4
  include Mongoid::Document
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Article
2
4
  include Mongoid::Document
3
5
  include Mongoid::Timestamps
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Page
2
4
  include Mongoid::Document
3
5
  include Mongoid::Timestamps
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Section
2
4
  include Mongoid::Document
3
5
  include Mongoid::Timestamps
@@ -1,5 +1,5 @@
1
1
  test:
2
- # mongoid 3 and 4
2
+ # mongoid 4
3
3
  sessions:
4
4
  default:
5
5
  database: mongoid_embedded_errors_test
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-embedded-errors
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Bates
8
8
  - Kristijan Novoselić
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-09-30 00:00:00.000000000 Z
12
+ date: 2020-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
@@ -17,24 +17,57 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '3.0'
20
+ version: '4.0'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: 8.0.0
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
28
  - - ">="
26
29
  - !ruby/object:Gem::Version
27
- version: '3.0'
28
- description: Easily bubble up errors from embedded documents in Mongoid.
30
+ version: '4.0'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: 8.0.0
34
+ - !ruby/object:Gem::Dependency
35
+ name: rubocop
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.92'
41
+ type: :development
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.92'
48
+ - !ruby/object:Gem::Dependency
49
+ name: rubocop-rspec
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.43'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.43'
62
+ description: Embedded documents in Mongoid can be really useful. However, when one
63
+ of those embedded documents is invalid, Mongoid does not say which validation has
64
+ failed. Instead of just saying that an embedded document is invalid, this gem modifies
65
+ Mongoid behavior so it explicitly provides validation errors on a per-field basis
66
+ for embedded documents, the same way it does for parent documents.
29
67
  email:
30
68
  - mark@markbates.com
31
69
  - kristijan@glooko.com
32
- executables:
33
- - _guard-core
34
- - appraisal
35
- - guard
36
- - rake
37
- - rspec
70
+ executables: []
38
71
  extensions: []
39
72
  extra_rdoc_files: []
40
73
  files:
@@ -42,26 +75,19 @@ files:
42
75
  - ".gitignore"
43
76
  - ".rspec"
44
77
  - ".rubocop.yml"
78
+ - ".semaphore/semaphore.yml"
45
79
  - Appraisals
80
+ - CHANGELOG.md
46
81
  - Gemfile
47
- - Gemfile.lock
48
82
  - Guardfile
49
83
  - LICENSE.txt
50
84
  - README.md
51
85
  - Rakefile
52
- - bin/_guard-core
53
- - bin/appraisal
54
- - bin/guard
55
- - bin/rake
56
- - bin/rspec
57
- - gemfiles/mongoid_3.gemfile
58
- - gemfiles/mongoid_3.gemfile.lock
86
+ - gemfiles/.bundle/config
59
87
  - gemfiles/mongoid_4.gemfile
60
- - gemfiles/mongoid_4.gemfile.lock
61
88
  - gemfiles/mongoid_5.gemfile
62
- - gemfiles/mongoid_5.gemfile.lock
63
89
  - gemfiles/mongoid_6.gemfile
64
- - gemfiles/mongoid_6.gemfile.lock
90
+ - gemfiles/mongoid_7.gemfile
65
91
  - lib/mongoid-embedded-errors.rb
66
92
  - lib/mongoid/embedded_errors.rb
67
93
  - lib/mongoid/embedded_errors/embedded_in.rb
@@ -74,10 +100,11 @@ files:
74
100
  - spec/support/models/page.rb
75
101
  - spec/support/models/section.rb
76
102
  - spec/support/mongoid.yml
77
- homepage: ''
78
- licenses: []
103
+ homepage: https://github.com/glooko/mongoid-embedded-errors
104
+ licenses:
105
+ - MIT
79
106
  metadata: {}
80
- post_install_message:
107
+ post_install_message:
81
108
  rdoc_options: []
82
109
  require_paths:
83
110
  - lib
@@ -92,9 +119,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
119
  - !ruby/object:Gem::Version
93
120
  version: '0'
94
121
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.4.5.1
97
- signing_key:
122
+ rubygems_version: 3.1.4
123
+ signing_key:
98
124
  specification_version: 4
99
125
  summary: Easily bubble up errors from embedded documents in Mongoid.
100
126
  test_files:
@@ -1,168 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mongoid-embedded-errors (2.0.1)
5
- mongoid (>= 3.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- abstract_type (0.0.7)
11
- activemodel (4.2.6)
12
- activesupport (= 4.2.6)
13
- builder (~> 3.1)
14
- activesupport (4.2.6)
15
- i18n (~> 0.7)
16
- json (~> 1.7, >= 1.7.7)
17
- minitest (~> 5.1)
18
- thread_safe (~> 0.3, >= 0.3.4)
19
- tzinfo (~> 1.1)
20
- adamantium (0.2.0)
21
- ice_nine (~> 0.11.0)
22
- memoizable (~> 0.4.0)
23
- anima (0.3.0)
24
- abstract_type (~> 0.0.7)
25
- adamantium (~> 0.2)
26
- equalizer (~> 0.0.11)
27
- appraisal (2.1.0)
28
- bundler
29
- rake
30
- thor (>= 0.14.0)
31
- ast (2.3.0)
32
- bson (3.2.6)
33
- builder (3.2.2)
34
- coderay (1.1.1)
35
- concord (0.1.5)
36
- adamantium (~> 0.2.0)
37
- equalizer (~> 0.0.9)
38
- connection_pool (2.2.0)
39
- database_cleaner (1.5.3)
40
- diff-lcs (1.2.5)
41
- equalizer (0.0.11)
42
- ffi (1.9.14)
43
- formatador (0.2.5)
44
- guard (2.14.0)
45
- formatador (>= 0.2.4)
46
- listen (>= 2.7, < 4.0)
47
- lumberjack (~> 1.0)
48
- nenv (~> 0.1)
49
- notiffany (~> 0.0)
50
- pry (>= 0.9.12)
51
- shellany (~> 0.0)
52
- thor (>= 0.18.1)
53
- guard-compat (1.2.1)
54
- guard-rspec (4.7.3)
55
- guard (~> 2.1)
56
- guard-compat (~> 1.1)
57
- rspec (>= 2.99.0, < 4.0)
58
- i18n (0.7.0)
59
- ice_nine (0.11.2)
60
- json (1.8.3)
61
- listen (3.1.5)
62
- rb-fsevent (~> 0.9, >= 0.9.4)
63
- rb-inotify (~> 0.9, >= 0.9.7)
64
- ruby_dep (~> 1.2)
65
- lumberjack (1.0.10)
66
- memoizable (0.4.2)
67
- thread_safe (~> 0.3, >= 0.3.1)
68
- method_source (0.8.2)
69
- minitest (5.9.0)
70
- mongoid (4.0.2)
71
- activemodel (~> 4.0)
72
- moped (~> 2.0.0)
73
- origin (~> 2.1)
74
- tzinfo (>= 0.3.37)
75
- moped (2.0.7)
76
- bson (~> 3.0)
77
- connection_pool (~> 2.0)
78
- optionable (~> 0.2.0)
79
- morpher (0.2.6)
80
- abstract_type (~> 0.0.7)
81
- adamantium (~> 0.2.0)
82
- anima (~> 0.3.0)
83
- ast (~> 2.2)
84
- concord (~> 0.1.5)
85
- equalizer (~> 0.0.9)
86
- ice_nine (~> 0.11.0)
87
- procto (~> 0.0.2)
88
- mutant (0.8.11)
89
- abstract_type (~> 0.0.7)
90
- adamantium (~> 0.2.0)
91
- anima (~> 0.3.0)
92
- ast (~> 2.2)
93
- concord (~> 0.1.5)
94
- diff-lcs (~> 1.2)
95
- equalizer (~> 0.0.9)
96
- ice_nine (~> 0.11.1)
97
- memoizable (~> 0.4.2)
98
- morpher (~> 0.2.6)
99
- parallel (~> 1.3)
100
- parser (~> 2.3.0, >= 2.3.0.2)
101
- procto (~> 0.0.2)
102
- regexp_parser (~> 0.3.6)
103
- unparser (~> 0.2.5)
104
- mutant-rspec (0.8.11)
105
- mutant (~> 0.8.11)
106
- rspec-core (>= 3.4.0, < 3.6.0)
107
- nenv (0.3.0)
108
- notiffany (0.1.1)
109
- nenv (~> 0.1)
110
- shellany (~> 0.0)
111
- optionable (0.2.0)
112
- origin (2.2.0)
113
- parallel (1.9.0)
114
- parser (2.3.1.4)
115
- ast (~> 2.2)
116
- procto (0.0.3)
117
- pry (0.10.4)
118
- coderay (~> 1.1.0)
119
- method_source (~> 0.8.1)
120
- slop (~> 3.4)
121
- rake (11.3.0)
122
- rb-fsevent (0.9.7)
123
- rb-inotify (0.9.7)
124
- ffi (>= 0.5.0)
125
- regexp_parser (0.3.6)
126
- rspec (3.5.0)
127
- rspec-core (~> 3.5.0)
128
- rspec-expectations (~> 3.5.0)
129
- rspec-mocks (~> 3.5.0)
130
- rspec-core (3.5.3)
131
- rspec-support (~> 3.5.0)
132
- rspec-expectations (3.5.0)
133
- diff-lcs (>= 1.2.0, < 2.0)
134
- rspec-support (~> 3.5.0)
135
- rspec-mocks (3.5.0)
136
- diff-lcs (>= 1.2.0, < 2.0)
137
- rspec-support (~> 3.5.0)
138
- rspec-support (3.5.0)
139
- ruby_dep (1.4.0)
140
- shellany (0.0.1)
141
- slop (3.6.0)
142
- thor (0.19.1)
143
- thread_safe (0.3.5)
144
- tzinfo (1.2.2)
145
- thread_safe (~> 0.1)
146
- unparser (0.2.5)
147
- abstract_type (~> 0.0.7)
148
- adamantium (~> 0.2.0)
149
- concord (~> 0.1.5)
150
- diff-lcs (~> 1.2.5)
151
- equalizer (~> 0.0.9)
152
- parser (~> 2.3.0)
153
- procto (~> 0.0.2)
154
-
155
- PLATFORMS
156
- ruby
157
-
158
- DEPENDENCIES
159
- appraisal
160
- database_cleaner
161
- guard-rspec
162
- mongoid-embedded-errors!
163
- mutant-rspec
164
- rake
165
- rspec
166
-
167
- BUNDLED WITH
168
- 1.13.1