Note the title field was hidden since commit 01b9aa8, even though it was
required and translatable. I've removed the required validation rule,
since it doesn't seem to make much sense and made the translatable
tests harder to write.
Also note the method `I18n.localize`, which is used to set the
milestone's title, uses `I18n.locale` even if it's inside a
`Globalize.with_locale` block, and so the same format is generated for
every locale.
73 lines
2.0 KiB
Ruby
73 lines
2.0 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe Budget::Investment::Milestone do
|
|
|
|
describe "Validations" do
|
|
let(:milestone) { build(:budget_investment_milestone) }
|
|
|
|
it "is valid" do
|
|
expect(milestone).to be_valid
|
|
end
|
|
|
|
it "is valid without a title" do
|
|
milestone.title = nil
|
|
expect(milestone).to be_valid
|
|
end
|
|
|
|
it "is not valid without a description if status is empty" do
|
|
milestone.status = nil
|
|
milestone.description = nil
|
|
expect(milestone).not_to be_valid
|
|
end
|
|
|
|
it "is valid without a description if status is present" do
|
|
milestone.description = nil
|
|
expect(milestone).to be_valid
|
|
end
|
|
|
|
it "is not valid without an investment" do
|
|
milestone.investment_id = nil
|
|
expect(milestone).not_to be_valid
|
|
end
|
|
|
|
it "is not valid if description and status are not present" do
|
|
milestone.description = nil
|
|
milestone.status_id = nil
|
|
expect(milestone).not_to be_valid
|
|
end
|
|
|
|
it "is valid without status if description is present" do
|
|
milestone.status_id = nil
|
|
expect(milestone).to be_valid
|
|
end
|
|
|
|
it "is valid without description if status is present" do
|
|
milestone.description = nil
|
|
expect(milestone).to be_valid
|
|
end
|
|
end
|
|
|
|
describe "#description_or_status_present?" do
|
|
let(:milestone) { build(:budget_investment_milestone) }
|
|
|
|
it "is not valid when status is removed and there's no description" do
|
|
milestone.update(description: nil)
|
|
expect(milestone.update(status_id: nil)).to be false
|
|
end
|
|
|
|
it "is not valid when description is removed and there's no status" do
|
|
milestone.update(status_id: nil)
|
|
expect(milestone.update(description: nil)).to be false
|
|
end
|
|
|
|
it "is valid when description is removed and there is a status" do
|
|
expect(milestone.update(description: nil)).to be true
|
|
end
|
|
|
|
it "is valid when status is removed and there is a description" do
|
|
expect(milestone.update(status_id: nil)).to be true
|
|
end
|
|
end
|
|
|
|
end
|