Files
fetsite/spec/models/calentry_spec.rb

58 lines
1.9 KiB
Ruby

require 'spec_helper'
describe Calentry do
let(:rubrik) {FactoryBot.create(:rubrik)}
let(:user) {FactoryBot.create(:user)}
let(:calendar) {FactoryBot.create(:calendar,updated_at: 1.hour.ago)}
let(:neuigkeit) {FactoryBot.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id, updated_at: 1.hour.ago)}
subject(:calentry) {FactoryBot.build(:calentry, calendar_id: calendar.id, object_type: "Neuigkeit",object_id: neuigkeit.id)}
it "is valid with full data" do
expect(calentry).to be_valid
end
[:ende,:start,:typ].each do |attr|
it "is not valid without #{attr}" do
e= FactoryBot.build(:calentry, calendar_id: calendar.id, object_type: "Neuigkeit",object_id: neuigkeit.id, attr => nil)
expect(e).not_to be_valid
expect(e).to have_at_least(1).errors_on(attr)
end
end
it "updates updated_at of neuigekit" do
expect {calentry.dauer+=1.hour;calentry.save}.to change{calentry.object.updated_at}
end
it "updates updated_at of calendar" do
expect {calentry.dauer+=1.hour;calentry.save}.to change{calentry.calendar.updated_at}
end
it "changes ende with dauer" do
expect {calentry.dauer=7}.to change(calentry,:ende).to(calentry.start+7.hours)
end
it "changes dauer with ende" do
expect {calentry.ende=calentry.start+7.hours}.to change(calentry,:dauer).to(7)
end
it "sets is upcomming" do
calentry.start=1.hour.from_now
calentry.dauer=2
expect(calentry.is_upcomming?).to be true
expect(calentry.is_past?).to be false
expect(calentry.is_ongoing?).to be false
calentry.start=1.hour.ago
calentry.dauer=2
expect(calentry.is_upcomming?).to be false
expect(calentry.is_past?).to be false
expect(calentry.is_ongoing?).to be true
calentry.start=4.hour.ago
calentry.dauer=2
expect(calentry.is_upcomming?).to be false
expect(calentry.is_past?).to be true
expect(calentry.is_ongoing?).to be false
end
end