bigbluebutton_rails 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/CHANGELOG.rdoc +11 -0
  2. data/Gemfile.lock +1 -1
  3. data/README.rdoc +46 -32
  4. data/Rakefile +0 -1
  5. data/app/controllers/bigbluebutton/rooms_controller.rb +17 -16
  6. data/app/controllers/bigbluebutton/servers_controller.rb +6 -2
  7. data/app/models/bigbluebutton_room.rb +35 -1
  8. data/app/models/bigbluebutton_server.rb +1 -1
  9. data/app/views/bigbluebutton/rooms/_form.html.erb +7 -3
  10. data/app/views/bigbluebutton/rooms/_rooms.html.erb +37 -0
  11. data/app/views/bigbluebutton/rooms/edit.html.erb +2 -2
  12. data/app/views/bigbluebutton/rooms/external.html.erb +2 -1
  13. data/app/views/bigbluebutton/rooms/index.html.erb +2 -37
  14. data/app/views/bigbluebutton/rooms/invite.html.erb +2 -2
  15. data/app/views/bigbluebutton/rooms/join.html.erb +1 -1
  16. data/app/views/bigbluebutton/rooms/new.html.erb +1 -1
  17. data/app/views/bigbluebutton/rooms/show.html.erb +10 -4
  18. data/app/views/bigbluebutton/servers/_activity_list.html.erb +6 -6
  19. data/app/views/bigbluebutton/servers/index.html.erb +4 -3
  20. data/app/views/bigbluebutton/servers/rooms.html.erb +2 -0
  21. data/app/views/bigbluebutton/servers/show.html.erb +3 -4
  22. data/config/locales/en.yml +7 -3
  23. data/lib/bigbluebutton_rails/exceptions.rb +4 -0
  24. data/lib/bigbluebutton_rails/rails/routes.rb +28 -35
  25. data/lib/bigbluebutton_rails/version.rb +1 -1
  26. data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +13 -10
  27. data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +13 -13
  28. data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +114 -115
  29. data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +12 -1
  30. data/spec/controllers/bigbluebutton/servers_controller_spec.rb +11 -0
  31. data/spec/generators/install_generator_spec.rb +1 -1
  32. data/spec/models/bigbluebutton_room_spec.rb +166 -80
  33. data/spec/models/bigbluebutton_server_spec.rb +4 -4
  34. data/spec/rails_app/features/activity_monitor_servers.feature +6 -0
  35. data/spec/rails_app/features/create_rooms.feature +5 -0
  36. data/spec/rails_app/features/create_servers.feature +7 -2
  37. data/spec/rails_app/features/edit_rooms.feature +7 -0
  38. data/spec/rails_app/features/edit_servers.feature +8 -2
  39. data/spec/rails_app/features/join_rooms.feature +1 -0
  40. data/spec/rails_app/features/list_and_show_rooms.feature +10 -2
  41. data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +10 -10
  42. data/spec/rails_app/features/step_definitions/common_steps.rb +6 -4
  43. data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +1 -0
  44. data/spec/rails_app/features/step_definitions/join_mobile_steps.rb +1 -3
  45. data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +3 -7
  46. data/spec/rails_app/features/step_definitions/list_and_show_rooms_steps.rb +12 -5
  47. data/spec/rails_app/features/step_definitions/list_and_show_servers_steps.rb +1 -5
  48. data/spec/rails_app/features/support/{application_controller.rb → patches/application_controller.rb} +0 -0
  49. data/spec/rails_app/features/support/patches/bigbluebutton_room.rb +9 -0
  50. data/spec/rails_app/features/support/paths.rb +12 -10
  51. data/spec/rails_app/features/support/templates.rb +90 -46
  52. data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +38 -22
  53. data/spec/routing/bigbluebutton/rooms_routing_spec.rb +142 -58
  54. data/spec/routing/bigbluebutton/servers_routing_spec.rb +9 -1
  55. metadata +11 -8
@@ -2,6 +2,11 @@ Feature: Create webconference rooms
2
2
  In order to held webconferences
3
3
  One needs to create and configure webconference rooms
4
4
 
5
+ Scenario: Access the page to create a new room
6
+ Given an anonymous user
7
+ When he goes to the new room page
8
+ Then he should see the new room page
9
+
5
10
  Scenario: Register a new BigBlueButton room
6
11
  Given a real server
7
12
  When the user goes to the new room page
