spec/unit/namespace_spec.rb in activeadmin-0.3.4 vs spec/unit/namespace_spec.rb in activeadmin-0.4.0

- old
+ new

@@ -14,201 +14,29 @@ it "should have a name" do namespace.name.should == :admin end it "should have no resources" do - namespace.resources.should == {} + namespace.resources.resources.should be_empty end it "should have an empty menu" do namespace.menu.items.should be_empty end - end + end # context "when new" - describe "registering a resource" do - + describe "settings" do let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) } - context "with no configuration" do - before do - namespace.register Category - end - it "should store the namespaced registered configuration" do - namespace.resources.keys.should include('Category') - end - it "should create a new controller in the default namespace" do - defined?(Admin::CategoriesController).should be_true - end - it "should create the dashboard controller" do - defined?(Admin::DashboardController).should be_true - end - it "should create a menu item" do - namespace.load_menu! - namespace.menu["Categories"].should be_an_instance_of(ActiveAdmin::MenuItem) - namespace.menu["Categories"].url.should == "/admin/categories" - end + it "should inherit the site title from the application" do + ActiveAdmin::Namespace.setting :site_title, "Not the Same" + namespace.site_title.should == application.site_title end - context "with a block configuration" do - it "should be evaluated in the dsl" do - lambda { - namespace.register Category do - raise "Hello World" - end - }.should raise_error - end + it "should be able to override the site title" do + namespace.site_title.should == application.site_title + namespace.site_title = "My Site Title" + namespace.site_title.should_not == application.site_title end - - context "with a resource that's namespaced" do - - before do - module ::Mock; class Resource; def self.has_many(arg1, arg2); end; end; end - namespace.register Mock::Resource - end - - it "should store the namespaced registered configuration" do - namespace.resources.keys.should include('MockResource') - end - it "should create a new controller in the default namespace" do - defined?(Admin::MockResourcesController).should be_true - end - it "should create a menu item" do - namespace.load_menu! - namespace.menu["Mock Resources"].should be_an_instance_of(ActiveAdmin::MenuItem) - end - it "should use the resource as the model in the controller" do - Admin::MockResourcesController.resource_class.should == Mock::Resource - end - - end - - describe "finding resource instances" do - - let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) } - - it "should return the resource when its been registered" do - post = namespace.register Post - namespace.resource_for(Post).should == post - end - - it 'should return nil when the resource has not been registered' do - namespace.resource_for(Post).should == nil - end - - it "should return the parent when the parent class has been registered and the child has not" do - user = namespace.register User - namespace.resource_for(Publisher).should == user - end - - it "should return the resource if it and it's parent were registered" do - user = namespace.register User - publisher = namespace.register Publisher - namespace.resource_for(Publisher).should == publisher - end - - end - - describe "adding to the menu" do - - describe "adding as a top level item" do - before do - namespace.register Category - namespace.load_menu! - end - it "should add a new menu item" do - namespace.menu['Categories'].should_not be_nil - end - end - - describe "adding as a child" do - before do - namespace.register Category do - menu :parent => 'Blog' - end - namespace.load_menu! - end - it "should generate the parent menu item" do - namespace.menu['Blog'].should_not be_nil - end - it "should generate its own child item" do - namespace.menu['Blog']['Categories'].should_not be_nil - end - end - - describe "disabling the menu" do - before do - namespace.register Category do - menu false - end - namespace.load_menu! - end - it "should not create a menu item" do - namespace.menu["Categories"].should be_nil - end - end - - describe "setting menu priority" do - before do - namespace.register Category do - menu :priority => 2 - end - namespace.load_menu! - end - it "should have a custom priority of 2" do - namespace.menu["Categories"].priority.should == 2 - end - end - - describe "setting a condition for displaying" do - before do - namespace.register Category do - menu :if => proc { false } - end - namespace.load_menu! - end - it "should have a proc returning false" do - namespace.menu["Categories"].display_if_block.should be_instance_of(Proc) - namespace.menu["Categories"].display_if_block.call.should == false - end - end - - describe "adding as a belongs to" do - context "when not optional" do - before do - namespace.register Post do - belongs_to :author - end - end - it "should not show up in the menu" do - namespace.menu["Posts"].should be_nil - end - end - context "when optional" do - before do - namespace.register Post do - belongs_to :author, :optional => true - end - end - it "should show up in the menu" do - namespace.menu["Posts"].should_not be_nil - end - end - end - end - - describe "dashboard controller name" do - context "when namespaced" do - it "should be namespaced" do - namespace = ActiveAdmin::Namespace.new(application, :admin) - namespace.dashboard_controller_name.should == "Admin::DashboardController" - end - end - context "when not namespaced" do - it "should not be namespaced" do - namespace = ActiveAdmin::Namespace.new(application, :root) - namespace.dashboard_controller_name.should == "DashboardController" - end - end - end - end + end