1 require File.dirname(__FILE__) + "/../../spec_helper"
3 describe Radiant::Extension do
5 it "should be a Simpleton" do
6 Radiant::Extension.included_modules.should include(Simpleton)
7 Radiant::Extension.should respond_to(:instance)
10 it "should annotate version, description, url, root and extension_name" do
11 Radiant::Extension.included_modules.should include(Annotatable)
12 %w{version description url root extension_name}.each do |attribute|
13 Radiant::Extension.should respond_to(attribute)
17 it "should have access to the Radiant::AdminUI instance" do
18 BasicExtension.instance.should respond_to(:admin)
19 BasicExtension.admin.should == Radiant::AdminUI.instance
22 it "should have a migrator" do
23 BasicExtension.instance.should respond_to(:migrator)
24 BasicExtension.migrator.should be_instance_of(Radiant::ExtensionMigrator)
27 it "should set the extension_name in subclasses" do
28 Kernel.module_eval { class SuperExtension < Radiant::Extension; end }
29 SuperExtension.extension_name.should == "Super"
32 it "should store route definitions defined in a block" do
33 Radiant::Extension.should respond_to(:define_routes)
34 my_block = proc {|map| map.stuff "stuff", :controller => "admin/pages" }
35 Radiant::Extension.define_routes(&my_block)
36 Radiant::Extension.route_definitions.should be_instance_of(Array)
37 Radiant::Extension.route_definitions.first.should == my_block
42 describe Radiant::Extension, "when inactive" do
45 BasicExtension.deactivate
46 Radiant::AdminUI.tabs.clear
49 it "should become active when activated" do
50 BasicExtension.activate
51 BasicExtension.active?.should == true
56 describe Radiant::Extension, "when active" do
58 it "should become deactive when deactivated" do
59 BasicExtension.deactivate
60 BasicExtension.active?.should == false
63 # This example needs revisiting and more detail
64 it "should have loaded plugins stored in vendor/plugins" do
65 defined?(Multiple).should_not be_nil
66 defined?(NormalPlugin).should_not be_nil