@@ -2,13 +2,18 @@ Feature: Create webconference servers
2
2
  In order to held webconferences
3
3
  One needs to create and configure webconference servers
4
4
 
5
- Scenario: Register a new BigBlueButton server
5
+ Scenario: Access the page to create a new server
6
+ Given an anonymous user
7
+ When he goes to the new server page
8
+ Then he should see the new server page
9
+
10
+ Scenario: Register a new server
6
11
  Given an anonymous user
7
12
  When he goes to the new server page
8
13
  And registers a new server
9
14
  Then he should see the information about this server
10
15
 
11
- Scenario: Try to register a BigBlueButton server with errors
16
+ Scenario: Try to register a server with errors
12
17
  Given an anonymous user
13
18
  When he goes to the new server page
14
19
  And registers a new server with a wrong URL
@@ -2,6 +2,13 @@ Feature: Edit webconference rooms
2
2
  To change the information of a webconference rooms
3
3
  One needs to be able to edit and update the room
4
4
 
5
+ Scenario: Access the page to edit a room
6
+ Given an anonymous user
7
+ And a real server
8
+ And a room in this server
9
+ When he goes to the edit room page
10
+ Then he should see the edit room page
11
+
5
12
  Scenario: Edit data in a BigBlueButton room
6
13
  Given an anonymous user
7
14
  And a real server
@@ -2,7 +2,13 @@ Feature: Edit webconference servers
2
2
  To change the information of a webconference server
3
3
  One needs to be able to edit and update the server
4
4
 
5
- Scenario: Edit data in a BigBlueButton server
5
+ Scenario: Access the page to edit a server
6
+ Given an anonymous user
7
+ And a real server
8
+ When he goes to the edit server page
9
+ Then he should see the edit server page
10
+
11
+ Scenario: Edit data in a server
6
12
  Given an anonymous user
7
13
  And a real server
8
14
  When he goes to the edit server page
@@ -11,7 +17,7 @@ Feature: Edit webconference servers
11
17
  Then he should be at the show server URL
12
18
  And the server URL should be "http://test.com/bigbluebutton/api"
13
19
 
14
- Scenario: Try to edit data in a BigBlueButton server with incorrect values
20
+ Scenario: Try to edit data in a server with incorrect values
15
21
  Given an anonymous user
16
22
  And a real server
17
23
  When he goes to the edit server page
@@ -35,6 +35,7 @@ Feature: Join webconference rooms
35
35
  And a private room in this server
36
36
  When the user goes to the join room page
37
37
  Then he should be redirected to the invite room URL
38
+ And he should see the invite room page
38
39
 
39
40
  @mechanize
40
41
  Scenario: Joining a private room as a moderator
@@ -3,16 +3,24 @@ Feature: List and show webconference rooms
3
3
  One needs to see the room in a list of rooms
4
4
  and see all the information it has stored
5
5
 
6
- Scenario: View the list of BigBlueButton rooms
6
+ Scenario: View the list of rooms
7
7
  Given an anonymous user
8
8
  And a real server
9
9
  And 3 rooms in this server
10
10
  When he goes to the rooms index page
11
11
  Then he should see all available rooms in the list
12
12
 
13
- Scenario: View all information of a BigBlueButton room
13
+ Scenario: View all information of a room
14
14
  Given an anonymous user
15
15
  And a real server
16
16
  And a room in this server
17
17
  When he goes to the show room page
18
18
  Then he should see all the information available for this room
19
+
20
+ Scenario: View the list of rooms for a single server
21
+ Given an anonymous user
22
+ And a real server
23
+ And 3 rooms in this server
24
+ And 2 rooms in any other server
25
+ When he goes to the server rooms page
26
+ Then he should see only the rooms from this server
@@ -4,8 +4,8 @@ When /^(\d+) meetings running in this server$/ do |count|
4
4
  count.to_i.times do |i|
5
5
  room = Factory.create(:bigbluebutton_room, :server => @server)
6
6
  room.send_create
7
- BigBlueButtonBot.new(@server.api, room.meetingid, msalt,
8
- 1, FeaturesConfig.root['timeout_bot_start'])
7
+ BigBlueButtonBot.new(@server.api, room.meetingid, msalt, 1,
8
+ FeaturesConfig.root['timeout_bot_start'])
9
9
  @rooms << room
10
10
  end
11
11
  end
@@ -16,8 +16,8 @@ When /^(\d+) meetings recently ended in this server$/ do |count|
16
16
  count.to_i.times do |i|
