Fix and document an RSpec::Parameterized::TableSyntax edge-case

Signed-off-by: 's avatarRémy Coutable <remy@rymai.me>
parent e0fc809b
......@@ -358,16 +358,11 @@ range of inputs, might look like this:
describe "#==" do
using RSpec::Parameterized::TableSyntax
let(:project1) { create(:project) }
let(:project2) { create(:project) }
where(:a, :b, :result) do
1 | 1 | true
1 | 2 | false
true | true | true
true | false | false
project1 | project1 | true
project2 | project2 | true
project 1 | project2 | false
end
with_them do
......@@ -380,6 +375,11 @@ describe "#==" do
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 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
subject { build(:prometheus_metric) }
let(:other_project) { build(:project) }
it_behaves_like 'having unique enum values'
......@@ -16,17 +15,17 @@ describe PrometheusMetric do
describe 'common metrics' do
using RSpec::Parameterized::TableSyntax
where(:common, :project, :result) do
false | other_project | true
false | nil | false
true | other_project | false
true | nil | true
where(:common, :with_project, :result) do
false | true | true
false | false | false
true | true | false
true | false | true
end
with_them do
before do
subject.common = common
subject.project = project
subject.project = with_project ? build(:project) : nil
end
it { expect(subject.valid?).to eq(result) }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment