bigbluebutton_rails 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +9 -1
- data/Gemfile.lock +3 -3
- data/README.rdoc +56 -21
- data/Rakefile +1 -0
- data/app/controllers/bigbluebutton/rooms_controller.rb +92 -35
- data/app/models/bigbluebutton_room.rb +136 -27
- data/app/models/bigbluebutton_server.rb +22 -6
- data/app/views/bigbluebutton/rooms/_form.html.erb +31 -6
- data/app/views/bigbluebutton/rooms/edit.html.erb +1 -1
- data/app/views/bigbluebutton/rooms/index.html.erb +20 -8
- data/app/views/bigbluebutton/rooms/invite.html.erb +56 -0
- data/app/views/bigbluebutton/rooms/{join_wait.html.erb → join.html.erb} +16 -12
- data/app/views/bigbluebutton/rooms/new.html.erb +1 -1
- data/app/views/bigbluebutton/rooms/show.html.erb +33 -9
- data/app/views/bigbluebutton/servers/edit.html.erb +1 -1
- data/app/views/bigbluebutton/servers/index.html.erb +6 -4
- data/app/views/bigbluebutton/servers/new.html.erb +1 -1
- data/app/views/bigbluebutton/servers/show.html.erb +5 -5
- data/bigbluebutton_rails.gemspec +1 -1
- data/config/locales/en.yml +31 -0
- data/lib/bigbluebutton_rails/controller_methods.rb +7 -1
- data/lib/bigbluebutton_rails/rails/routes.rb +10 -1
- data/lib/bigbluebutton_rails/version.rb +1 -1
- data/lib/bigbluebutton_rails.rb +0 -1
- data/lib/classes/bigbluebutton_attendee.rb +2 -0
- data/lib/generators/bigbluebutton_rails/install_generator.rb +2 -1
- data/lib/generators/bigbluebutton_rails/public_generator.rb +0 -1
- data/lib/generators/bigbluebutton_rails/templates/migration.rb +8 -2
- data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +339 -88
- data/spec/factories/bigbluebutton_room.rb +5 -3
- data/spec/factories/user.rb +3 -0
- data/spec/generators/public_generator_spec.rb +0 -1
- data/spec/generators/views_generator_spec.rb +1 -1
- data/spec/models/bigbluebutton_room_spec.rb +276 -177
- data/spec/models/bigbluebutton_server_spec.rb +117 -96
- data/spec/routing/bigbluebutton/rooms_routing_spec.rb +24 -0
- data/spec/support/matchers/shoulda/be_boolean.rb +38 -0
- data/spec/support/mocked_server.rb +14 -0
- metadata +26 -26
- data/config/routes.rb +0 -2
- data/lib/classes/bigbluebutton_meeting.rb +0 -18
- data/lib/generators/bigbluebutton_rails/templates/public/javascripts/heartbeat.js +0 -54
- data/spec/classes/bigbluebutton_meeting_spec.rb +0 -62
@@ -5,122 +5,143 @@ describe BigbluebuttonServer do
|
|
5
5
|
BigbluebuttonServer.new.should be_a_kind_of(ActiveRecord::Base)
|
6
6
|
end
|
7
7
|
|
8
|
-
|
8
|
+
# to ensure that the migration is correct
|
9
|
+
context "db" do
|
10
|
+
it { should have_db_column(:name).of_type(:string) }
|
11
|
+
it { should have_db_column(:url).of_type(:string) }
|
12
|
+
it { should have_db_column(:salt).of_type(:string) }
|
13
|
+
it { should have_db_column(:version).of_type(:string) }
|
14
|
+
end
|
9
15
|
|
10
|
-
|
11
|
-
it { should validate_presence_of(:url) }
|
12
|
-
it { should validate_presence_of(:salt) }
|
13
|
-
it { should validate_presence_of(:version) }
|
16
|
+
context do
|
14
17
|
|
15
|
-
|
16
|
-
it { should allow_mass_assignment_of(:url) }
|
17
|
-
it { should allow_mass_assignment_of(:salt) }
|
18
|
+
it { should have_many(:rooms) }
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
should
|
22
|
-
|
20
|
+
it { should validate_presence_of(:name) }
|
21
|
+
it { should validate_presence_of(:url) }
|
22
|
+
it { should validate_presence_of(:salt) }
|
23
|
+
it { should validate_presence_of(:version) }
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
it { should allow_mass_assignment_of(:name) }
|
26
|
+
it { should allow_mass_assignment_of(:url) }
|
27
|
+
it { should allow_mass_assignment_of(:salt) }
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
it {
|
30
|
+
Factory.create(:bigbluebutton_server)
|
31
|
+
should validate_uniqueness_of(:url)
|
32
|
+
}
|
33
|
+
|
34
|
+
it "has associated rooms" do
|
35
|
+
server = Factory.create(:bigbluebutton_server)
|
36
|
+
server.rooms.should be_empty
|
37
|
+
|
38
|
+
Factory.create(:bigbluebutton_room, :server => server)
|
39
|
+
server = BigbluebuttonServer.find(server.id)
|
40
|
+
server.rooms.should_not be_empty
|
41
|
+
end
|
32
42
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
expect {
|
43
|
+
it "destroys associated rooms" do
|
44
|
+
server = Factory.create(:bigbluebutton_server)
|
45
|
+
Factory.create(:bigbluebutton_room, :server => server)
|
46
|
+
Factory.create(:bigbluebutton_room, :server => server)
|
38
47
|
expect {
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
48
|
+
expect {
|
49
|
+
server.destroy
|
50
|
+
}.to change{ BigbluebuttonServer.count }.by(-1)
|
51
|
+
}.to change{ BigbluebuttonRoom.count }.by(-2)
|
52
|
+
end
|
43
53
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
54
|
+
it { should ensure_length_of(:name).is_at_least(1).is_at_most(500) }
|
55
|
+
it { should ensure_length_of(:url).is_at_most(500) }
|
56
|
+
it { should ensure_length_of(:salt).is_at_least(1).is_at_most(500) }
|
57
|
+
|
58
|
+
it { should allow_value('http://demo.bigbluebutton.org/bigbluebutton/api').for(:url) }
|
59
|
+
it { should_not allow_value('').for(:url) }
|
60
|
+
it { should_not allow_value('http://demo.bigbluebutton.org').for(:url) }
|
61
|
+
it { should_not allow_value('demo.bigbluebutton.org/bigbluebutton/api').for(:url) }
|
62
|
+
|
63
|
+
it { should allow_value('0.64').for(:version) }
|
64
|
+
it { should allow_value('0.7').for(:version) }
|
65
|
+
it { should_not allow_value('').for(:version) }
|
66
|
+
it { should_not allow_value('0.8').for(:version) }
|
67
|
+
it { should_not allow_value('0.6').for(:version) }
|
68
|
+
|
69
|
+
context "has an api object" do
|
70
|
+
let(:server) { server = Factory.build(:bigbluebutton_server) }
|
71
|
+
it { should respond_to(:api) }
|
72
|
+
it { server.api.should_not be_nil }
|
73
|
+
it {
|
74
|
+
server.save
|
75
|
+
server.api.should_not be_nil
|
76
|
+
}
|
77
|
+
context "with the correct attributes" do
|
78
|
+
let(:api) { api = BigBlueButton::BigBlueButtonApi.new(server.url, server.salt,
|
79
|
+
server.version, false) }
|
80
|
+
it { server.api.should == api }
|
81
|
+
|
82
|
+
# updating any of these attributes should update the api
|
83
|
+
{ :url => 'http://anotherurl.com/bigbluebutton/api',
|
84
|
+
:salt => '12345-abcde-67890-fghijk', :version => '0.64' }.each do |k,v|
|
85
|
+
it {
|
86
|
+
server.send("#{k}=", v)
|
87
|
+
server.api.send(k).should == v
|
88
|
+
}
|
89
|
+
end
|
79
90
|
end
|
80
91
|
end
|
81
|
-
end
|
82
92
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
93
|
+
context "fetching info from bbb" do
|
94
|
+
let(:server) { Factory.create(:bigbluebutton_server) }
|
95
|
+
let(:room1) { Factory.create(:bigbluebutton_room, :server => server, :meetingid => "room1") }
|
96
|
+
let(:room2) { Factory.create(:bigbluebutton_room, :server => server, :meetingid => "room2") }
|
97
|
+
before {
|
98
|
+
@api_mock = mock(BigBlueButton::BigBlueButtonApi)
|
99
|
+
server.stub(:api).and_return(@api_mock)
|
100
|
+
}
|
91
101
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
let(:hash) {
|
100
|
-
{ :returncode => "SUCCESS",
|
101
|
-
:meetings => meetings
|
102
|
+
# the hashes should be exactly as returned by bigbluebutton-api-ruby to be sure we are testing it right
|
103
|
+
let(:meetings) {
|
104
|
+
[
|
105
|
+
{ :meetingID => room1.meetingid, :attendeePW=>"ap", :moderatorPW=>"mp", :hasBeenForciblyEnded => false, :running => true},
|
106
|
+
{ :meetingID => room2.meetingid, :attendeePW=>"pass", :moderatorPW=>"pass", :hasBeenForciblyEnded => true, :running => false},
|
107
|
+
{ :meetingID => "im not in the db", :attendeePW=>"pass", :moderatorPW=>"pass", :hasBeenForciblyEnded => true, :running => true}
|
108
|
+
]
|
102
109
|
}
|
103
|
-
|
110
|
+
let(:hash) {
|
111
|
+
{ :returncode => true,
|
112
|
+
:meetings => meetings
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
it { should respond_to(:fetch_meetings) }
|
117
|
+
it { should respond_to(:meetings) }
|
104
118
|
|
105
|
-
|
106
|
-
|
119
|
+
it "fetches meetings" do
|
120
|
+
@api_mock.should_receive(:get_meetings).and_return(hash)
|
121
|
+
server.fetch_meetings
|
107
122
|
|
108
|
-
|
109
|
-
@api_mock.should_receive(:get_meetings).and_return(hash)
|
110
|
-
server.fetch_meetings
|
123
|
+
server.meetings.count.should be(3)
|
111
124
|
|
112
|
-
|
125
|
+
server.meetings[0].should == room1
|
126
|
+
server.meetings[0].attendee_password.should == "ap"
|
127
|
+
server.meetings[0].moderator_password.should == "mp"
|
128
|
+
server.meetings[0].running.should == true
|
113
129
|
|
114
|
-
|
115
|
-
|
116
|
-
|
130
|
+
server.meetings[1].should == room2
|
131
|
+
server.meetings[1].attendee_password.should == "pass"
|
132
|
+
server.meetings[1].moderator_password.should == "pass"
|
133
|
+
server.meetings[1].running.should == false
|
134
|
+
|
135
|
+
server.meetings[2].meetingid.should == "im not in the db"
|
136
|
+
server.meetings[2].server.should == server
|
137
|
+
server.meetings[2].new_record?.should be_true
|
138
|
+
server.meetings[2].attendee_password.should == "pass"
|
139
|
+
server.meetings[2].moderator_password.should == "pass"
|
140
|
+
server.meetings[2].running.should == true
|
141
|
+
end
|
117
142
|
|
118
|
-
server.meetings[1].running.should == false
|
119
|
-
server.meetings[1].has_been_forcibly_ended.should == true
|
120
|
-
server.meetings[1].room.should == room2
|
121
143
|
end
|
122
144
|
|
123
145
|
end
|
124
146
|
|
125
|
-
|
126
147
|
end
|
@@ -44,6 +44,14 @@ describe Bigbluebutton::RoomsController do
|
|
44
44
|
{:get => "/#{prefix}/servers/1/rooms/1/end"}.
|
45
45
|
should route_to(:controller => "bigbluebutton/rooms", :action => "end", :server_id => "1", :id => "1")
|
46
46
|
}
|
47
|
+
it {
|
48
|
+
{:get => "/#{prefix}/servers/1/rooms/1/invite"}.
|
49
|
+
should route_to(:controller => "bigbluebutton/rooms", :action => "invite", :server_id => "1", :id => "1")
|
50
|
+
}
|
51
|
+
it {
|
52
|
+
{:post => "/#{prefix}/servers/1/rooms/1/join"}.
|
53
|
+
should route_to(:controller => "bigbluebutton/rooms", :action => "auth", :server_id => "1", :id => "1")
|
54
|
+
}
|
47
55
|
|
48
56
|
end
|
49
57
|
|
@@ -64,6 +72,14 @@ describe Bigbluebutton::RoomsController do
|
|
64
72
|
should route(:get, "/users/1/room/1/end").
|
65
73
|
to(:action => :end, :user_id => "1", :id => "1")
|
66
74
|
}
|
75
|
+
it {
|
76
|
+
should route(:get, "/users/1/room/1/invite").
|
77
|
+
to(:action => :invite, :user_id => "1", :id => "1")
|
78
|
+
}
|
79
|
+
it {
|
80
|
+
should route(:post, "/users/1/room/1/join").
|
81
|
+
to(:action => :auth, :user_id => "1", :id => "1")
|
82
|
+
}
|
67
83
|
|
68
84
|
# room matchers inside users/spaces
|
69
85
|
# FIXME shoulda-matcher is not working here, why?
|
@@ -83,6 +99,14 @@ describe Bigbluebutton::RoomsController do
|
|
83
99
|
{ :get => "/users/1/spaces/2/room/3/end" }.
|
84
100
|
should route_to(:controller => "bigbluebutton/rooms", :action => "end", :user_id => "1", :space_id => "2", :id => "3")
|
85
101
|
}
|
102
|
+
it {
|
103
|
+
{ :get => "/users/1/spaces/2/room/3/invite" }.
|
104
|
+
should route_to(:controller => "bigbluebutton/rooms", :action => "invite", :user_id => "1", :space_id => "2", :id => "3")
|
105
|
+
}
|
106
|
+
it {
|
107
|
+
{ :post => "/users/1/spaces/2/room/3/join" }.
|
108
|
+
should route_to(:controller => "bigbluebutton/rooms", :action => "auth", :user_id => "1", :space_id => "2", :id => "3")
|
109
|
+
}
|
86
110
|
end
|
87
111
|
|
88
112
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Shoulda
|
2
|
+
module Matchers
|
3
|
+
module ActiveRecord # :nodoc
|
4
|
+
|
5
|
+
# Usage example: be_boolean(:private)
|
6
|
+
def be_boolean(attribute)
|
7
|
+
BeBooleanMatcher.new(attribute)
|
8
|
+
end
|
9
|
+
|
10
|
+
class BeBooleanMatcher < ValidationMatcher # :nodoc:
|
11
|
+
def initialize(attribute)
|
12
|
+
@attribute = attribute
|
13
|
+
end
|
14
|
+
|
15
|
+
def matches?(subject)
|
16
|
+
@subject = subject
|
17
|
+
disallows_value_of(nil) &&
|
18
|
+
disallows_value_of("") &&
|
19
|
+
allows_value_of(true) &&
|
20
|
+
allows_value_of(false)
|
21
|
+
end
|
22
|
+
|
23
|
+
def description
|
24
|
+
description = "#{@attribute} should be a boolean"
|
25
|
+
end
|
26
|
+
|
27
|
+
def failure_message
|
28
|
+
"Expected #{@attribute} to be a boolean"
|
29
|
+
end
|
30
|
+
|
31
|
+
def negative_failure_message
|
32
|
+
"Did not expect #{@attribute} to be a boolean"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
def mock_server_and_api
|
2
|
+
@api_mock = mock(BigBlueButton::BigBlueButtonApi)
|
3
|
+
@server_mock = mock_model(BigbluebuttonServer)
|
4
|
+
@server_mock.stub(:api).and_return(@api_mock)
|
5
|
+
BigbluebuttonServer.stub(:find).and_return(@server_mock)
|
6
|
+
end
|
7
|
+
|
8
|
+
def mocked_server
|
9
|
+
@server_mock
|
10
|
+
end
|
11
|
+
|
12
|
+
def mocked_api
|
13
|
+
@api_mock
|
14
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bigbluebutton_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-04-
|
12
|
+
date: 2011-04-28 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &73818420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,21 +21,21 @@ dependencies:
|
|
21
21
|
version: 3.0.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *73818420
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bigbluebutton-api-ruby
|
27
|
-
requirement: &
|
27
|
+
requirement: &73814520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.0.
|
32
|
+
version: 0.0.10
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *73814520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec-rails
|
38
|
-
requirement: &
|
38
|
+
requirement: &73814050 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.5.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *73814050
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: factory_girl
|
49
|
-
requirement: &
|
49
|
+
requirement: &73813560 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.3.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *73813560
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sqlite3-ruby
|
60
|
-
requirement: &
|
60
|
+
requirement: &73813050 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.3.3
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *73813050
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: generator_spec
|
71
|
-
requirement: &
|
71
|
+
requirement: &73812640 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.8.2
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *73812640
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: shoulda-matchers
|
82
|
-
requirement: &
|
82
|
+
requirement: &73812110 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.0.0.beta
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *73812110
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: forgery
|
93
|
-
requirement: &
|
93
|
+
requirement: &73811720 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: 0.3.7
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *73811720
|
102
102
|
description: BigBlueButton integration for Ruby on Rails
|
103
103
|
email: mconf@googlegroups.com
|
104
104
|
executables: []
|
@@ -119,7 +119,8 @@ files:
|
|
119
119
|
- app/views/bigbluebutton/rooms/_form.html.erb
|
120
120
|
- app/views/bigbluebutton/rooms/edit.html.erb
|
121
121
|
- app/views/bigbluebutton/rooms/index.html.erb
|
122
|
-
- app/views/bigbluebutton/rooms/
|
122
|
+
- app/views/bigbluebutton/rooms/invite.html.erb
|
123
|
+
- app/views/bigbluebutton/rooms/join.html.erb
|
123
124
|
- app/views/bigbluebutton/rooms/new.html.erb
|
124
125
|
- app/views/bigbluebutton/rooms/show.html.erb
|
125
126
|
- app/views/bigbluebutton/servers/_form.html.erb
|
@@ -129,28 +130,25 @@ files:
|
|
129
130
|
- app/views/bigbluebutton/servers/show.html.erb
|
130
131
|
- bigbluebutton_rails.gemspec
|
131
132
|
- config/locales/en.yml
|
132
|
-
- config/routes.rb
|
133
133
|
- lib/bigbluebutton_rails.rb
|
134
134
|
- lib/bigbluebutton_rails/controller_methods.rb
|
135
135
|
- lib/bigbluebutton_rails/rails.rb
|
136
136
|
- lib/bigbluebutton_rails/rails/routes.rb
|
137
137
|
- lib/bigbluebutton_rails/version.rb
|
138
138
|
- lib/classes/bigbluebutton_attendee.rb
|
139
|
-
- lib/classes/bigbluebutton_meeting.rb
|
140
139
|
- lib/generators/bigbluebutton_rails/install_generator.rb
|
141
140
|
- lib/generators/bigbluebutton_rails/public_generator.rb
|
142
141
|
- lib/generators/bigbluebutton_rails/templates/migration.rb
|
143
142
|
- lib/generators/bigbluebutton_rails/templates/public/images/loading.gif
|
144
|
-
- lib/generators/bigbluebutton_rails/templates/public/javascripts/heartbeat.js
|
145
143
|
- lib/generators/bigbluebutton_rails/templates/public/javascripts/jquery.min.js
|
146
144
|
- lib/generators/bigbluebutton_rails/views_generator.rb
|
147
145
|
- spec/bigbluebutton_rails_spec.rb
|
148
146
|
- spec/classes/bigbluebutton_attendee_spec.rb
|
149
|
-
- spec/classes/bigbluebutton_meeting_spec.rb
|
150
147
|
- spec/controllers/bigbluebutton/rooms_controller_spec.rb
|
151
148
|
- spec/controllers/bigbluebutton/servers_controller_spec.rb
|
152
149
|
- spec/factories/bigbluebutton_room.rb
|
153
150
|
- spec/factories/bigbluebutton_server.rb
|
151
|
+
- spec/factories/user.rb
|
154
152
|
- spec/generators/install_generator_spec.rb
|
155
153
|
- spec/generators/public_generator_spec.rb
|
156
154
|
- spec/generators/views_generator_spec.rb
|
@@ -205,6 +203,8 @@ files:
|
|
205
203
|
- spec/routing/bigbluebutton/servers_routing_spec.rb
|
206
204
|
- spec/spec_helper.rb
|
207
205
|
- spec/support/matchers/have_same_attributes_as.rb
|
206
|
+
- spec/support/matchers/shoulda/be_boolean.rb
|
207
|
+
- spec/support/mocked_server.rb
|
208
208
|
homepage: http://github.com/mconf/bigbluebutton_rails
|
209
209
|
licenses: []
|
210
210
|
post_install_message:
|
@@ -219,7 +219,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
219
|
version: '0'
|
220
220
|
segments:
|
221
221
|
- 0
|
222
|
-
hash:
|
222
|
+
hash: 1022773263
|
223
223
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
224
224
|
none: false
|
225
225
|
requirements:
|
@@ -228,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
228
|
version: '0'
|
229
229
|
segments:
|
230
230
|
- 0
|
231
|
-
hash:
|
231
|
+
hash: 1022773263
|
232
232
|
requirements: []
|
233
233
|
rubyforge_project:
|
234
234
|
rubygems_version: 1.7.2
|
data/config/routes.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
class BigbluebuttonMeeting
|
2
|
-
|
3
|
-
attr_accessor :running, :has_been_forcibly_ended, :room
|
4
|
-
|
5
|
-
def from_hash(hash)
|
6
|
-
self.running = hash[:running].downcase == "true"
|
7
|
-
self.has_been_forcibly_ended = hash[:hasBeenForciblyEnded].downcase == "true"
|
8
|
-
end
|
9
|
-
|
10
|
-
def ==(other)
|
11
|
-
r = true
|
12
|
-
[:running, :has_been_forcibly_ended, :room].each do |param|
|
13
|
-
r = r && self.send(param) == other.send(param)
|
14
|
-
end
|
15
|
-
r
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* jHeartbeat 0.3.0
|
3
|
-
* (C)Alex Richards - http://www.ajtrichards.co.uk/
|
4
|
-
*/
|
5
|
-
|
6
|
-
$.jheartbeat = {
|
7
|
-
|
8
|
-
options: {
|
9
|
-
url: "heartbeat_default.asp",
|
10
|
-
delay: 10000,
|
11
|
-
div_id: "test_div"
|
12
|
-
},
|
13
|
-
|
14
|
-
beatfunction: function(){
|
15
|
-
|
16
|
-
},
|
17
|
-
|
18
|
-
timeoutobj: {
|
19
|
-
id: -1
|
20
|
-
},
|
21
|
-
|
22
|
-
set: function(options, onbeatfunction) {
|
23
|
-
if (this.timeoutobj.id > -1) {
|
24
|
-
clearTimeout(this.timeoutobj);
|
25
|
-
}
|
26
|
-
if (options) {
|
27
|
-
$.extend(this.options, options);
|
28
|
-
}
|
29
|
-
if (onbeatfunction) {
|
30
|
-
this.beatfunction = onbeatfunction;
|
31
|
-
}
|
32
|
-
|
33
|
-
// Add the HeartBeatDIV to the page
|
34
|
-
$("body").append("<div id=\"" + this.options.div_id + "\" style=\"display: none;\"></div>");
|
35
|
-
this.timeoutobj.id = setTimeout("$.jheartbeat.beat();", this.options.delay);
|
36
|
-
},
|
37
|
-
|
38
|
-
beat: function() {
|
39
|
-
$.ajax({
|
40
|
-
url: this.options.url,
|
41
|
-
dataType: "html",
|
42
|
-
type: "GET",
|
43
|
-
error: function(e) {
|
44
|
-
$('#'+ $.jheartbeat.options.div_id).append("Error Requesting Data");
|
45
|
-
},
|
46
|
-
success: function(data){
|
47
|
-
$('#'+ $.jheartbeat.options.div_id).html(data);
|
48
|
-
}
|
49
|
-
});
|
50
|
-
this.timeoutobj.id = setTimeout("$.jheartbeat.beat();", this.options.delay);
|
51
|
-
this.beatfunction();
|
52
|
-
}
|
53
|
-
};
|
54
|
-
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe BigbluebuttonMeeting do
|
4
|
-
|
5
|
-
it "should be reconized" do
|
6
|
-
lambda { BigbluebuttonMeeting.new }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
[:running, :has_been_forcibly_ended, :room].each do |attr|
|
10
|
-
it { should respond_to(attr) }
|
11
|
-
it { should respond_to(:"#{attr}=") }
|
12
|
-
end
|
13
|
-
|
14
|
-
context "equality" do
|
15
|
-
let(:meeting1) {
|
16
|
-
m = BigbluebuttonMeeting.new
|
17
|
-
m.running = true
|
18
|
-
m.has_been_forcibly_ended = false
|
19
|
-
m.room = nil
|
20
|
-
m
|
21
|
-
}
|
22
|
-
let(:meeting2) {
|
23
|
-
m = BigbluebuttonMeeting.new
|
24
|
-
m.running = false
|
25
|
-
m.has_been_forcibly_ended = true
|
26
|
-
m.room = nil
|
27
|
-
m
|
28
|
-
}
|
29
|
-
let(:meeting3) {
|
30
|
-
m = BigbluebuttonMeeting.new
|
31
|
-
m.running = meeting1.running
|
32
|
-
m.has_been_forcibly_ended = meeting1.has_been_forcibly_ended
|
33
|
-
m.room = meeting1.room
|
34
|
-
m
|
35
|
-
}
|
36
|
-
|
37
|
-
it { meeting1.should == meeting3 }
|
38
|
-
it { meeting1.should_not == meeting2 }
|
39
|
-
it { meeting2.should_not == meeting3 }
|
40
|
-
end
|
41
|
-
|
42
|
-
context "gets params from hash" do
|
43
|
-
let(:hash) { {:running=>"false", :hasBeenForciblyEnded=>"true"} }
|
44
|
-
let(:meeting) { BigbluebuttonMeeting.new }
|
45
|
-
|
46
|
-
it "standard case" do
|
47
|
-
meeting.from_hash(hash)
|
48
|
-
meeting.running.should == false
|
49
|
-
meeting.has_been_forcibly_ended.should == true
|
50
|
-
end
|
51
|
-
|
52
|
-
it "case insensitive" do
|
53
|
-
hash[:running] = "TRue"
|
54
|
-
hash[:hasBeenForciblyEnded] = "FalSE"
|
55
|
-
meeting.from_hash(hash)
|
56
|
-
meeting.running.should == true
|
57
|
-
meeting.has_been_forcibly_ended.should == false
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|