17
17
  room = Factory.create(:bigbluebutton_room, :server => @server)
18
18
  room.send_create
19
- BigBlueButtonBot.new(@server.api, room.meetingid, msalt,
20
- 1, FeaturesConfig.root['timeout_bot_start'])
19
+ BigBlueButtonBot.new(@server.api, room.meetingid, msalt, 1,
20
+ FeaturesConfig.root['timeout_bot_start'])
21
21
  BigBlueButtonBot.finalize(room.meetingid)
22
22
  sleep 1
23
23
  @ended_rooms << room
@@ -76,12 +76,12 @@ def check_server_activity_monitor_rooms(rooms)
76
76
  has_content(room.meetingid)
77
77
 
78
78
  method = room.new_record? ? method(:doesnt_have_element) : method(:has_element)
79
- method.call("a", { :href => bigbluebutton_server_room_path(@server, room) })
80
- method.call("a", { :href => edit_bigbluebutton_server_room_path(@server, room) })
81
- method.call("a", { :href => bigbluebutton_server_room_path(@server, room), :"data-method" => :delete })
82
- method.call("a", { :href => join_bigbluebutton_server_room_path(@server, room) })
83
- method.call("a", { :href => join_mobile_bigbluebutton_server_room_path(@server, room) })
84
- method.call("a", { :href => end_bigbluebutton_server_room_path(@server, room) })
79
+ method.call("a", { :href => bigbluebutton_room_path(room) })
80
+ method.call("a", { :href => edit_bigbluebutton_room_path(room) })
81
+ method.call("a", { :href => bigbluebutton_room_path(room), :"data-method" => :delete })
82
+ method.call("a", { :href => join_bigbluebutton_room_path(room) })
83
+ method.call("a", { :href => join_mobile_bigbluebutton_room_path(room) })
84
+ method.call("a", { :href => end_bigbluebutton_room_path(room) })
85
85
 
86
86
  room.fetch_is_running?
87
87
  if room.is_running?
@@ -5,7 +5,6 @@ end
5
5
  When /^(\d+) server(s)?$/i do |count, _|
6
6
  # Note: these servers are not real, it will NOT be possible to make api requests
7
7
  # for a real server use :bigbluebutton_server_integration
8
- # Use "a real server" whenever possible
9
8
  count.to_i.times do
10
9
  Factory.create(:bigbluebutton_server)
11
10
  end
@@ -41,14 +40,17 @@ end
41
40
  When /(?:|I ) go(es)? to the (.+) page( \(no view check\))?$/i do |_, page_name, not_check|
42
41
  case page_name
43
42
  when /join external room/i
44
- @params = { :meeting => @room.meetingid }
43
+ @params = { :meeting => @room.meetingid, :server_id => @server.id }
45
44
  end
46
45
  visit path_to(page_name, @params)
47
- check_template(page_name) if not_check.nil?
48
46
  end
49
47
 
50
48
  When /see the (.+) page$/i do |page_name|
51
- check_template(page_name)
49
+ opts = {
50
+ :room => @room, :server => @server,
51
+ :rooms => BigbluebuttonRoom.all, :servers => BigbluebuttonServer.all
52
+ }
53
+ check_template(page_name, opts)
52
54
  end
53
55
 
54
56
  When /a user named "(.+)"/i do |username|
@@ -1,5 +1,6 @@
1
1
  When /^registers a new room$/i do
2
2
  attrs = Factory.attributes_for(:bigbluebutton_room, :server => @server)
3
+ fill_in("bigbluebutton_room[server_id]", :with => attrs[:server_id])
3
4
  fill_in("bigbluebutton_room[name]", :with => attrs[:name])
4
5
  fill_in("bigbluebutton_room[meetingid]", :with => attrs[:meetingid])
5
6
  check("bigbluebutton_room[randomize_meetingid]") if attrs[:randomize_meetingid]
@@ -1,5 +1,3 @@
1
1
  When /^he should see the QR code and a link to join using a mobile device$/i do
2
- # FIXME this is already being checked in "he goes to the mobile join page"
3
- # any better ideas?
4
- check_template("mobile join")
2
+ check_template("mobile join", { :room => @room })
5
3
  end
@@ -1,17 +1,13 @@
1
1
  When /^he should see a form to join the external room$/i do
