Class SitesControllerTest
In: test/functional/sites_controller_test.rb
Parent: Test::Unit::TestCase

Methods

Public Instance methods

[Source]

    # File test/functional/sites_controller_test.rb, line 24
24:   def setup
25:     logger.debug "Test Case: #{name}"  
26:     @controller = SitesController.new
27:     @request    = ActionController::TestRequest.new
28:     @response   = ActionController::TestResponse.new
29:     @andy, @george, @tony = users(:andy), users(:george), users(:tony) # admin, cadmin, user
30:     @emails = ActionMailer::Base::deliveries
31:     @emails.clear
32:     get :list     
33:   end

[Source]

    # File test/functional/sites_controller_test.rb, line 35
35:   def teardown
36:     [ENV['EPFWIKI_SITES_PATH'], ENV['EPFWIKI_WIKIS_PATH']].each do |p|
37:       FileUtils.rm_r(p) if File.exists?(p)
38:       File.makedirs(p)
39:     end
40:   end

[Source]

    # File test/functional/sites_controller_test.rb, line 42
42:   def test_index
43:     get :index
44:     assert_redirected_to :controller => 'login'
45:     session['user'] = @tony
46:     assert_not_nil(session['user'])
47:   end

[Source]

    # File test/functional/sites_controller_test.rb, line 49
49:   def test_list
50:     get :list
51:     assert_redirected_to :controller => 'login'
52:     session['user'] = @tony
53:     get :list
54:     assert_response :success
55:     assert_template 'list'
56:     assert_not_nil assigns(:baseline_processes)
57:     assert_not_nil assigns(:wikis)
58:   end

Shows:

  1. Need to be an admin to create a baseline process
  2. Admin get link to create baseline process
  3. Admin can upload baseline process

[Source]

     # File test/functional/sites_controller_test.rb, line 64
 64:   def test_new
 65:     # 1
 66:     session['user'] = @tony
 67:     get :new
 68:     assert_unot_admin_message
 69:     # 2
 70:     session['user'] = @andy
 71:     get :list
 72:     assert_response :success
 73:     assert_tag :tag => 'a', :attributes => {:href => "/sites/new"}    
 74:     # 3
 75:     get :new
 76:     assert_response :success
 77:     assert assigns(:site)
 78:     assert assigns(:baseline_processes)
 79:     assert assigns(:folders)        
 80:     assert assigns(:folders).empty?
 81:     assert assigns(:baseline_processes).empty?
 82:     assert_response :success
 83:     #post :upload, :site => nil TODO how to test this here
 84:     #assert_not_nil assigns(:site)
 85:     #assert_errors
 86:     #assert_equal "Folder can't be blank, File can't be blank", assigns(:site).errors.full_messages.join(", ")
 87:     assert_equal 0, Site.count
 88:     @oup_20060721 = create_oup_20060721
 89:     @oup_20060728 = create_oup_20060728  
 90:     @oup_20060825 = create_oup_20060825
 91:     @oup_20060721.destroy
 92:     @oup_20060728.destroy
 93:     @oup_20060825.destroy
 94:     get :new    
 95:     assert_equal ['oup_20060721', 'oup_20060728', 'oup_20060825'].sort, assigns(:folders).sort
 96:     assigns(:folders).each do |folder|
 97:       assert_tag :tag => 'option', :content => folder
 98:     end
 99:     site_count = Site.count
100:     assert session['user'].admin?
101:     post :new, :site => {:title => 'oup_20060721', :folder => assigns(:folders)[0], :description => 'test03_new'}
102:     assert_not_nil assigns(:baseline_processes)
103:     assert_not_nil assigns(:folders)
104:     site = assigns(:site)
105:     assert_not_nil site
106:     assert_no_errors(site)
107:     assert site.valid? 
108:     assert_redirected_to :action => 'list'
109:     assert_equal site_count + 1, Site.count    
110:     assert_equal ::FLASH_RECORD_CREATED, flash['success']
111:   end

