rspec-activerecord-expectations 1.3.0 → 2.1.0

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: 92f14ca413e9e716ea9b3046abc13d3929893185cfef8cdeaf14b7bebc93755c
4
- data.tar.gz: 93bfa962b7954844560961d66d080fa2c45a3188b8c9b92420d1852e36ce718b
3
+ metadata.gz: d320c1e0f80e96c3bbb2cb07df63b941aa9bb1aa3878f9ca46e6fa1fed483569
4
+ data.tar.gz: 69487efb7a89d208d28a0d26faa3c74fc3315645803a1ec4162a6bd9f3677008
5
5
  SHA512:
6
- metadata.gz: bb81903bbb00357ab9613a59fb2684bfaad7671fbca955f9876d503f5b179f8ead6d36f248ea24909f30db3ddb6f4fc307c509a181d2fe85d33d1e04006856da
7
- data.tar.gz: f813c1e8d6e320f6810cc33620fe702c379f47124b6add4bc1bdabde81c4e12c60a6aac5711caf8c23672f838d6185106ffb3695770a7c4002d04404c87929cb
6
+ metadata.gz: 7db71325cbfa0abd65c7128cceb18ba8017af399bee5cdd4502d84a988c3865605f0c5d34f858af352c1520b401651723fbf1c2335d652ec45f9ef0308a675bb
7
+ data.tar.gz: 44082fc8ad08369ea9e578f6cb3a11ec3dd7f92445b63ef4d415e10e14c79e350ded3a39828821b613513c382fd71b72db9b0669e7c14bd2e900655e03cffa5d
@@ -11,19 +11,19 @@ jobs:
11
11
  strategy:
12
12
  matrix:
13
13
  os: [ubuntu-latest, macos-latest]
14
- ruby_version: ['3.0', '2.7']
14
+ ruby-version: ['3.1', '3.0', '2.7']
15
15
  rails: ['5.0', '5.1', '5.2', '6.0', '6.1', '7.0']
16
16
 
17
17
  runs-on: ${{ matrix.os }}
18
- name: ruby ${{ matrix.ruby_version }}, rails ${{ matrix.rails }}, ${{ matrix.os }}
18
+ name: ruby ${{ matrix.ruby-version }}, rails ${{ matrix.rails }}, ${{ matrix.os }}
19
19
 
20
20
  steps:
21
21
  - uses: actions/checkout@v2
22
22
 
23
- - name: Set up Ruby ${{ matrix.ruby_version }}
23
+ - name: Set up Ruby ${{ matrix.ruby-version }}
24
24
  uses: ruby/setup-ruby@v1
25
25
  with:
26
- ruby_version: ${{ matrix.ruby_version }}
26
+ ruby-version: ${{ matrix.ruby-version }}
27
27
  bundler-cache: true
28
28
 
29
29
  - name: Install Gems w/ Rails ${{ matrix.rails }}
@@ -40,19 +40,19 @@ jobs:
40
40
  test_legacy:
41
41
  strategy:
42
42
  matrix:
43
- ruby_version: ['2.6', '2.5', '2.4', '2.3']
43
+ ruby-version: ['2.6', '2.5']
44
44
  rails: ['5.0', '5.1', '5.2']
45
45
 
46
46
  runs-on: ubuntu-latest
47
- name: legacy ruby ${{ matrix.ruby_version }}, rails ${{ matrix.rails }}
47
+ name: ruby ${{ matrix.ruby-version }}, rails ${{ matrix.rails }}
48
48
 
49
49
  steps:
50
50
  - uses: actions/checkout@v2
51
51
 
52
- - name: Set up Ruby ${{ matrix.ruby_version }}
52
+ - name: Set up Ruby ${{ matrix.ruby-version }}
53
53
  uses: ruby/setup-ruby@v1
54
54
  with:
55
- ruby_version: ${{ matrix.ruby_version }}
55
+ ruby-version: ${{ matrix.ruby-version }}
56
56
  bundler-cache: true
57
57
 
58
58
  - name: Install Gems w/ Rails ${{ matrix.rails }}
@@ -65,3 +65,33 @@ jobs:
65
65
 
66
66
  - name: Run tests
67
67
  run: bundle exec rspec