2
- within(form_selector(external_bigbluebutton_server_rooms_path(@server), 'post')) do
3
- has_element("input", { :name => 'meeting', :type => 'hidden', :value => @room.meetingid })
4
- has_element("input", { :name => 'user[name]', :type => 'text' })
5
- has_element("input", { :name => 'user[password]', :type => 'password' })
6
- end
2
+ check_template("join external room")
7
3
  end
8
4
 
9
5
  When /^he should see his name in the user name input$/i do
10
6
  case current_url
11
7
  when /\/invite$/ # normal rooms
12
- form = form_selector(join_bigbluebutton_server_room_path(@server, @room), 'post')
8
+ form = form_selector(join_bigbluebutton_room_path(@room), 'post')
13
9
  when /\/external(\?.*)?/ # external rooms
14
- form = form_selector(external_bigbluebutton_server_rooms_path(@server), 'post')
10
+ form = form_selector(external_bigbluebutton_rooms_path, 'post')
15
11
  end
16
12
  within(form) do
17
13
  has_element("input", { :name => 'user[name]', :type => 'text', :value => @user.name })
@@ -1,11 +1,18 @@
1
1
  When /^he should see all available rooms in the list$/i do
2
- # FIXME this is already being checked in "he goes to the rooms index page"
3
- # any better ideas?
4
2
  check_template("rooms index")
5
3
  end
6
4
 
7
5
  When /^he should see all the information available for this room$/i do
8
- # FIXME this is already being checked in "he goes to the show room page"
9
- # any better ideas?
10
- check_template("show room")
6
+ check_template("show room", { :room => @room })
7
+ end
8
+
9
+ When /^(\d+) room(s)? in any other server$/i do |count, _|
10
+ any_other_server = Factory.create(:bigbluebutton_server)
11
+ count.to_i.times do
12
+ Factory.create(:bigbluebutton_room, :server => any_other_server)
13
+ end
14
+ end
15
+
16
+ When /^he should see only the rooms from this server$/i do
17
+ check_template("server rooms", { :rooms => @server.rooms })
11
18
  end
@@ -1,11 +1,7 @@
1
1
  When /^he should see all available servers in the list$/i do
2
- # FIXME this is already being checked in "he goes to the servers index page"
3
- # any better ideas?
4
2
  check_template("servers index")
5
3
  end
6
4
 
7
5
  When /^he should see all the information available for this server$/i do
8
- # FIXME this is already being checked in "he goes to the show server page"
9
- # any better ideas?
10
- check_template("show server")
6
+ check_template("show server", { :server => @server })
11
7
  end
@@ -0,0 +1,9 @@
1
+ class BigbluebuttonRoom < ActiveRecord::Base
2
+
3
+ protected
4
+
5
+ def select_server
6
+ self.server
7
+ end
8
+
9
+ end
@@ -6,7 +6,7 @@ module NavigationHelpers
6
6
  # step definition in web_steps.rb
7
7
  #
8
8
  def path_to(page_name, params=nil)
