Files
astuto/spec/models/post_status_spec.rb

74 lines
2.4 KiB
Ruby
Raw Normal View History

2019-08-24 12:06:48 +02:00
require 'rails_helper'
RSpec.describe PostStatus, type: :model do
let(:post_status) { FactoryBot.create(:post_status) }
it 'should be valid' do
expect(post_status).to be_valid
end
2019-08-24 12:06:48 +02:00
it 'must have a name' do
empty_name = FactoryBot.build(:post_status, name: '')
2019-08-24 19:12:57 +02:00
nil_name = FactoryBot.build(:post_status, name: nil)
2019-08-24 12:06:48 +02:00
2019-08-24 19:12:57 +02:00
expect(empty_name).to be_invalid
expect(nil_name).to be_invalid
2019-08-24 12:06:48 +02:00
end
it 'has a unique name' do
post_status2 = FactoryBot.build(:post_status, name: post_status.name)
expect(post_status2).to be_invalid
2019-08-24 12:06:48 +02:00
end
it 'has a valid hex color' do
2019-08-24 19:12:57 +02:00
nil_color = FactoryBot.build(:post_status, color: nil)
empty_color = FactoryBot.build(:post_status, color: '')
invalid_color = FactoryBot.build(:post_status, color: 'ffffff')
invalid_color2 = FactoryBot.build(:post_status, color: '#ffff')
valid_color = FactoryBot.build(:post_status, color: '#fff')
valid_color2 = FactoryBot.build(:post_status, color: '#ffffff')
2019-08-24 12:06:48 +02:00
2019-08-24 19:12:57 +02:00
expect(nil_color).to be_invalid
expect(empty_color).to be_invalid
expect(invalid_color).to be_invalid
expect(invalid_color2).to be_invalid
expect(valid_color).to be_valid
expect(valid_color2).to be_valid
2019-08-24 12:06:48 +02:00
end
it 'must have a order of type integer and positive' do
nil_order = FactoryBot.build(:post_status, order: nil)
empty_order = FactoryBot.build(:post_status, order: '')
decimal_order = FactoryBot.build(:post_status, order: 1.1)
negative_order = FactoryBot.build(:post_status, order: -1)
zero_order = FactoryBot.build(:post_status, order: 0)
expect(nil_order).to be_invalid
expect(empty_order).to be_invalid
expect(decimal_order).to be_invalid
expect(negative_order).to be_invalid
expect(zero_order).to be_invalid
end
it 'has a method that returns only post statuses that should show up in roadmap' do
post_status2 = FactoryBot.create(:post_status, show_in_roadmap: true, order: 2)
post_status3 = FactoryBot.create(:post_status, show_in_roadmap: true, order: 1)
roadmap = PostStatus.find_roadmap
expect(roadmap.size).to eq(2)
expect(roadmap.first).to eq(post_status3)
expect(roadmap.second).to eq(post_status2)
end
2019-09-18 21:00:38 +02:00
it 'automatically sets order to last order if not specified' do
order = 10
post_status1 = FactoryBot.create(:post_status, order: order)
post_status2 = PostStatus.new
expect(post_status1.order).to eq(order)
expect(post_status2.order).to eq(order + 1)
end
2019-08-24 12:06:48 +02:00
end