We get rid of database cleaner, and JavaScript tests are faster because between tests we now rollback transactions instead of truncating the database.
54 lines
1.6 KiB
Ruby
54 lines
1.6 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Budget Groups" do
|
|
let(:budget) { create(:budget, slug: "budget_slug") }
|
|
let!(:group) { create(:budget_group, slug: "group_slug", budget: budget) }
|
|
|
|
context "Load" do
|
|
scenario "finds group using budget slug and group slug" do
|
|
visit budget_group_path("budget_slug", "group_slug")
|
|
expect(page).to have_content "Select an option"
|
|
end
|
|
|
|
scenario "finds group using budget id and group id" do
|
|
visit budget_group_path(budget, group)
|
|
expect(page).to have_content "Select an option"
|
|
end
|
|
|
|
scenario "raises an error if budget slug is not found" do
|
|
expect do
|
|
visit budget_group_path("wrong_budget", group)
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
|
|
scenario "raises an error if budget id is not found" do
|
|
expect do
|
|
visit budget_group_path(0, group)
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
|
|
scenario "raises an error if group slug is not found" do
|
|
expect do
|
|
visit budget_group_path(budget, "wrong_group")
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
|
|
scenario "raises an error if group id is not found" do
|
|
expect do
|
|
visit budget_group_path(budget, 0)
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
end
|
|
|
|
context "Show" do
|
|
scenario "Headings are sorted by name" do
|
|
last_heading = create(:budget_heading, group: group, name: "BBB")
|
|
first_heading = create(:budget_heading, group: group, name: "AAA")
|
|
|
|
visit budget_group_path(budget, group)
|
|
|
|
expect(first_heading.name).to appear_before(last_heading.name)
|
|
end
|
|
end
|
|
end
|