9
- params = "?" + params.map{ |k,v| "#{k}=#{CGI::escape(v)}" }.join("&") if params
9
+ params = "?" + params.map{ |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join("&") if params
10
10
 
11
11
  case page_name
12
12
 
@@ -24,24 +24,26 @@ module NavigationHelpers
24
24
  p = bigbluebutton_server_path(@server)
25
25
  when /server activity monitor/i
26
26
  p = activity_bigbluebutton_server_path(@server)
27
+ when /server rooms/i
28
+ p = rooms_bigbluebutton_server_path(@server)
27
29
  when /new room/i
28
- p = new_bigbluebutton_server_room_path(@server)
30
+ p = new_bigbluebutton_room_path
29
31
  when /rooms index/i, /create room/i
30
- p = bigbluebutton_server_rooms_path(@server)
32
+ p = bigbluebutton_rooms_path
31
33
  when /join external room/i
32
- p = external_bigbluebutton_server_rooms_path(@server)
34
+ p = external_bigbluebutton_rooms_path
33
35
  when /show room/i
34
- p = bigbluebutton_server_room_path(@server, @room)
36
+ p = bigbluebutton_room_path(@room)
35
37
  when /edit room/i
36
- p = edit_bigbluebutton_server_room_path(@server, @room)
38
+ p = edit_bigbluebutton_room_path(@room)
37
39
  when /update room/i
38
- p = bigbluebutton_server_room_path(@server, @room)
40
+ p = bigbluebutton_room_path(@room)
39
41
  when /join room/i
40
- p = join_bigbluebutton_server_room_path(@server, @room)
42
+ p = join_bigbluebutton_room_path(@room)
41
43
  when /invite room/i
42
- p = invite_bigbluebutton_server_room_path(@server, @room)
44
+ p = invite_bigbluebutton_room_path(@room)
43
45
  when /mobile join/i
44
- p = join_mobile_bigbluebutton_server_room_path(@server, @room)
46
+ p = join_mobile_bigbluebutton_room_path(@room)
45
47
 
46
48
  else
47
49
  begin
@@ -2,26 +2,27 @@
2
2
  module TemplateHelpers
3
3
 
4
4
  # calls the specific methods that verify the template for each page
5
- def check_template(page_name)
6
- begin
7
- method = ("check " + page_name).split(" ").join('_').to_sym
8
- self.send(method)
9
- rescue NoMethodError
5
+ def check_template(page_name, options={})
6
+ method = ("check " + page_name).split(" ").join('_').to_sym
7
+ unless self.respond_to?(method)
10
8
  raise "Can't find method to check the template for \"#{page_name}\"\n" +
11
- "Now, go and add the method \"#{method}\" in #{__FILE__}"
9
+ "Now, go and add the method \"#{method}(options)\" in #{__FILE__}"
12
10
  end
11
+ self.send(method, options)
13
12
  end
14
13
 
15
14
  # servers/new
16
- def check_new_server
15
+ def check_new_server(options)
17
16
  within(form_selector(bigbluebutton_servers_path, 'post')) do
18
17
  check_server_form
19
18
  end
20
19
  end
21
20
 
22
21
  # server/:id/edit
23
- def check_edit_server
24
- within(form_selector(bigbluebutton_server_path(@server), 'post')) do
22
+ def check_edit_server(options)
23
+ server = options[:server] || BigbluebuttonServer.last
24
+
25
+ within(form_selector(bigbluebutton_server_path(server), 'post')) do
25
26
  check_server_form
26
27
  end
27
28
  end
@@ -46,29 +47,29 @@ module TemplateHelpers
46
47
  has_element("input", { :name => 'commit', :type => 'submit' })
47
48
  end
48
49
 
49
- # servers/new
50
- def check_new_room
51
- within(form_selector(bigbluebutton_server_rooms_path(@server), 'post')) do
52
- check_room_form
53
- end
54
- end
55
-
56
50
  # server/:id/show
57
- def check_show_server
58
- server = BigbluebuttonServer.last
51
+ def check_show_server(options)
52
+ server = options[:server] || BigbluebuttonServer.last
53
+
59
54
  page_has_content(server.name)
60
55
  page_has_content(server.url)
61
56
  page_has_content(server.salt)
62
57
  page_has_content(server.version)
63
58
  page_has_content(server.param)
64
- has_element("a", { :href => new_bigbluebutton_server_room_path(server) }) # new room link
59
+ has_element("a", { :href => edit_bigbluebutton_server_path(server) }) # edit
60
+ has_element("a", { :href => activity_bigbluebutton_server_path(server) }) # activity
61
+ has_element("a", { :href => rooms_bigbluebutton_server_path(server) }) # rooms
62
+ has_element("a", { :href => bigbluebutton_server_path(server), :"data-method" => 'delete' }) # destroy
65
63
  end
66
64
 
67
65
  # servers/
68
- def check_servers_index
66
+ def check_servers_index(options)
67
+ servers = options[:severs] || BigbluebuttonServer.all
68
+
69
69
  has_element("a", { :href => new_bigbluebutton_server_path }) # new server link
70
+ has_element("a", { :href => bigbluebutton_rooms_path }) # rooms list
70
71
  n = 1
71
- BigbluebuttonServer.all.each do |server|
72
+ servers.each do |server|
72
73
  within(make_selector("ul#bbbrails_servers_list>li:nth(#{n})")) do
73
74
  # server data
74
75
  has_content(server.name)
@@ -79,7 +80,7 @@ module TemplateHelpers
79
80
  has_content(server.url)
80
81
  # action links
81
82
  has_element("a", { :href => bigbluebutton_server_path(server) }) # show
82
- has_element("a", { :href => bigbluebutton_server_rooms_path(server) }) # index
83
+ has_element("a", { :href => rooms_bigbluebutton_server_path(server) }) # rooms
83
84
  has_element("a", { :href => activity_bigbluebutton_server_path(server) }) # activity
84
85
  has_element("a", { :href => edit_bigbluebutton_server_path(server) }) # edit
85
86
  has_element("a", { :href => bigbluebutton_server_path(server), :"data-method" => 'delete' }) # destroy
@@ -89,28 +90,47 @@ module TemplateHelpers
89
90
  end
90
91
 
91
92
  # servers/:id/activity
92
- def check_server_activity_monitor
93
+ def check_server_activity_monitor(options)
94
+ server = options[:server] || BigbluebuttonServer.last
95
+
93
96
  # checks only the 'skeleton', the content depends on the rooms currently running
97
+ # and is not checked here
94
98
  within(make_selector("div.bbbrails_countdown")) do
95
99
  has_element("span.bbbrails_countdown_value")
96
100
  has_element("a.bbbrails_refresh_now",
97
- { :href => activity_bigbluebutton_server_path(@server) })
101
+ { :href => activity_bigbluebutton_server_path(server) })
98
102
  end
