spec/lib/radiant/admin_ui_spec.rb in radiant-0.6.6 vs spec/lib/radiant/admin_ui_spec.rb in radiant-0.6.7
- old
+ new
@@ -1,22 +1,78 @@
require File.dirname(__FILE__) + "/../../spec_helper"
describe Radiant::AdminUI do
before :each do
- @admin = Radiant::AdminUI.instance
+ @admin = Radiant::AdminUI.new
end
-
+
it "should be a Simpleton" do
Radiant::AdminUI.included_modules.should include(Simpleton)
Radiant::AdminUI.should respond_to(:instance)
end
-
+
it "should have a TabSet" do
@admin.should respond_to(:tabs)
@admin.tabs.should_not be_nil
@admin.tabs.should be_instance_of(Radiant::AdminUI::TabSet)
end
+
+ it "should have collections of Region Sets for every controller" do
+ %w{page snippet layout user}.each do |collection|
+ @admin.should respond_to(collection)
+ @admin.send(collection).should_not be_nil
+ @admin.send(collection).should be_kind_of(OpenStruct)
+ end
+ end
+
+ it "should load the default page regions" do
+ page = @admin.page
+ %w{edit remove children index}.each do |action|
+ page.send(action).should_not be_nil
+ page.send(action).should be_kind_of(Radiant::AdminUI::RegionSet)
+ end
+ page.edit.main.should == %w{edit_header edit_form edit_popups}
+ page.edit.form.should == %w{edit_title edit_extended_metadata
+ edit_page_parts}
+ page.edit.parts_bottom.should == %w{edit_layout_and_type edit_timestamp}
+ page.edit.form_bottom.should == %w{edit_buttons}
+ page.index.sitemap_head.should == %w{title_column_header
+ status_column_header
+ modify_column_header}
+ page.index.node.should == %w{title_column status_column add_child_column
+ remove_column}
+ page.remove.should === page.index
+ page.children.should === page.index
+ page._part.should === page.edit
+ end
+
+ it "should load the default snippet regions" do
+ snippet = @admin.snippet
+ snippet.edit.should_not be_nil
+ snippet.edit.main.should == %w{edit_header edit_form}
+ snippet.edit.form.should == %w{edit_title edit_content edit_filter
+ edit_timestamp}
+ snippet.edit.form_bottom.should == %w{edit_buttons}
+ end
+
+ it "should load the default layout regions" do
+ layout = @admin.layout
+ layout.edit.should_not be_nil
+ layout.edit.main.should == %w{edit_header edit_form}
+ layout.edit.form.should == %w{edit_title edit_extended_metadata
+ edit_content edit_timestamp}
+ layout.edit.form_bottom.should == %w{edit_buttons}
+ end
+
+ it "should load the default user regions" do
+ user = @admin.user
+ user.edit.should_not be_nil
+ user.edit.main.should == %w{edit_header edit_form}
+ user.edit.form.should == %w{edit_name edit_email edit_username
+ edit_password edit_roles edit_notes}
+ user.edit.form_bottom.should == %w{edit_timestamp edit_buttons}
+ end
end
describe Radiant::AdminUI::TabSet do
before :each do
@@ -28,59 +84,59 @@
end
it "should be Enumerable" do
@tabs.class.included_modules.should include(Enumerable)
end
-
+
it "should have its tabs accessible by name using brackets" do
@tabs.should respond_to(:[])
@tab_names.each do |name|
@tabs[name].should be_instance_of(Radiant::AdminUI::Tab)
@tabs[name].name.should == name
end
end
-
+
it "should have its tabs accessible by index using brackets" do
@tab_names.each_with_index do |name, index|
@tabs[index].should be_instance_of(Radiant::AdminUI::Tab)
@tabs[index].name.should == name
- end
+ end
end
-
+
it "should add new tabs to the end by default" do
@tabs.size.should == 3
@tabs.add "Test", "/test"
@tabs[3].name.should == "Test"
end
-
+
it "should add a new tab before the specified tab" do
@tabs[1].name.should == "Second"
@tabs.add "Before", "/before", :before => "Second"
@tabs[1].name.should == "Before"
@tabs[2].name.should == "Second"
end
-
+
it "should add a new tab after the specified tab" do
@tabs[1].name.should == "Second"
@tabs[2].name.should == "Third"
@tabs.add "After", "/after", :after => "Second"
@tabs[2].name.should == "After"
@tabs[1].name.should == "Second"
@tabs[3].name.should == "Third"
end
-
+
it "should remove a tab by name" do
@tabs.size.should == 3
@tabs.remove "Second"
@tabs.size.should == 2
@tabs[1].name.should == "Third"
end
-
+
it "should not allow adding a tab with the same name as an existing tab" do
lambda { @tabs.add "First", "/first" }.should raise_error(Radiant::AdminUI::DuplicateTabNameError)
end
-
+
it "should remove all tabs when cleared" do
@tabs.size.should == 3
@tabs.clear
@tabs.size.should == 0
end
@@ -97,36 +153,36 @@
@tab.visibility.should == [:all]
[:existing, :another, :admin, :developer, :non_admin].each do |user|
@tab.should be_shown_for(users(user))
end
end
-
+
it "should be shown only to admin users when visibility is admin" do
@tab.visibility = [:admin]
@tab.should be_shown_for(users(:admin))
[:existing, :another, :developer, :non_admin].each do |user|
@tab.should_not be_shown_for(users(user))
end
end
-
+
it "should be shown only to developer users when visibility is developer" do
@tab.visibility = [:developer]
@tab.should be_shown_for(users(:developer))
[:existing, :another, :admin, :non_admin].each do |user|
@tab.should_not be_shown_for(users(user))
- end
+ end
end
-
+
it "should assign visibility from :for option when created" do
@tab = Radiant::AdminUI::Tab.new "Test", "/test", :for => :developer
@tab.visibility.should == [:developer]
end
-
+
it "should assign visibility from :visibility option when created" do
@tab = Radiant::AdminUI::Tab.new "Test", "/test", :visibility => :developer
@tab.visibility.should == [:developer]
end
-
+
it "should assign visibility from both :for and :visibility options when created" do
@tab = Radiant::AdminUI::Tab.new "Test", "/test", :for => :developer, :visibility => :admin
@tab.visibility.should == [:developer, :admin]
end
end