nobrainer-rspec 1.0.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e0c49605afc9e72f119e3d5ecb2809a556defc5ab84d52574eef569d8c08697
4
- data.tar.gz: 6a71e9bcb29d5e29c8cc4071fbab8ece22bb3ecbc1d814619c442782032d0924
3
+ metadata.gz: a085f3d69d83e7deb6a1278c422ff1d0206884838aba9554567bb33947c2f2ec
4
+ data.tar.gz: 44c49d5de1198e404b47d724bc2d2763bee893067c50a53be3cf3a6076cfb124
5
5
  SHA512:
6
- metadata.gz: 916dfe718138432512a974b258d5d6a9d86a46c184225889e41ebbcd2f13ec8989619f243b8a0ea05791fbcd87e88ad0ab328f4fda83090061275e0951f06fc2
7
- data.tar.gz: 7416170408b071fbc3eb6c448e4d604ae771dec9a67b7b37202405d5b36521e2b3c860a29f2b6c77c368af48d2cb235da4175d7bced7572c74730e6419bfd53b
6
+ metadata.gz: 4abda54b105aec54fbf7f36aa3f99d0341a839edf270f1f9d499beed4b6115e4d7162208e53d84290ba31bec7dc4540a1f3d023f177ace45adae676efba15419
7
+ data.tar.gz: d6b1bb509c8376652546134665d442c70ac6dab87f2995db0b8f64ae4d2f68b56505b4d2cf9aab5fe734d47831259bacfab84cf133260175d72694c69bab8a52
data/CHANGELOG.md CHANGED
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+
10
+ ## [1.1.2] - 2022-05-09
11
+ ### Fixed
12
+ - have_index_for with a coupound index
13
+
14
+ ## [1.1.1] - 2021-02-09
15
+ ### Fixed
16
+ - error on generating failure description #1
17
+
18
+ ## [1.1.0] - 2020-11-28
19
+ ### Fixed
20
+ - have_field with a field using `unique: true` or `uniq: true`
21
+
9
22
  ## [1.0.1] - 2020-11-27
10
23
  ### Fixed
11
24
  - Fixes gem build which was creating an empty gem
@@ -31,7 +44,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
31
44
  - validate_format_of
32
45
  - validate_numericality_of
33
46
 
34
- [Unreleased]: https://gitlab.com/zedtux/nobrainer-rspec/-/compare/v1.0.1...master
35
- [1.0.1]: https://gitlab.com/zedtux/nobrainer-rspec/-/compare/v1.0.0...v1.1.0
47
+ [Unreleased]: https://gitlab.com/zedtux/nobrainer-rspec/-/compare/v1.1.2...master
48
+ [1.1.2]: https://gitlab.com/zedtux/nobrainer-rspec/-/compare/v1.1.1...v1.1.2
49
+ [1.1.1]: https://gitlab.com/zedtux/nobrainer-rspec/-/compare/v1.1.0...v1.1.1
50
+ [1.1.0]: https://gitlab.com/zedtux/nobrainer-rspec/-/compare/v1.0.1...v1.1.0
51
+ [1.0.1]: https://gitlab.com/zedtux/nobrainer-rspec/-/compare/v1.0.0...v1.0.1
36
52
  [1.0.0]: https://gitlab.com/zedtux/nobrainer-rspec/-/tags/v1.0.0
37
-
data/Gemfile CHANGED
@@ -2,4 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ gem 'nobrainer', '~> 0.34', github: 'nviennot/nobrainer'
5
6
  gem 'byebug'
@@ -394,8 +394,18 @@ module NoBrainer
394
394
  end
395
395
 
396
396
  # Checking unique
397
- if @unique && (@klass.fields[attr][:unique] != @unique)
398
- error += ' unique'
397
+ if @unique
398
+ uniq_key = @klass.fields[attr][:unique] ||
399
+ @klass.fields[attr][:uniq]
400
+
401
+ if @unique == true && uniq_key.nil?
402
+ error += ' unique'
403
+ end
404
+
405
+ if @unique.is_a?(Hash) && @unique.key?(:scope) &&
406
+ @unique[:scope] != uniq_key[:scope]
407
+ error += " unique scoped to #{uniq_key[:scope]}"
408
+ end
399
409
  end
