diff options
| author | Alban Peignier | 2016-11-19 19:56:51 +0100 |
|---|---|---|
| committer | Alban Peignier | 2016-11-19 19:59:24 +0100 |
| commit | 80b934e7405cc70ec577e9de499bde881020caa4 (patch) | |
| tree | 4745099db154ba43676c007915e4bccaede0e19f /spec | |
| parent | bc1ec22d68233c74cbc93b2810f4e479a5e4b5ff (diff) | |
| download | chouette-core-80b934e7405cc70ec577e9de499bde881020caa4.tar.bz2 | |
Finalize ReferentialMetadata model support. Refs #1786
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/models/referential_metadata_spec.rb | 45 | ||||
| -rw-r--r-- | spec/models/referential_spec.rb | 67 |
2 files changed, 109 insertions, 3 deletions
diff --git a/spec/models/referential_metadata_spec.rb b/spec/models/referential_metadata_spec.rb index f82edde4a..e31caf8a1 100644 --- a/spec/models/referential_metadata_spec.rb +++ b/spec/models/referential_metadata_spec.rb @@ -36,6 +36,51 @@ RSpec.describe ReferentialMetadata, :type => :model do end + describe "#first_period" do + + let(:referential_metadata) { create :referential_metadata } + + describe "begin" do + it "should return first period begin" do + expect(referential_metadata.first_period_begin).to eq(referential_metadata.first_period.begin) + end + end + + describe "begin=" do + let(:date) { Date.today } + it "should change the first period begin" do + referential_metadata.first_period_begin = date + expect(referential_metadata.first_period_begin).to eq(date) + end + end + + describe "end" do + it "should return first period end" do + expect(referential_metadata.first_period_end).to eq(referential_metadata.first_period.end) + end + end + + describe "end=" do + let(:date) { Date.today } + it "should change the first period end" do + referential_metadata.first_period_end = date + expect(referential_metadata.first_period_end).to eq(date) + end + end + + describe "after_validation" do + it "should define first_period with first_period_begin and first_period_end" do + referential_metadata.first_period_begin = Date.today + referential_metadata.first_period_end = Date.tomorrow + + referential_metadata.valid? + + expect(referential_metadata.first_period).to eq(Range.new(referential_metadata.first_period_begin, referential_metadata.first_period_end)) + end + end + + end + describe "#includes_lines" do let(:referential_metadata) { create :referential_metadata } diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb index c76b157f8..18c77bb92 100644 --- a/spec/models/referential_spec.rb +++ b/spec/models/referential_spec.rb @@ -1,14 +1,14 @@ require 'spec_helper' describe Referential, :type => :model do - let(:ref) { create :referential } + let(:ref) { create :referential, metadatas: [create(:referential_metadata)] } # it "create a rule_parameter_set" do # referential = create(:referential) #expect(referential.rule_parameter_sets.size).to eq(1) # end - it { should have_many(:referential_metadatas) } + it { should have_many(:metadatas) } it { should belong_to(:workbench) } context "Cloning referential" do @@ -18,8 +18,69 @@ describe Referential, :type => :model do expect { cloned }.to change{ReferentialCloning.count}.by(1) end + def metadatas_attributes(referential) + referential.metadatas.map { |m| [ m.periodes, m.line_ids ] } + end + it 'should clone referential_metadatas' do - expect(cloned.referential_metadatas).not_to be_empty + expect(metadatas_attributes(cloned)).to eq(metadatas_attributes(ref)) end end + + describe "metadatas" do + context "nested attributes support" do + let(:attributes) do + { + "organisation_id" => first_organisation.id, + "name"=>"Test", + "slug"=>"test", + "prefix"=>"test", + "time_zone"=>"American Samoa", + "upper_corner"=>"51.1,8.23", + "lower_corner"=>"42.25,-5.2", + "data_format"=>"neptune", + "metadatas_attributes"=> { + "0"=> { + "first_period_begin(3i)"=>"19", + "first_period_begin(2i)"=>"11", + "first_period_begin(1i)"=>"2016", + "first_period_end(3i)"=>"19", + "first_period_end(2i)"=>"12", + "first_period_end(1i)"=>"2016", + "lines"=> [""] + lines.map { |l| l.id.to_s } + } + }, + "workbench_id"=>"1", + } + end + + let(:lines) { create_list(:line, 3)} + + let(:new_referential) { Referential.new(attributes) } + let(:first_metadata) { new_referential.metadatas.first } + + it "should create a metadata" do + expect(new_referential.metadatas.size).to eq(1) + end + + it "should define first_period_begin" do + expect(first_metadata.first_period_begin).to eq(Date.new(2016,11,19)) + end + + it "should define first_period_end" do + expect(first_metadata.first_period_end).to eq(Date.new(2016,12,19)) + end + + it "should define period" do + new_referential.save! + expect(first_metadata.first_period).to eq(Range.new(Date.new(2016,11,19), Date.new(2016,12,19))) + end + + it "should define period" do + new_referential.save! + expect(first_metadata.lines).to eq(lines) + end + end + end + end |
