require 'spec_helper'
class ObjectWithBreadcrumb
include ShowBreadcrumb
end
describe ShowBreadcrumb do
let(:admin) { Admin.create(name: "Admins") }
let(:manager) { Manager.create(name: "Managers") }
let(:user) { User.create(name: "Users") }
let(:controller) { ActionController::Base.new }
describe "#collect_crumbs" do
subject(:object_with_breadcrumb) { ObjectWithBreadcrumb.new }
context "when an object has no parent" do
it "should return an array containing itself" do
crumbs = object_with_breadcrumb.collect_crumbs(admin, [])
expect(crumbs).to eq([admin])
end
end
context "when an object has a parent" do
it "should return an array with itself and parents" do
user.manager = manager
crumbs = object_with_breadcrumb.collect_crumbs(user, [])
expect(crumbs).to eq([user, manager])
end
end
end
describe "#breadcrumbs" do
before { controller.stub(url_for: "fake_url") }
context "when :forced_parent is passed" do
it "should link to the forced parent" do
breadcrumb = controller.breadcrumb(user, "Add", forced_parent: admin)
expect(breadcrumb).to eq("Admin > Users > Add User")
end
end
context "when there is only one crumb" do
it "should not return a parent link" do
breadcrumb = controller.breadcrumb(admin, "Add")
expect(breadcrumb).to eq("Admins > Admin > Add Admin")
end
end
end
end