99
103
  has_element("div#bbbrails_server_activity_meetings")
100
104
  end
101
105
 
106
+ # servers/:id/rooms
107
+ def check_server_rooms(options)
108
+ check_rooms_index(options)
109
+ end
110
+
102
111
 
103
112
 
104
113
 
114
+ # rooms/new
115
+ def check_new_room(options)
116
+ within(form_selector(bigbluebutton_rooms_path, 'post')) do
117
+ check_room_form
118
+ end
119
+ end
120
+
105
121
  # room/:id/edit
106
- def check_edit_room
107
- within(form_selector(bigbluebutton_server_room_path(@server, @room), 'post')) do
122
+ def check_edit_room(options)
123
+ room = options[:room] || BigbluebuttonRoom.last
124
+
125
+ within(form_selector(bigbluebutton_room_path(room), 'post')) do
108
126
  check_room_form
109
127
  end
110
128
  end
111
129
 
112
130
  # internal form in rooms/new and room/:id/edit
113
131
  def check_room_form
132
+ has_element("input#bigbluebutton_room_server_id",
133
+ { :name => 'bigbluebutton_room[server_id]', :type => 'text' })
114
134
  has_element("input#bigbluebutton_room_name",
115
135
  { :name => 'bigbluebutton_room[name]', :type => 'text' })
