Renamed helpers to correspond to renamed Controller classes.
[merb_radiant.git] / radiant_specs / test / unit / .svn / text-base / admin_ui_test.rb.svn-base
blobfa27e22430f1bffaad189686048e23f6f1fe5d7b
1 require File.dirname(__FILE__) + '/../test_helper'
3 class AdminUITest < Test::Unit::TestCase
4   
5   fixtures :users
6   
7   def setup
8     add_tabs "First", "Second", "Third"
9     @admin_user = users(:admin)
10     @developer_user = users(:developer)
11     @normal_user = users(:existing)
12   end
13   
14   def test_mixins
15     assert Radiant::AdminUI.included_modules.include?(Simpleton)
16     assert Radiant::AdminUI::TabSet.included_modules.include?(Enumerable)
17   end
18   
19   def test_tabs
20     assert_kind_of Radiant::AdminUI::TabSet, admin.tabs
21   end
22   
23   def test_brackets
24     assert_equal "Second", admin.tabs["Second"].name
25     assert_equal "Third", admin.tabs["Third"].name
26   end
27     
28   def test_adding_tabs
29     admin.tabs.add "Test", "/test"
30     assert_equal "Test", admin.tabs[3].name
31     
32     admin.tabs.add "After", "/after", :after => "Second"
33     assert_equal "After", admin.tabs[2].name
34     
35     admin.tabs.add "Before", "/before", :before => "Second"
36     assert_equal "Before", admin.tabs[1].name
37     
38     assert_equal 6, admin.tabs.size
39   end
40   
41   def test_removing_tabs
42     admin.tabs.remove "Second"
43     assert_equal 2, admin.tabs.size
44     assert_equal "Third", admin.tabs[1].name
45   end
46   
47   def test_cannot_add_tab_with_the_same_name
48     assert_raises(Radiant::AdminUI::DuplicateTabNameError) { admin.tabs.add "First", "/first" }
49   end
50   
51   def test_tab_visibility
52     admin.tabs.add "Admin and Dev Tab", "/tab", :visibility => [:admin, :developer]
53     tab = admin.tabs["Admin and Dev Tab"]
54     
55     assert_equal [:admin, :developer], tab.visibility
56     assert_equal false, tab.shown_for?(@normal_user)
57     assert_equal true, tab.shown_for?(@developer_user)
58     assert_equal true, tab.shown_for?(@admin_user)
59   end
60   
61   def test_tab_visibility__for
62     admin.tabs.add "Developer Tab", "/developer", :for => :developer
63     tab = admin.tabs["Developer Tab"]
64     
65     assert_equal [:developer], tab.visibility
66     assert_equal false, tab.shown_for?(@normal_user)
67     assert_equal true, tab.shown_for?(@developer_user)
68     assert_equal false, tab.shown_for?(@admin_user)
69   end
70   
71   def test_tab_visibility__everyone
72     admin.tabs.add "Everyone Tab", "/developer"
73     tab = admin.tabs["Everyone Tab"]
74     
75     assert_equal [:all], tab.visibility
76     assert_equal true, tab.shown_for?(@normal_user)
77     assert_equal true, tab.shown_for?(@developer_user)
78     assert_equal true, tab.shown_for?(@admin_user)
79   end
80   
81   private
82   
83     def admin
84       @admin ||= Radiant::AdminUI.new
85     end
86   
87     def add_tabs(*args)
88       args.each do |name|
89         admin.tabs.add name, "/#{name.underscore}"
90       end
91     end
92   
93 end