68
+
69
+ test_alt_rubies:
70
+ strategy:
71
+ matrix:
72
+ ruby-version: ['jruby', 'truffleruby']
73
+ rails: ['6.0', '6.1'] # jruby / jdbc-sqlite3 end up tightly bound to rails 6.x
74
+
75
+ runs-on: ubuntu-latest
76
+ name: ${{ matrix.ruby-version }}, rails ${{ matrix.rails }}
77
+
78
+ steps:
79
+ - uses: actions/checkout@v2
80
+
81
+ - name: Set up Ruby ${{ matrix.ruby-version }}
82
+ uses: ruby/setup-ruby@v1
83
+ with:
84
+ ruby-version: ${{ matrix.ruby-version }}
85
+ bundler-cache: true
86
+
87
+ - name: Install Gems w/ Rails ${{ matrix.rails }}
88
+ env:
89
+ MATRIX_RAILS_VERSION: ${{ matrix.rails }}
90
+ run: |
91
+ export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/rails_${MATRIX_RAILS_VERSION}.gemfile"
92
+ gem install bundler
93
+ bundle install --jobs 4 --retry 3
94
+
95
+ - name: Run tests
96
+ run: bundle exec rspec
97
+
data/CHANGELOG.md CHANGED
@@ -1,25 +1,33 @@
1
1
  # Changelog
2
2
 
3
- ## [1.3.0] - 2020-12-31
3
+ ## [2.1.0] - 2022-01-12
4
+ - change CI matrix for more version compatibility
5
+ - update gemspec to move some deps into development only
6
+ - README changes
7
+
8
+ ## [2.0.0] - 2022-01-07
9
+ - Require much more recent ruby, to use syntax that's been around since 2017
10
+
11
+ ## [1.3.0] - 2021-12-31
4
12
  - Add `repeatedly_load` matcher
5
13
  - Add query type matchers for `load_queries`, `schema_queries`, `transaction_queries`, `destroy_queries`
6
14
  - Allow singular version of all query types (e.g. `transaction_queries` vs `transaction_query`)
7
15
  - Fix failure message for `execute.exactly` matcher
8
16
 
9
- ## [1.2.0] - 2020-12-31
17
+ ## [1.2.0] - 2021-12-31
10
18
  - Add `query` as a synonym for `queries`
11
19
  - Ignore schema and transaction queries in query count
12
20
  - Add beginning of recording specific query types
13
21
  - Add query count matcher for `exactly`
14
22
 
15
- ## [1.1.0] - 2020-12-30
23
+ ## [1.1.0] - 2021-12-30
16
24
  - Add query count matchers for e.g. `less_than_or_equal_to`, `greater_than`
17
25
 
18
- ## [1.0.1] - 2020-12-30
26
+ ## [1.0.1] - 2021-12-30
19
27
  - Pin all the dependencies to a proper working subset
20
28
  - Expand testing to many rails / ruby combinations
21
29
 
22
- ## [1.0.0] - 2020-12-30
30
+ ## [1.0.0] - 2021-12-30
23
31
  - Basic gem w/ all the fixins and README and such
24
32
  - Add `less_than` comparison, and `queries` type
25
33
  - Basic tests in place, and not bad tbh
data/README.md CHANGED
@@ -30,7 +30,8 @@ group 'test' do
30
30
  end
31
31
  ```
32
32
 
33
- Then, include the functionality within your spec helper (or in a support file).
33
+ Then, include the functionality within your `rails_helper.rb` (or in a support
34
+ file).
34
35
 
35
36
  ```ruby
36
37
  RSpec.configure do |config|
@@ -109,11 +110,24 @@ This matcher will track ActiveRecord's built in load methods to prevent those
109
110
  N+1 situations. Using eager loading (e.g. `Track.all.includes(:album)`) will
110
111
  allow these expectations to pass as expected!
111
112
 
112
- **Note:** At the moment, this expectation will fail if you use a mechanism
113
- that loads records in batches, such as with `find_in_batches`. This will cause
114
- records to be "repeatedly loaded", but this is actually expected behavior in
115
- this case. If your tests load a relatively small number of records (which is
116
- probable), your tests won't fail. But it is possible.
113
+ ### Testing Batch Queries
114
+
115
+ If your code loads records in batches, it may be more difficult to create
116
+ expectations for repeated loading. After all, each batch will execute its own
117
+ queries, which may look like repeated loading.
118
+
119
+ If your test has a small enough number of records that only one batch is
120
+ loaded, your tests may work just fine. But otherwise, you may want to allow
121
+ your code to specify a batch size in order to guarantee only a single batch
122
+ is loaded:
123
+
124
+ ```ruby
125
+ tracks = Track.all
126
+
127
+ expect {
128
+ TrackSerializer.perform(tracks, batch_size: tracks.count)
129
+ }.not_to repeatedly_load('Track')
130
+ ```
117
131
 
