data_checks 0.1.1 → 0.2.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: 75110dd7aeb5c0972a2f4a2bc018133627b3322b6491bbb491b0f395306cc8ec
4
- data.tar.gz: 2e882c3d2373d7accc19c7b1efc9cc74f690d76bec9693145f358ae436706d31
3
+ metadata.gz: 990db04b3558c8b10439aa6af136f5415cffcfdf368ddd886db4c0c18b707896
4
+ data.tar.gz: 7acf51bdf1f5dc5b537577359257e33b110f0b2c3eb554ad8959eb25052c75c4
5
5
  SHA512:
6
- metadata.gz: 1f4ba9afdf6edb3afca680e9f3df7e9e0a16d650c5dcd2419c7784683d89fe10425b681d12228b504ad6652354bcf776cf4bd53d111ccbd3978c061d2f1ea34d
7
- data.tar.gz: 3d079a8442eb89134f27c26e65cd86825e850392fa98d85b130992910fe56126b42dbce30be4adeb5b6d3bca4ad7765321c8122ebcc4ceb3a294d6f2007a01e1
6
+ metadata.gz: 337bc667143363ae190de87729e3fbf17b940ebdaa1cd7ee701ed8f83e80b8dda30eb7db0ebdccd81231587c297df9ac662bf1bac23b0fa3c37f2bf828e382a1
7
+ data.tar.gz: 0b00bc6ee4b76e30023a4da4d20e9c9afb5b5f0d91936cfb21f024be8773e06e78db513df6e3776540a53cce7e0188d5ae3a6e1d714442ee01772afa3282b9c4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## master (unreleased)
2
2
 
3
+ ## 0.2.0 (2023-11-09)
4
+
5
+ - Add `ensure_equal` check method
6
+
7
+ ```ruby
8
+ ensure_equal :featured_projects, to: 100 do
9
+ FeaturedProject.count
10
+ end
11
+ ```
12
+
3
13
  ## 0.1.1 (2022-11-26)
4
14
 
5
15
  - Do not prematurely load `ActiveRecord::Base`
data/README.md CHANGED
@@ -133,6 +133,7 @@ end
133
133
  * `ensure_any` will check that the result of a given block is `> 0`
134
134
  * `ensure_more` will check that the result of a given block is `>` than a given number or that it contains more than a given number of items
135
135
  * `ensure_less` will check that the result of a given block is `<` than a given number or that it contains less than a given number of items
136
+ * `ensure_equal` will check that the result of a given block is `==` to the given number or that it contains a given number of items
136
137
 
137
138
  ```ruby
138
139
  ensure_no :images_without_previews do
@@ -26,6 +26,10 @@ module DataChecks
26
26
  add_check(EnsureLess, name, options, block)
27
27
  end
28
28
 
29
+ def ensure_equal(name, **options, &block)
30
+ add_check(EnsureEqual, name, options, block)
31
+ end
32
+
29
33
  def notifier(name, **options)
30
34
  name = name.to_s
31
35
 
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DataChecks
4
+ class EnsureEqual < Check
5
+ private
6
+ def handle_result(result)
7
+ expected = options.fetch(:to)
8
+ passing = true
9
+ count = 0
10
+
11
+ case result
12
+ when Numeric
13
+ if result != expected
14
+ passing = false
15
+ count = result
16
+ end
17
+ # In ActiveRecord <= 4.2 ActiveRecord::Relation is not an Enumerable!
18
+ when Enumerable, ActiveRecord::Relation
19
+ count = result.size
20
+ if count != expected
21
+ passing = false
22
+ entries = result
23
+ end
24
+ else
25
+ raise ArgumentError, "Unsupported result: '#{result.class.name}' for 'ensure_equal'"
26
+ end
27
+
28
+ CheckResult.new(check: self, passing: passing, count: count, entries: entries)
29
+ end
30
+ end
31
+ end
@@ -5,23 +5,17 @@ module DataChecks
5
5
  private
6
6
  def handle_result(result)
7
7
  expected = options.fetch(:than)
8
- passing = true
9
8
 
10
9
  case result
11
10
  when Numeric
12
11
  count = result
13
- if result >= expected
14
- passing = false
15
- end
16
12
  when Enumerable, ActiveRecord::Relation
17
- count = result.count
18
- if count >= expected
19
- passing = false
20
- end
13
+ count = result.size
21
14
  else
22
15
  raise ArgumentError, "Unsupported result: '#{result.class.name}' for 'ensure_less'"
23
16
  end
24
17
 
18
+ passing = count < expected
25
19
  CheckResult.new(check: self, passing: passing, count: count)
26
20
  end
27
21
  end
@@ -5,23 +5,17 @@ module DataChecks
5
5
  private
6
6
  def handle_result(result)
7
7
  expected = options.fetch(:than)
8
- passing = true
9
8
 
10
9
  case result
11
10
  when Numeric
12
11
  count = result
13
- if result <= expected
14
- passing = false
15
- end
16
12
  when Enumerable, ActiveRecord::Relation
17
- count = result.count
18
- if count <= expected
19
- passing = false
20
- end
13
+ count = result.size
21
14
  else
22
15
  raise ArgumentError, "Unsupported result: '#{result.class.name}' for 'ensure_more'"
23
16
  end
24
17
 
18
+ passing = count > expected
25
19
  CheckResult.new(check: self, passing: passing, count: count)
26
20
  end
27
21
  end
@@ -15,7 +15,7 @@ module DataChecks
15
15
  end
16
16
  # In ActiveRecord <= 4.2 ActiveRecord::Relation is not an Enumerable!
17
17
  when Enumerable, ActiveRecord::Relation
18
- unless result.empty?
18
+ unless result.to_a.empty? # loads records for ActiveRecord::Relation
19
19
  passing = false
20
20
  count = result.size
21
21
  entries = result
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DataChecks
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/data_checks.rb CHANGED
@@ -12,6 +12,7 @@ module DataChecks
12
12
  autoload :CheckResult
13
13
  autoload :CheckRun
14
14
  autoload :Config
15
+ autoload :EnsureEqual
15
16
  autoload :EnsureLess
16
17
  autoload :EnsureMore
17
18
  autoload :EnsureNo
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_checks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - fatkodima
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-26 00:00:00.000000000 Z
11
+ date: 2023-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -39,6 +39,7 @@ files:
39
39
  - lib/data_checks/check_result.rb
40
40
  - lib/data_checks/check_run.rb
41
41
  - lib/data_checks/config.rb
42
+ - lib/data_checks/ensure_equal.rb
42
43
  - lib/data_checks/ensure_less.rb
43
44
  - lib/data_checks/ensure_more.rb
44
45
  - lib/data_checks/ensure_no.rb
@@ -80,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
81
  - !ruby/object:Gem::Version
81
82
  version: '0'
82
83
  requirements: []
83
- rubygems_version: 3.1.6
84
+ rubygems_version: 3.4.10
84
85
  signing_key:
85
86
  specification_version: 4
86
87
  summary: Regression testing for data