schema_expectations 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 +4 -4
- data/CHANGELOG.md +9 -0
- data/TODO.md +2 -0
- data/lib/schema_expectations/active_record/column_reflector.rb +1 -1
- data/lib/schema_expectations/rspec.rb +1 -1
- data/lib/schema_expectations/rspec_matchers/validate_schema_nullable.rb +4 -4
- data/lib/schema_expectations/rspec_matchers/validate_schema_uniqueness.rb +4 -4
- data/lib/schema_expectations/version.rb +1 -1
- data/spec/lib/schema_expectations/rspec_matchers/validate_schema_nullable_spec.rb +10 -10
- data/spec/lib/schema_expectations/rspec_matchers/validate_schema_uniqueness_spec.rb +8 -8
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de04e4a86866e356d2225b0b4236407b34a0795c
|
4
|
+
data.tar.gz: 5127ab4ef41da535ff54de06928081ca9c887e63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35aa646038fd59a9e88c76d6f8698a5669a0c602f37eaad56e95c772059bfe1de37087253726f15c7301c5b8f5abec6ba00fcedbb620dfe1480995008975d129
|
7
|
+
data.tar.gz: 71f5edb70e04ea2ab32c47c09ffd2132798ee8f57be0454481c2a7d0559a883051bb747a4ea65d9098fffbf495f22242deb3527410446ca1df583a1207988f49
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
# Schema Expectations Changelog
|
2
2
|
|
3
3
|
### git master
|
4
|
+
|
5
|
+
### 0.4.0 (Febuary 20, 2015)
|
6
|
+
|
7
|
+
- include matchers in non-model specs as well
|
8
|
+
- include model names in failure messages
|
9
|
+
- fixed a bug in column reflector (test class name was used directly)
|
10
|
+
|
11
|
+
### 0.3.0 (Febuary 20, 2015)
|
12
|
+
|
4
13
|
- added `validate_schema_uniqueness`
|
5
14
|
|
6
15
|
### 0.2.0 (Febuary 18, 2015)
|
data/TODO.md
ADDED
@@ -89,7 +89,7 @@ module SchemaExpectations
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def all_timestamp_attributes
|
92
|
-
@all_timestamp_attributes ||=
|
92
|
+
@all_timestamp_attributes ||= @model.new.send(:all_timestamp_attributes).map(&:to_sym)
|
93
93
|
end
|
94
94
|
|
95
95
|
def unique_indexes
|
@@ -53,16 +53,16 @@ module SchemaExpectations
|
|
53
53
|
errors = []
|
54
54
|
|
55
55
|
(@present_column_names - @not_null_column_names).each do |column_name|
|
56
|
-
errors << "#{column_name} has unconditional presence validation but is missing NOT NULL"
|
56
|
+
errors << "#{@model.name} #{column_name} has unconditional presence validation but is missing NOT NULL"
|
57
57
|
end
|
58
58
|
|
59
59
|
(@not_null_column_names - @present_column_names).each do |column_name|
|
60
60
|
conditions = validator_allow_nil_conditions_for_column_name(column_name) ||
|
61
61
|
validator_conditions_for_column_name(column_name)
|
62
62
|
if conditions
|
63
|
-
errors << "#{column_name} is NOT NULL but its presence validator was conditional: #{conditions.inspect}"
|
63
|
+
errors << "#{@model.name} #{column_name} is NOT NULL but its presence validator was conditional: #{conditions.inspect}"
|
64
64
|
else
|
65
|
-
errors << "#{column_name} is NOT NULL but has no presence validation"
|
65
|
+
errors << "#{@model.name} #{column_name} is NOT NULL but has no presence validation"
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -70,7 +70,7 @@ module SchemaExpectations
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def failure_message_when_negated
|
73
|
-
|
73
|
+
"#{@model.name} should not match NOT NULL with its presence validation but does"
|
74
74
|
end
|
75
75
|
|
76
76
|
def description
|
@@ -57,16 +57,16 @@ module SchemaExpectations
|
|
57
57
|
errors = []
|
58
58
|
|
59
59
|
(@validator_unique_scopes - @schema_unique_scopes).each do |scope|
|
60
|
-
errors << "scope #{scope.inspect} has unconditional uniqueness validation but is missing a unique database index"
|
60
|
+
errors << "#{@model.name} scope #{scope.inspect} has unconditional uniqueness validation but is missing a unique database index"
|
61
61
|
end
|
62
62
|
|
63
63
|
(@schema_unique_scopes - @validator_unique_scopes).each do |scope|
|
64
64
|
conditions = validator_conditions_for_scope(scope) ||
|
65
65
|
validator_allow_empty_conditions_for_scope(scope)
|
66
66
|
if conditions
|
67
|
-
errors << "scope #{scope.inspect} has a unique index but its uniqueness validator was conditional: #{conditions.inspect}"
|
67
|
+
errors << "#{@model.name} scope #{scope.inspect} has a unique index but its uniqueness validator was conditional: #{conditions.inspect}"
|
68
68
|
else
|
69
|
-
errors << "scope #{scope.inspect} has a unique index but no uniqueness validation"
|
69
|
+
errors << "#{@model.name} scope #{scope.inspect} has a unique index but no uniqueness validation"
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
@@ -74,7 +74,7 @@ module SchemaExpectations
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def failure_message_when_negated
|
77
|
-
|
77
|
+
"#{@model.name} should not match unique indexes with its uniqueness validation but does"
|
78
78
|
end
|
79
79
|
|
80
80
|
def description
|
@@ -37,7 +37,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
37
37
|
end.to raise_error do |error|
|
38
38
|
expect(error).to be_a RSpec::Expectations::ExpectationNotMetError
|
39
39
|
not_null_columns.sort.zip(error.message.split(', ')) do |column, message|
|
40
|
-
expect(message).to eq "#{column} is NOT NULL but has no presence validation"
|
40
|
+
expect(message).to eq "Record #{column} is NOT NULL but has no presence validation"
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -86,11 +86,11 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
86
86
|
errors = error.message.split(', ')
|
87
87
|
|
88
88
|
nullable_columns.sort.zip(errors.take(nullable_columns.size)) do |column, message|
|
89
|
-
expect(message).to eq "#{column} has unconditional presence validation but is missing NOT NULL"
|
89
|
+
expect(message).to eq "Record #{column} has unconditional presence validation but is missing NOT NULL"
|
90
90
|
end
|
91
91
|
|
92
92
|
not_null_columns.sort.zip(errors.drop(nullable_columns.size)) do |column, message|
|
93
|
-
expect(message).to eq "#{column} is NOT NULL but has no presence validation"
|
93
|
+
expect(message).to eq "Record #{column} is NOT NULL but has no presence validation"
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
@@ -122,7 +122,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
122
122
|
end.to raise_error do |error|
|
123
123
|
expect(error).to be_a RSpec::Expectations::ExpectationNotMetError
|
124
124
|
nullable_columns.sort.zip(error.message.split(', ')) do |column, message|
|
125
|
-
expect(message).to eq "#{column} has unconditional presence validation but is missing NOT NULL"
|
125
|
+
expect(message).to eq "Record #{column} has unconditional presence validation but is missing NOT NULL"
|
126
126
|
end
|
127
127
|
end
|
128
128
|
end
|
@@ -145,7 +145,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
145
145
|
|
146
146
|
expect do
|
147
147
|
is_expected.to_not validate_schema_nullable
|
148
|
-
end.to raise_error 'should not match NOT NULL with its presence validation but does'
|
148
|
+
end.to raise_error 'Record should not match NOT NULL with its presence validation but does'
|
149
149
|
end
|
150
150
|
|
151
151
|
specify 'when primary_key is not id' do
|
@@ -180,7 +180,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
180
180
|
end.to raise_error do |error|
|
181
181
|
expect(error).to be_a RSpec::Expectations::ExpectationNotMetError
|
182
182
|
not_null_columns.sort.zip(error.message.split(', ')) do |column, message|
|
183
|
-
expect(message).to eq "#{column} is NOT NULL but its presence validator was conditional: {:on=>:create}"
|
183
|
+
expect(message).to eq "Record #{column} is NOT NULL but its presence validator was conditional: {:on=>:create}"
|
184
184
|
end
|
185
185
|
end
|
186
186
|
end
|
@@ -193,7 +193,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
193
193
|
end.to raise_error do |error|
|
194
194
|
expect(error).to be_a RSpec::Expectations::ExpectationNotMetError
|
195
195
|
not_null_columns.sort.zip(error.message.split(', ')) do |column, message|
|
196
|
-
expect(message).to match /\
|
196
|
+
expect(message).to match /\ARecord #{column} is NOT NULL but its presence validator was conditional: {:if=>\#<Proc:.*>}\z/
|
197
197
|
end
|
198
198
|
end
|
199
199
|
end
|
@@ -206,7 +206,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
206
206
|
end.to raise_error do |error|
|
207
207
|
expect(error).to be_a RSpec::Expectations::ExpectationNotMetError
|
208
208
|
not_null_columns.sort.zip(error.message.split(', ')) do |column, message|
|
209
|
-
expect(message).to match /\
|
209
|
+
expect(message).to match /\ARecord #{column} is NOT NULL but its presence validator was conditional: {:unless=>\#<Proc:.*>}\z/
|
210
210
|
end
|
211
211
|
end
|
212
212
|
end
|
@@ -219,7 +219,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
219
219
|
end.to raise_error do |error|
|
220
220
|
expect(error).to be_a RSpec::Expectations::ExpectationNotMetError
|
221
221
|
not_null_columns.sort.zip(error.message.split(', ')) do |column, message|
|
222
|
-
expect(message).to eq "#{column} is NOT NULL but its presence validator was conditional: {:allow_nil=>true}"
|
222
|
+
expect(message).to eq "Record #{column} is NOT NULL but its presence validator was conditional: {:allow_nil=>true}"
|
223
223
|
end
|
224
224
|
end
|
225
225
|
end
|
@@ -232,7 +232,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaNullableMatcher, :acti
|
|
232
232
|
end.to raise_error do |error|
|
233
233
|
expect(error).to be_a RSpec::Expectations::ExpectationNotMetError
|
234
234
|
not_null_columns.sort.zip(error.message.split(', ')) do |column, message|
|
235
|
-
expect(message).to eq "#{column} is NOT NULL but its presence validator was conditional: {:allow_blank=>true}"
|
235
|
+
expect(message).to eq "Record #{column} is NOT NULL but its presence validator was conditional: {:allow_blank=>true}"
|
236
236
|
end
|
237
237
|
end
|
238
238
|
end
|
@@ -34,7 +34,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
34
34
|
specify 'error messages' do
|
35
35
|
expect { is_expected.to validate_schema_uniqueness }.to(
|
36
36
|
raise_error(RSpec::Expectations::ExpectationNotMetError,
|
37
|
-
"scope #{unique_scope.inspect} has a unique index but no uniqueness validation")
|
37
|
+
"Record scope #{unique_scope.inspect} has a unique index but no uniqueness validation")
|
38
38
|
)
|
39
39
|
end
|
40
40
|
|
@@ -81,7 +81,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
81
81
|
specify 'error messages' do
|
82
82
|
expect { is_expected.to validate_schema_uniqueness }.to(
|
83
83
|
raise_error(RSpec::Expectations::ExpectationNotMetError,
|
84
|
-
"scope [:index_not_unique] has unconditional uniqueness validation but is missing a unique database index")
|
84
|
+
"Record scope [:index_not_unique] has unconditional uniqueness validation but is missing a unique database index")
|
85
85
|
)
|
86
86
|
end
|
87
87
|
|
@@ -107,7 +107,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
107
107
|
specify 'error messages' do
|
108
108
|
expect { is_expected.to validate_schema_uniqueness }.to(
|
109
109
|
raise_error(RSpec::Expectations::ExpectationNotMetError,
|
110
|
-
"scope [:no_index] has unconditional uniqueness validation but is missing a unique database index")
|
110
|
+
"Record scope [:no_index] has unconditional uniqueness validation but is missing a unique database index")
|
111
111
|
)
|
112
112
|
end
|
113
113
|
|
@@ -127,7 +127,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
127
127
|
|
128
128
|
expect do
|
129
129
|
is_expected.to_not validate_schema_uniqueness
|
130
|
-
end.to raise_error 'should not match unique indexes with its uniqueness validation but does'
|
130
|
+
end.to raise_error 'Record should not match unique indexes with its uniqueness validation but does'
|
131
131
|
end
|
132
132
|
|
133
133
|
specify 'allows validators with allow_nil: true' do
|
@@ -142,7 +142,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
142
142
|
|
143
143
|
expect { is_expected.to validate_schema_uniqueness }.to(
|
144
144
|
raise_error(RSpec::Expectations::ExpectationNotMetError,
|
145
|
-
"scope #{unique_scope.inspect} has a unique index but its uniqueness validator was conditional: {:on=>:create}")
|
145
|
+
"Record scope #{unique_scope.inspect} has a unique index but its uniqueness validator was conditional: {:on=>:create}")
|
146
146
|
)
|
147
147
|
end
|
148
148
|
|
@@ -151,7 +151,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
151
151
|
|
152
152
|
expect { is_expected.to validate_schema_uniqueness }.to(
|
153
153
|
raise_error(RSpec::Expectations::ExpectationNotMetError,
|
154
|
-
/\
|
154
|
+
/\ARecord scope #{Regexp.escape(unique_scope.inspect)} has a unique index but its uniqueness validator was conditional: {:if=>\#<Proc:.*>}\z/)
|
155
155
|
)
|
156
156
|
end
|
157
157
|
|
@@ -160,7 +160,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
160
160
|
|
161
161
|
expect { is_expected.to validate_schema_uniqueness }.to(
|
162
162
|
raise_error(RSpec::Expectations::ExpectationNotMetError,
|
163
|
-
/\
|
163
|
+
/\ARecord scope #{Regexp.escape(unique_scope.inspect)} has a unique index but its uniqueness validator was conditional: {:unless=>\#<Proc:.*>}\z/)
|
164
164
|
)
|
165
165
|
end
|
166
166
|
|
@@ -169,7 +169,7 @@ describe SchemaExpectations::RSpecMatchers::ValidateSchemaUniquenessMatcher, :ac
|
|
169
169
|
|
170
170
|
expect { is_expected.to validate_schema_uniqueness }.to(
|
171
171
|
raise_error(RSpec::Expectations::ExpectationNotMetError,
|
172
|
-
"scope #{unique_scope.inspect} has a unique index but its uniqueness validator was conditional: {:allow_blank=>true}")
|
172
|
+
"Record scope #{unique_scope.inspect} has a unique index but its uniqueness validator was conditional: {:allow_blank=>true}")
|
173
173
|
)
|
174
174
|
end
|
175
175
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schema_expectations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emma Borhanian
|
@@ -262,6 +262,7 @@ files:
|
|
262
262
|
- MIT-LICENSE
|
263
263
|
- README.md
|
264
264
|
- Rakefile
|
265
|
+
- TODO.md
|
265
266
|
- gemfiles/activerecord_3.1.gemfile
|
266
267
|
- gemfiles/activerecord_3.2.gemfile
|
267
268
|
- gemfiles/activerecord_4.0.gemfile
|