118
132
  ## Counting Queries
119
133
 
@@ -8,7 +8,7 @@ module RSpec::ActiveRecord::Expectations
8
8
  def categorize(query)
9
9
  if query[:name] == "SCHEMA"
10
10
  [:schema_queries]
11
- elsif query[:name] == "TRANSACTION"
11
+ elsif query[:name] == "TRANSACTION" || query[:sql] =~ /^begin/i || query[:sql] =~ /^commit/i
12
12
  [:transaction_queries]
13
13
  elsif query[:name] =~ /Create$/
14
14
  [:queries, :insert_queries]
@@ -18,7 +18,7 @@ module RSpec::ActiveRecord::Expectations
18
18
  [:queries, :destroy_queries]
19
19
  elsif query[:name] =~ /Delete All$/
20
20
  [:queries, :destroy_queries]
21
- elsif query[:name] =~ /Exists\?$/
21
+ elsif query[:name] =~ /Exists\??$/
22
22
  [:queries, :exists_queries]
23
23
  else
24
24
  [:queries]
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "rspec-activerecord-expectations"
3
- spec.version = '1.3.0'
3
+ spec.version = '2.1.0'
4
4
  spec.authors = ["Joseph Mastey"]
5
5
  spec.email = ["hello@joemastey.com"]
6
6
 
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.description = %q{Adds new matchers to rspec to help you test whether your code is executing an unreasonable number of queries.}
9
9
  spec.homepage = "https://github.com/jmmastey/rspec-activerecord-expectations"
10
10
  spec.license = "MIT"
11
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
11
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
12
12
 
13
13
  spec.metadata["homepage_uri"] = spec.homepage
14
14
  spec.metadata["source_code_uri"] = spec.homepage
@@ -23,7 +23,12 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "activerecord", ">= 5.0.0", "< 7.1.0"
26
- spec.add_dependency "sqlite3", "~> 1.0"
26
+
27
+ if RUBY_PLATFORM == 'java'
28
+ spec.add_development_dependency "activerecord-jdbcsqlite3-adapter", '>= 60'
29
+ else
30
+ spec.add_development_dependency "sqlite3", "~> 1.0"
31
+ end
27
32
 
28
33
  spec.add_development_dependency "pry", "~> 0.0"
29
34
  spec.add_development_dependency "appraisal", "~> 2"
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-activerecord-expectations
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Mastey
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-04 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activerecord
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - ">="
@@ -20,8 +19,9 @@ dependencies:
20
19
  - - "<"
21
20
  - !ruby/object:Gem::Version
22
21
  version: 7.1.0
23
- type: :runtime
22
+ name: activerecord
24
23
  prerelease: false
24
+ type: :runtime
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
@@ -31,42 +31,42 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 7.1.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: sqlite3
35
34
  requirement: !ruby/object:Gem::Requirement
36
35
  requirements:
37
- - - "~>"
36
+ - - ">="
38
37
  - !ruby/object:Gem::Version
39
- version: '1.0'
40
- type: :runtime
38
+ version: '60'
39
+ name: activerecord-jdbcsqlite3-adapter
41
40
  prerelease: false
41
+ type: :development
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: '1.0'
46
+ version: '60'
47
47
  - !ruby/object:Gem::Dependency
48
- name: pry
49
48
  requirement: !ruby/object:Gem::Requirement
50
49
  requirements:
51
50
  - - "~>"
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0.0'
54
- type: :development
53
+ name: pry
55
54
  prerelease: false
55
+ type: :development
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0.0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: appraisal
63
62
  requirement: !ruby/object:Gem::Requirement
64
63
  requirements:
65
64
  - - "~>"
66
65
  - !ruby/object:Gem::Version
67
66
  version: '2'
68
- type: :development
67
+ name: appraisal
69
68
  prerelease: false
69
+ type: :development
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
@@ -121,14 +121,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 2.3.0
124
+ version: 2.5.0
125
125
  required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
129
  version: '0'
130
130
  requirements: []
131
- rubygems_version: 3.1.6
131
+ rubygems_version: 3.2.29
132
132
  signing_key:
133
133
  specification_version: 4
134
134
  summary: A gem to test how many activerecord queries your code executes.