aboutsummaryrefslogtreecommitdiffstats
path: root/spec/models/chouette/purchase_window_spec.rb
blob: 5e81108e1740a761484a7fb7cafb454fa19c9004 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
RSpec.describe Chouette::PurchaseWindow, :type => :model do
  let(:referential) {create(:referential)}
  subject  { create(:purchase_window, referential: referential) }

  it { should belong_to(:referential) }
  it { is_expected.to validate_presence_of(:name) }

  describe 'validations' do
    it 'validates and date_ranges do not overlap' do
      expect(build(:purchase_window, referential: referential,date_ranges: [Date.today..Date.today + 10.day, Date.yesterday..Date.tomorrow])).to_not be_valid
      expect(build(:purchase_window, referential: referential,date_ranges: [Date.today..Date.today])).to be_valid
    end
  end

  describe 'before_validation' do
    let(:purchase_window) { build(:purchase_window, referential: referential, date_ranges: []) }

    it 'shoud fill date_ranges with date ranges' do
      expected_range = Date.today..Date.tomorrow
      purchase_window.date_ranges << expected_range
      purchase_window.valid?

      expect(purchase_window.date_ranges.map { |period| period.begin..period.end }).to eq([expected_range])
    end
  end

end