Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
activeadmin / spec / unit / namespace_spec.rb
Size: Mime:
require 'rails_helper'

describe ActiveAdmin::Namespace do

  let(:application){ ActiveAdmin::Application.new }

  context "when new" do
    let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }

    it "should have an application instance" do
      expect(namespace.application).to eq application
    end

    it "should have a name" do
      expect(namespace.name).to eq :admin
    end

    it "should have no resources" do
      expect(namespace.resources).to be_empty
    end

    it "should not have any menu item" do
      expect(namespace.fetch_menu(:default).children).to be_empty
    end
  end # context "when new"

  describe "settings" do
    let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }

    it "should inherit the site title from the application" do
      ActiveAdmin::Namespace.setting :site_title, "Not the Same"
      expect(namespace.site_title).to eq application.site_title
    end

    it "should be able to override the site title" do
      expect(namespace.site_title).to eq application.site_title
      namespace.site_title = "My Site Title"
      expect(namespace.site_title).to_not eq application.site_title
    end
  end


  describe "#fetch_menu" do
    let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }

    it "returns the menu" do
      expect(namespace.fetch_menu(:default)).to be_an_instance_of(ActiveAdmin::Menu)
    end

    it "should have utility nav menu" do
      expect(namespace.fetch_menu(:utility_navigation)).to be_an_instance_of(ActiveAdmin::Menu)
    end

    it "should raise an exception if the menu doesn't exist" do
      expect {
        namespace.fetch_menu(:not_a_menu_that_exists)
      }.to raise_error(KeyError)
    end
  end

  describe "#build_menu" do
    let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }

    it "should set the block as a menu build callback" do
      namespace.build_menu do |menu|
        menu.add label: "menu item"
      end

      expect(namespace.fetch_menu(:default)["menu item"]).to_not be_nil
    end

    it "should set a block on a custom menu" do
      namespace.build_menu :test do |menu|
        menu.add label: "menu item"
      end

      expect(namespace.fetch_menu(:test)["menu item"]).to_not be_nil
    end
  end

  describe "utility navigation" do
    let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
    let(:menu) do
      namespace.build_menu :utility_navigation do |menu|
        menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info", html_options: { target: :blank }
        namespace.add_logout_button_to_menu menu, 1, class: "matt"
      end
      namespace.fetch_menu(:utility_navigation)
    end

    it "should have a logout button to the far left" do
      expect(menu["Logout"]).to_not be_nil
      expect(menu["Logout"].priority).to eq 1
    end

    it "should have a static link with a target of :blank" do
      expect(menu["ActiveAdmin.info"]).to_not be_nil
      expect(menu["ActiveAdmin.info"].html_options).to include(target: :blank)
    end

  end

end