Shows:

  1. Only admins can create wikis
  2. Admin can request form to create a new wiki

[Source]

     # File test/functional/sites_controller_test.rb, line 116
116:   def test_new_wiki
117:     @oup_20060721 = create_oup_20060721
118:     # 1
119:     session['user'] = @tony
120:     get :new_wiki
121:     assert_unot_admin_message
122:     # 2
123:     session['user'] = @andy 
124:     assert @andy.admin?
125:     get :new_wiki 
126:     assert_not_nil assigns(:wiki)
127:     assert_field 'wiki_folder' 
128:     assert_tag :tag => 'textarea', :attributes => {:id => 'wiki_description', :name => 'wiki[description]'}
129:     assert_field 'wiki_title'
130:   end

Shows

  1. Admin requests creation of Wiki
  2. Content is wikified using job_daily (an email is sent if the job fails)

[Source]

     # File test/functional/sites_controller_test.rb, line 181
181:   def test_new_wiki_job_daily
182:     # 1
183:     get :new_wiki
184:     session['user'] = @andy
185:     #baseline_process = Site.find_by_title('openup0721')
186:     #assert_not_nil baseline_process
187:     @oup_20060721 = create_oup_20060721    
188:     post :new_wiki, :wiki => {:folder => 'openup2', :title => 'OpenUP Wiki2', :description => 'Wiki for OpenUP created in tst06_new_wiki2'}
189:     openupwiki2 = Site.find_by_folder('openup2')
190:     assert_not_nil openupwiki2
191:     assert_equal 'Pending', openupwiki2.status
192:     # 2
193:     @emails.clear
194:     update = Update.new(:user => @andy, :baseline_process => @oup_20060721, :wiki => openupwiki2)
195:     assert update.save
196:     job_daily
197:     openupwiki2.reload
198:     assert_equal [], Update.find_todo
199:     rep_cnt = 1 # daily
200:     rep_cnt = 1 if Time.now.wday == 1 # weekly
201:     rep_cnt += 1 if Time.now.day == 1 # monthly
202:     assert_equal(3+rep_cnt, @emails.size) # scheduled, started, finished
203:     assert_equal 'Ready', openupwiki2.status
204:   end

Shows:

  1. Admin can create a Wiki (note: the Wiki is empty after create)

[Source]

     # File test/functional/sites_controller_test.rb, line 134
134:   def test_new_wiki_post
135:     @emails.clear
136:     # 1
137:     get :new_wiki
138:     session['user'] = @andy
139:     @oup_20060721 = create_oup_20060721
140:     post :new_wiki, :wiki => {:folder => 'openup', :title => 'OpenUP Wiki', :description => 'Wiki for OpenUP created in test05_new_wiki_post', :baseline_process => @oup_20060721}
141:     assert_redirected_to :action => 'description'
142:     assert SitesController::FLASH_WIKI_SITE_CREATED, flash['success']
143:     wiki = assigns(:wiki)
144:     assert_not_nil wiki
145:     # 2
146:   end

Shows:

  1. Cannot make a Wiki obsolete with a get request
  2. Ordinary users cannot make a Wiki obsolete
  3. Admin users can make a Wiki obsolete

[Source]

     # File test/functional/sites_controller_test.rb, line 261
261:   def test_obsolete
262:     wiki = create_templates
263:     assert wiki.obsolete_on.nil?
264:     # 1
265:     session['user'] = @george
266:     get :obsolete, :id => wiki.id
267:     assert_illegal_get
268:     # 2
269:     session['user'] = @tony
270:     get :obsolete, :id => wiki.id
271:     assert_unot_admin_message
272:     session['user'] = @andy
273:     post :obsolete, :id => wiki.id
274:     wiki.reload
275:     assert !wiki.obsolete_on.nil?
276:     assert_equal @andy.id, wiki.obsolete_by 
277:   end

Shows

  1. Wikis can be updated from the ‘description’ page
  2. Admin can schedule an update (create an update record) (ordinary user cannot)
  3. Admin can cancel an update
  4. Admin can do update_now

