Merge branch 'ce-9858-follow-up-on-a-bug-that-happens-when-using-a-factory-built-object-in-the-where-block-of-rspec-parameterized-tablesyntax' into 'master'
Fix and document an RSpec::Parameterized::TableSyntax edge-case See merge request gitlab-org/gitlab-ce!25438
This commit is contained in:
commit
7ff0c8ae57
2 changed files with 11 additions and 12 deletions
|
@ -358,16 +358,11 @@ range of inputs, might look like this:
|
||||||
describe "#==" do
|
describe "#==" do
|
||||||
using RSpec::Parameterized::TableSyntax
|
using RSpec::Parameterized::TableSyntax
|
||||||
|
|
||||||
let(:project1) { create(:project) }
|
|
||||||
let(:project2) { create(:project) }
|
|
||||||
where(:a, :b, :result) do
|
where(:a, :b, :result) do
|
||||||
1 | 1 | true
|
1 | 1 | true
|
||||||
1 | 2 | false
|
1 | 2 | false
|
||||||
true | true | true
|
true | true | true
|
||||||
true | false | false
|
true | false | false
|
||||||
project1 | project1 | true
|
|
||||||
project2 | project2 | true
|
|
||||||
project 1 | project2 | false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
with_them do
|
with_them do
|
||||||
|
@ -380,6 +375,11 @@ describe "#==" do
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
CAUTION: **Caution:**
|
||||||
|
Only use simple values as input in the `where` block. Using procs, stateful
|
||||||
|
objects, FactoryBot-created objects etc. can lead to
|
||||||
|
[unexpected results](https://github.com/tomykaira/rspec-parameterized/issues/8).
|
||||||
|
|
||||||
### Prometheus tests
|
### Prometheus tests
|
||||||
|
|
||||||
Prometheus metrics may be preserved from one test run to another. To ensure that metrics are
|
Prometheus metrics may be preserved from one test run to another. To ensure that metrics are
|
||||||
|
|
|
@ -4,7 +4,6 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe PrometheusMetric do
|
describe PrometheusMetric do
|
||||||
subject { build(:prometheus_metric) }
|
subject { build(:prometheus_metric) }
|
||||||
let(:other_project) { build(:project) }
|
|
||||||
|
|
||||||
it_behaves_like 'having unique enum values'
|
it_behaves_like 'having unique enum values'
|
||||||
|
|
||||||
|
@ -16,17 +15,17 @@ describe PrometheusMetric do
|
||||||
describe 'common metrics' do
|
describe 'common metrics' do
|
||||||
using RSpec::Parameterized::TableSyntax
|
using RSpec::Parameterized::TableSyntax
|
||||||
|
|
||||||
where(:common, :project, :result) do
|
where(:common, :with_project, :result) do
|
||||||
false | other_project | true
|
false | true | true
|
||||||
false | nil | false
|
false | false | false
|
||||||
true | other_project | false
|
true | true | false
|
||||||
true | nil | true
|
true | false | true
|
||||||
end
|
end
|
||||||
|
|
||||||
with_them do
|
with_them do
|
||||||
before do
|
before do
|
||||||
subject.common = common
|
subject.common = common
|
||||||
subject.project = project
|
subject.project = with_project ? build(:project) : nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(subject.valid?).to eq(result) }
|
it { expect(subject.valid?).to eq(result) }
|
||||||
|
|
Loading…
Reference in a new issue