Sha256: 82198e8068e73b4f653da4849a8edbd8ae0e33278bc9019add4e8d048bf8bc21

Contents?: true

Size: 1.91 KB

Versions: 7

Compression:

Stored size: 1.91 KB

Contents

require 'rails_helper'
require 'active_admin/menu'
require 'active_admin/menu_item'

include ActiveAdmin

RSpec.describe ActiveAdmin::Menu do

  context "with no items" do
    it "should have an empty item collection" do
      menu = Menu.new
      expect(menu.items).to be_empty
    end

    it "should accept new items" do
      menu = Menu.new
      menu.add label: "Dashboard"
      expect(menu.items.first.label).to eq "Dashboard"
    end
  end

  context "with many items" do
    let(:menu) do
      Menu.new do |m|
        m.add label: "Dashboard"
        m.add label: "Blog"
      end
    end

    it "should give access to the menu item as an array" do
      expect(menu['Dashboard'].label).to eq 'Dashboard'
    end
  end

  describe "adding items with children" do
    it "should add an empty item if the parent does not exist" do
      menu = Menu.new
      menu.add parent: "Admin", label: "Users"

      expect(menu["Admin"]["Users"]).to be_an_instance_of(ActiveAdmin::MenuItem)
    end

    it "should add a child to a parent if it exists" do
      menu = Menu.new
      menu.add parent: "Admin", label: "Users"
      menu.add parent: "Admin", label: "Projects"

      expect(menu["Admin"]["Projects"]).to be_an_instance_of(ActiveAdmin::MenuItem)
    end

    it "should assign children regardless of resource file load order" do
      menu = Menu.new
      menu.add parent: "Users", label: "Posts"
      menu.add label: "Users", url: "/some/url"

      expect(menu["Users"].url).to eq "/some/url"
      expect(menu["Users"]["Posts"]).to be_a ActiveAdmin::MenuItem
    end
  end

  describe "sorting items" do
    it "should sort children by the result of their label proc" do
      menu = Menu.new
      menu.add label: proc{ "G" }, id: "not related 1"
      menu.add label: proc{ "B" }, id: "not related 2"
      menu.add label: proc{ "A" }, id: "not related 3"

      expect(menu.items.map(&:label)).to eq %w[A B G]
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
activeadmin-1.3.1 spec/unit/menu_spec.rb
activeadmin-1.3.0 spec/unit/menu_spec.rb
activeadmin-1.2.1 spec/unit/menu_spec.rb
activeadmin-1.2.0 spec/unit/menu_spec.rb
activeadmin-1.1.0 spec/unit/menu_spec.rb
activeadmin-1.0.0 spec/unit/menu_spec.rb
activeadmin-1.0.0.pre5 spec/unit/menu_spec.rb