116
136
  has_element("input#bigbluebutton_room_meetingid",
@@ -154,8 +174,10 @@ module TemplateHelpers
154
174
  end
155
175
 
156
176
  # room/:id/show
157
- def check_show_room
158
- room = BigbluebuttonRoom.last
177
+ def check_show_room(options)
178
+ room = options[:room] || BigbluebuttonRoom.last
179
+
180
+ page_has_content(room.server_id)
159
181
  page_has_content(room.name)
160
182
  page_has_content(room.meetingid)
161
183
  page_has_content(room.randomize_meetingid)
@@ -169,12 +191,23 @@ module TemplateHelpers
169
191
  page_has_content(room.max_participants)
170
192
  page_has_content(room.external)
171
193
  page_has_content(room.param)
194
+ # action links
195
+ has_element("a", { :href => edit_bigbluebutton_room_path(room) }) # edit
196
+ has_element("a", { :href => bigbluebutton_room_path(room) }) # show
197
+ has_element("a", { :href => join_bigbluebutton_room_path(room) }) # join
198
+ has_element("a", { :href => invite_bigbluebutton_room_path(room) }) # invite
199
+ has_element("a", { :href => join_mobile_bigbluebutton_room_path(room) }) # join_mobile
200
+ has_element("a", { :href => end_bigbluebutton_room_path(room) }) # end
201
+ has_element("a", { :href => bigbluebutton_room_path(room), :"data-method" => 'delete' }) # destroy
172
202
  end
173
203
 
174
204
  # rooms/external
175
- def check_join_external_room
176
- within(form_selector(external_bigbluebutton_server_rooms_path(@server), 'post')) do
177
- has_element("input#meeting", { :name => 'meeting', :type => 'hidden', :value => @room.meetingid })
205
+ def check_join_external_room(options)
206
+ room = options[:room] || BigbluebuttonRoom.last
207
+
208
+ within(form_selector(external_bigbluebutton_rooms_path, 'post')) do
209
+ has_element("input#server_id", { :name => 'server_id', :type => 'hidden', :value => room.server_id })
210
+ has_element("input#meeting", { :name => 'meeting', :type => 'hidden', :value => room.meetingid })
178
211
  has_element("input#user_name", { :name => 'user[name]', :type => 'text' })
179
212
  has_element("input#user_password", { :name => 'user[password]', :type => 'password' })
180
213
  has_element("label", { :for => 'user_name' })
@@ -184,8 +217,10 @@ module TemplateHelpers
184
217
  end
185
218
 
186
219
  # rooms/:id/invite
187
- def check_invite_room
188
- within(form_selector(join_bigbluebutton_server_room_path(@server, @room), 'post')) do
220
+ def check_invite_room(options)
221
+ room = options[:room] || BigbluebuttonRoom.last
222
+
223
+ within(form_selector(join_bigbluebutton_room_path(room), 'post')) do
189
224
  has_element("input#user_name", { :name => 'user[name]', :type => 'text' })
190
225
  has_element("input#user_password", { :name => 'user[password]', :type => 'password' })
191
226
  has_element("label", { :for => 'user_name' })
@@ -195,12 +230,16 @@ module TemplateHelpers
195
230
  end
196
231
 
197
232
  # rooms/
198
- def check_rooms_index
199
- has_element("a", { :href => new_bigbluebutton_server_room_path(@server) }) # new room link
233
+ def check_rooms_index(options)
234
+ rooms = options[:rooms] || BigbluebuttonRoom.all
235
+
236
+ has_element("a", { :href => new_bigbluebutton_room_path }) # new room link
237
+ has_element("a", { :href => bigbluebutton_servers_path }) # servers list
200
238
  n = 1
201
- BigbluebuttonRoom.all.each do |room|
239
+ rooms.each do |room|
202
240
  within(make_selector("ul#bbbrails_rooms_list>li:nth(#{n})")) do
203
241
  # room data
242
+ has_content(room.server_id) unless room.server.nil?
204
243
  has_content(room.name)
205
244
  has_content(room.meetingid)
206
245
  has_content(room.attendee_password)
@@ -210,24 +249,29 @@ module TemplateHelpers
210
249
  has_content(room.voice_bridge)
211
250
  has_content(room.param)
212
251
  # action links
213
- has_element("a", { :href => bigbluebutton_server_room_path(@server, room) }) # show
214
- has_element("a", { :href => join_bigbluebutton_server_room_path(@server, room) }) # join
215
- has_element("a", { :href => invite_bigbluebutton_server_room_path(@server, room) }) # invite
216
- has_element("a", { :href => join_mobile_bigbluebutton_server_room_path(@server, room) }) # join_mobile
217
- has_element("a", { :href => edit_bigbluebutton_server_room_path(@server, room) }) # edit
218
- has_element("a", { :href => end_bigbluebutton_server_room_path(@server, room) }) # end
219
- has_element("a", { :href => bigbluebutton_server_room_path(@server, room), :"data-method" => 'delete' }) # destroy
252
+ unless room.server.nil?
253
+ has_element("a", { :href => bigbluebutton_server_path(room.server) }) # show server
254
+ end
255
+ has_element("a", { :href => bigbluebutton_room_path(room) }) # show
256
+ has_element("a", { :href => join_bigbluebutton_room_path(room) }) # join
257
+ has_element("a", { :href => invite_bigbluebutton_room_path(room) }) # invite
258
+ has_element("a", { :href => join_mobile_bigbluebutton_room_path(room) }) # join_mobile
259
+ has_element("a", { :href => edit_bigbluebutton_room_path(room) }) # edit
260
+ has_element("a", { :href => end_bigbluebutton_room_path(room) }) # end
261
+ has_element("a", { :href => bigbluebutton_room_path(room), :"data-method" => 'delete' }) # destroy
220
262
  end
221
263
  n += 1
222
264
  end
223
265
  end
224
266
 
225
- def check_join_room # nothing to check, it only redirects to the BBB client
267
+ def check_join_room(options) # nothing to check, it only redirects to the BBB client
226
268
  end
227
269
 
228
270
  # rooms/:id/join_mobile
229
- def check_mobile_join
230
- url = join_bigbluebutton_server_room_url(@server, @room, :mobile => '1')
271
+ def check_mobile_join(options)
272
+ room = options[:room] || BigbluebuttonRoom.last
273
+
274
+ url = join_bigbluebutton_room_url(room, :mobile => '1')
231
275
  url.gsub!(/http:\/\//i, "bigbluebutton://")
232
276
  has_element("a", { :href => url })
233
277