[Source]

     # File test/functional/sites_controller_test.rb, line 211
211:   def test_update_wiki
212:     # 1
213:     @oup_20060721 = create_oup_20060721
214:     @oupwiki = create_oup_wiki(@oup_20060721)    
215:     get :description, :id => @oupwiki.id
216:     assert_redirected_to :controller => 'login'
217:     session['user'] = @tony
218:     get :description, :id => @oupwiki.id
219:     BaselineProcess.find(:all).each do |bp|
220:       assert_match "/sites/update/#{@oupwiki.id}?baseline_process_id=#{bp.id}", @response.body
221:     end
222:     # 2
223:     session['user'] = @tony
224:     post :update
225:     assert_unot_admin_message
226:     session['user'] =  @andy
227:     cnt = Update.count
228:     post :update, :id => @oupwiki.id, :baseline_process_id => @oup_20060721.id    
229:     assert_equal 1+cnt, Update.count
230:     assert_redirected_to :action => 'description', :id => @oupwiki.id
231:     # 3
232:     assert_equal 1, Update.find_todo.size
233:     update = Update.find_todo[0]
234:     session['user'] = @tony
235:     post :update_cancel, :id => @oupwiki.id , :update_id => update.id
236:     assert_unot_admin_message
237:     session['user'] = @andy
238:     post :update_cancel, :id => @oupwiki.id , :update_id => update.id
239:     assert_equal cnt, Update.count
240:     assert_equal 0, Update.find_todo.size
241:     # 4
242:     @emails.clear 
243:     update = Update.new(:wiki => @oupwiki, :baseline_process => @oup_20060721, :user => @andy)
244:     assert update.save
245:     assert_equal(1, @emails.size) # scheduled 
246:     session['user'] = @tony
247:     post :update_now, :update_id => update.id
248:     assert_unot_admin_message
249:     session['user'] = @andy
250:     @emails.clear    
251:     post :update_now, :update_id => update.id
252:     assert_equal SitesController::FLASH_WIKI_UPDATE_SUCCESS, flash['success']
253:     assert_equal [], Update.find_todo    
254:     assert_equal(2, @emails.size) # started, created
255:   end

Shows

  1. Ordinary users cannot do wikify now
  2. Admin can wikify content directly

[Source]

     # File test/functional/sites_controller_test.rb, line 151
151:   def test_wikify_now
152:     @emails.clear
153:     get 'list'
154:     # 1.
155:     session['user'] = @tony
156:     @oup_20060721 = create_oup_20060721
157:     wiki = Wiki.new(:folder => 'openup', :title => 'OpenUP Wiki', :user_id => session['user'].id)
158:     assert wiki.save
159:     assert_equal 'Pending', wiki.status
160:     update = Update.new(:wiki => wiki, :baseline_process => @oup_20060721, :user => session['user'])
161:     assert update.save
162:     get :update_now, :update_id => update.id
163:     assert_unot_admin_message
164:     # 2
165:     session['user'] = @andy
166:     post :update_now, :update_id => update.id 
167:     assert_equal(4, @emails.size) 
168:     assert_equal ["[EPF Wiki - Test Enviroment] SCHEDULED creation new Wiki OpenUP Wiki using Baseline Process oup_20060721",
169:  "[EPF Wiki - Test Enviroment] Autorisation Problem Detected",
170:  "[EPF Wiki - Test Enviroment] STARTED creating New Wiki OpenUP Wiki using Baseline Process oup_20060721",
171:  "[EPF Wiki - Test Enviroment] FINISHED creating new Wiki OpenUP Wiki using Baseline Process oup_20060721"], 
172:  [@emails[0].subject, @emails[1].subject, @emails[2].subject, @emails[3].subject]
173:     assert_equal 'Ready', wiki.status
174:     wiki.reload
175:     assert_equal wiki.baseline_process, @oup_20060721
176:   end

[Validate]