diff options
| author | Teddy Wing | 2017-09-25 17:30:23 +0200 |
|---|---|---|
| committer | Teddy Wing | 2017-09-25 17:30:23 +0200 |
| commit | cfd4b8a553af99fd4571172183fa11e59f7e6e35 (patch) | |
| tree | a375f4d41f18c7ae610a21497b14206de66b4f49 /spec/models | |
| parent | 72806a4961e4240cff955c66fff1840e40301b89 (diff) | |
| download | chouette-core-cfd4b8a553af99fd4571172183fa11e59f7e6e35.tar.bz2 | |
Workbench: Ensure `output` attr is initialised when creating workbench
Since all `Workbench`es must have an associated `ReferentialSuite` via
`output`, if none is provided when creating a new `Workbench`, create
one automatically.
This is done in a `before_validation` callback (eck, AR callbacks).
In order for our prior 'should validate_presence_of' test to continue to
work, we have to work around the new callback, otherwise Shoulda can't
set `output` to `nil` to run its expectation and the test fails.
Refs #3520
Diffstat (limited to 'spec/models')
| -rw-r--r-- | spec/models/workbench_spec.rb | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/spec/models/workbench_spec.rb b/spec/models/workbench_spec.rb index f83342f75..653b896dc 100644 --- a/spec/models/workbench_spec.rb +++ b/spec/models/workbench_spec.rb @@ -20,7 +20,14 @@ RSpec.describe Workbench, :type => :model do it { should have_many(:stop_areas).through(:stop_area_referential) } - it { should validate_presence_of(:output) } + it do + # This callback interferes with the validation test + Workbench.skip_callback(:validation, :before, :initialize_output) + + should validate_presence_of(:output) + + Workbench.set_callback(:validation, :before, :initialize_output) + end context '.lines' do let!(:ids) { ['STIF:CODIFLIGNE:Line:C00840', 'STIF:CODIFLIGNE:Line:C00086'] } @@ -36,4 +43,18 @@ RSpec.describe Workbench, :type => :model do expect(lines.map(&:objectid)).to include(*ids) end end + + describe ".create" do + it "must automatically create a ReferentialSuite when being created" do + workbench = Workbench.create + expect(workbench.output).to be_an_instance_of(ReferentialSuite) + end + + it "must not overwrite a given ReferentialSuite" do + referential_suite = ReferentialSuite.create + workbench = Workbench.create(output: referential_suite) + + expect(workbench.output).to eq(referential_suite) + end + end end |