400
410
 
401
411
  # Checking primary key
@@ -465,7 +475,11 @@ module NoBrainer
465
475
  desc += ' allowing all values mentioned' if @allowed_values
466
476
  desc += ' to be readonly' if @readonly
467
477
  desc += ' to be lazy fetched' if @lazy_fetched
468
- desc += ' to be unique' if @unique
478
+ if @unique == true
479
+ desc += ' to be unique'
480
+ elsif @unique&.key?(:scope)
481
+ desc += " to be unique in the scope of #{@unique[:scope]}"
482
+ end
469
483
  desc += ' as primary key' if @primary_key
470
484
  desc += " with a length of #{@length}" if @length
471
485
  desc += " with a minimal length of #{@min_length}" if @min_length
@@ -68,7 +68,7 @@ module NoBrainer
68
68
  class HaveIndexFor # :nodoc:
69
69
  def initialize(*attrs)
70
70
  @attributes = attrs.collect do |attributes|
71
- if attributes.is_a?(Array)
71
+ if attributes.is_a?(Enumerable)
72
72
  attributes.collect(&:to_sym)
73
73
  else
74
74
  attributes.to_sym
@@ -90,7 +90,7 @@ module NoBrainer
90
90
  @klass = klass.is_a?(Class) ? klass : klass.class
91
91
  @errors = []
92
92
  @attributes.each do |attr|
93
- if attr.is_a?(Array)
93
+ if attr.is_a?(Enumerable)
94
94
  missing_fields = attr - @klass.fields.keys
95
95
  if missing_fields.empty?
96
96
  index_key = @index_name || attr.join('_').to_sym
@@ -32,6 +32,7 @@ module NoBrainer
32
32
 
33
33
  def check_scope
34
34
  message = " scope to #{@validator.options[:scope]}"
35
+
35
36
  if @validator.options[:scope]
36
37
  if [@validator.options[:scope] || ''].flatten.map(&:to_sym) == @scope
37
38
  @positive_result_message += message
@@ -25,7 +25,10 @@ module NoBrainer
25
25
  return false
26
26
  end
27
27
 
28
- true
28
+ @result = true
29
+ check_on if @options[:on]
30
+ check_expected_message if @expected_message
31
+ @result
29
32
  end
30
33
 
31
34
  def failure_message_for_should
@@ -42,6 +45,7 @@ module NoBrainer
42
45
  def description
43
46
  desc = "have #{@type.inspect} validator on #{@field.inspect}"
44
47
  desc += " on #{@options[:on]}" if @options[:on]
48
+ desc += " with message #{@expected_message.inspect}" if @expected_message
45
49
  desc
46
50
  end
47
51
 
@@ -50,6 +54,11 @@ module NoBrainer
50
54
  self
51
55
  end
52
56
 
57
+ def with_message(message)
58
+ @expected_message = message
59
+ self
60
+ end
61
+
53
62
  private
54
63
 
55
64
  def check_on
@@ -74,6 +83,19 @@ module NoBrainer
74
83
  def on_options_covered_by?(validator)
75
84
  ([@options[:on]].flatten - [validator.options[:on]].flatten).empty?
76
85
  end
86
+
87
+ def check_expected_message
88
+ actual_message = @validator.options[:message]
89
+ if actual_message.nil?
90
+ @negative_result_message << ' with no custom message'
91
+ @result = false
92
+ elsif actual_message == @expected_message
93
+ @positive_result_message << " with custom message '#{@expected_message}'"
94
+ else
95
+ @negative_result_message << " got message '#{actual_message}'"
96
+ @result = false
97
+ end
98
+ end
77
99
  end
78
100
  end
79
101
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module NoBrainer
4
4
  module RSpec
5
- VERSION = '1.0.1'
5
+ VERSION = '1.1.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nobrainer-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillaume Hain
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-27 00:00:00.000000000 Z
11
+ date: 2022-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nobrainer
@@ -151,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  requirements: []
154
- rubygems_version: 3.1.4
154
+ rubygems_version: 3.1.6
155
155
  signing_key:
156
156
  specification_version: 4
157
157
  summary: RSpec matchers for Nobrainer