advertnet 1.0.0
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/LICENSE +674 -0
- data/README +257 -0
- data/Rakefile +10 -0
- data/app/controllers/application.rb +40 -0
- data/app/controllers/container_controller.rb +83 -0
- data/app/controllers/content_controller.rb +61 -0
- data/app/controllers/furnitures_controller.rb +87 -0
- data/app/controllers/networks_controller.rb +269 -0
- data/app/controllers/objects_in_world_controller.rb +27 -0
- data/app/controllers/panels_controller.rb +186 -0
- data/app/helpers/application_helper.rb +31 -0
- data/app/helpers/container_helper.rb +2 -0
- data/app/helpers/content_helper.rb +2 -0
- data/app/helpers/furnitures_helper.rb +2 -0
- data/app/helpers/network_helper.rb +2 -0
- data/app/helpers/networks_helper.rb +2 -0
- data/app/helpers/objects_in_world_helper.rb +2 -0
- data/app/helpers/panels_helper.rb +2 -0
- data/app/models/container.rb +51 -0
- data/app/models/furniture.rb +60 -0
- data/app/models/mailer.rb +22 -0
- data/app/models/network.rb +38 -0
- data/app/models/object_in_world.rb +60 -0
- data/app/models/object_off_world.rb +77 -0
- data/app/models/panel.rb +136 -0
- data/app/models/panel_revision.rb +108 -0
- data/app/views/container/list.rhtml +27 -0
- data/app/views/container/show.rhtml +8 -0
- data/app/views/content/_form.rhtml +12 -0
- data/app/views/content/edit.rhtml +8 -0
- data/app/views/content/list.rhtml +26 -0
- data/app/views/content/new.rhtml +8 -0
- data/app/views/furnitures/list.rhtml +51 -0
- data/app/views/furnitures/show.rhtml +7 -0
- data/app/views/layouts/default.rhtml +30 -0
- data/app/views/mailer/avtouch.rhtml +1 -0
- data/app/views/networks/_form.rhtml +11 -0
- data/app/views/networks/_parameters_form.rhtml +8 -0
- data/app/views/networks/edit.rhtml +9 -0
- data/app/views/networks/list.rhtml +25 -0
- data/app/views/networks/new.rhtml +8 -0
- data/app/views/networks/show.rhtml +72 -0
- data/app/views/networks/show_parameters_form.rjs +5 -0
- data/app/views/objects_in_world/list.rhtml +30 -0
- data/app/views/objects_in_world/show.rhtml +8 -0
- data/app/views/panels/list.rhtml +48 -0
- data/app/views/panels/show.rhtml +8 -0
- data/bin/advertnet-install +144 -0
- data/config/boot.rb +45 -0
- data/config/database.yml.default +43 -0
- data/config/environment.rb +67 -0
- data/config/environments/development.rb +21 -0
- data/config/environments/production.rb +21 -0
- data/config/environments/test.rb +19 -0
- data/config/routes.rb +23 -0
- data/db/migrate/001_create_networks.rb +14 -0
- data/db/migrate/002_create_furnitures.rb +17 -0
- data/db/migrate/003_create_containers.rb +16 -0
- data/db/migrate/004_create_objects_in_world.rb +16 -0
- data/db/migrate/005_create_objects_off_world.rb +16 -0
- data/db/migrate/006_create_panels.rb +17 -0
- data/db/migrate/007_join_objects_in_world_panels.rb +17 -0
- data/db/migrate/008_join_objects_off_world_panels.rb +17 -0
- data/db/migrate/009_add_sessions.rb +19 -0
- data/db/migrate/010_add_or_rename_fields.rb +25 -0
- data/db/migrate/011_move_texture_to_object_in_world.rb +25 -0
- data/db/migrate/012_add_permanent_furniture_id.rb +18 -0
- data/db/migrate/013_create_panel_revisions.rb +42 -0
- data/db/schema.rb +102 -0
- data/doc/README_FOR_APP +108 -0
- data/lib/advertnet.rb +13 -0
- data/lib/second_life_validators.rb +89 -0
- data/lib/tasks/documentation.rake +16 -0
- data/lib/tasks/extract_fixtures.rake +23 -0
- data/lib/tasks/load_exported_fixtures.rake +14 -0
- data/public/404.html +30 -0
- data/public/500.html +30 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +24 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/rails.png +0 -0
- data/public/javascripts/application.js +2 -0
- data/public/javascripts/controls.js +833 -0
- data/public/javascripts/dragdrop.js +942 -0
- data/public/javascripts/effects.js +1088 -0
- data/public/javascripts/prototype.js +2515 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/application.css +25 -0
- data/public/stylesheets/scaffold.css +74 -0
- data/script/about +3 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/destroy +3 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/inspector +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/test/fixtures/containers.yml +44 -0
- data/test/fixtures/furnitures.yml +47 -0
- data/test/fixtures/mailer/avtouch +1 -0
- data/test/fixtures/networks.yml +31 -0
- data/test/fixtures/objects_in_world.yml +71 -0
- data/test/fixtures/objects_in_world_panels.yml +43 -0
- data/test/fixtures/objects_off_world.yml +55 -0
- data/test/fixtures/objects_off_world_panels.yml +20 -0
- data/test/fixtures/panel_revisions.yml +28 -0
- data/test/fixtures/panels.yml +79 -0
- data/test/functional/container_controller_test.rb +167 -0
- data/test/functional/content_controller_test.rb +91 -0
- data/test/functional/furnitures_controller_test.rb +134 -0
- data/test/functional/networks_controller_test.rb +248 -0
- data/test/functional/objects_in_world_controller_test.rb +42 -0
- data/test/functional/panels_controller_test.rb +173 -0
- data/test/test_helper.rb +53 -0
- data/test/unit/container_test.rb +53 -0
- data/test/unit/furniture_test.rb +68 -0
- data/test/unit/mailer_test.rb +40 -0
- data/test/unit/network_test.rb +42 -0
- data/test/unit/object_in_world_test.rb +33 -0
- data/test/unit/object_off_world_test.rb +26 -0
- data/test/unit/panel_revision_test.rb +148 -0
- data/test/unit/panel_test.rb +63 -0
- data/vendor/plugins/annotate_models/ChangeLog +46 -0
- data/vendor/plugins/annotate_models/README +31 -0
- data/vendor/plugins/annotate_models/lib/annotate_models.rb +132 -0
- data/vendor/plugins/annotate_models/tasks/annotate_models_tasks.rake +7 -0
- data/vendor/plugins/foreign_key_migrations/CHANGELOG +99 -0
- data/vendor/plugins/foreign_key_migrations/MIT-LICENSE +20 -0
- data/vendor/plugins/foreign_key_migrations/README +87 -0
- data/vendor/plugins/foreign_key_migrations/about.yml +5 -0
- data/vendor/plugins/foreign_key_migrations/init.rb +3 -0
- data/vendor/plugins/foreign_key_migrations/install.rb +1 -0
- data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/base.rb +22 -0
- data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/abstract_adapter.rb +22 -0
- data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/table_definition.rb +28 -0
- data/vendor/plugins/redhillonrails_core/CHANGELOG +154 -0
- data/vendor/plugins/redhillonrails_core/MIT-LICENSE +20 -0
- data/vendor/plugins/redhillonrails_core/README +139 -0
- data/vendor/plugins/redhillonrails_core/init.rb +19 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb +54 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +31 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb +21 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb +26 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb +11 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb +82 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb +8 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +107 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb +23 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb +9 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb +27 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb +27 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb +47 -0
- metadata +290 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
+
require 'networks_controller'
|
|
3
|
+
|
|
4
|
+
# Re-raise errors caught by the controller.
|
|
5
|
+
class NetworksController; def rescue_action(e) raise e end; end
|
|
6
|
+
|
|
7
|
+
class NetworksControllerTest < Test::Unit::TestCase
|
|
8
|
+
fixtures :networks, :panels, :furnitures
|
|
9
|
+
fixtures :objects_in_world, :objects_off_world
|
|
10
|
+
fixtures :objects_in_world_panels, :objects_off_world_panels
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
@controller = NetworksController.new
|
|
14
|
+
@request = ActionController::TestRequest.new
|
|
15
|
+
@response = ActionController::TestResponse.new
|
|
16
|
+
|
|
17
|
+
@first_id = networks(:network_1).id
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_index
|
|
21
|
+
get :index
|
|
22
|
+
assert_response :success
|
|
23
|
+
assert_template 'list'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_list
|
|
27
|
+
get :list
|
|
28
|
+
|
|
29
|
+
assert_response :success
|
|
30
|
+
assert_template 'list'
|
|
31
|
+
|
|
32
|
+
assert_not_nil assigns(:networks)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_show
|
|
36
|
+
get :show, :id => @first_id
|
|
37
|
+
|
|
38
|
+
assert_response :success
|
|
39
|
+
assert_template 'show'
|
|
40
|
+
|
|
41
|
+
assert_not_nil assigns(:network)
|
|
42
|
+
assert assigns(:network).valid?
|
|
43
|
+
|
|
44
|
+
assert_not_nil assigns(:network_parameters)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_show_parameters_form
|
|
48
|
+
get :show_parameters_form, :id => @first_id
|
|
49
|
+
|
|
50
|
+
assert_response :success
|
|
51
|
+
assert_template 'show_parameters_form'
|
|
52
|
+
|
|
53
|
+
assert_not_nil assigns(:network)
|
|
54
|
+
assert assigns(:network).valid?
|
|
55
|
+
|
|
56
|
+
assert_not_nil assigns(:network_parameters)
|
|
57
|
+
assert_not_nil assigns(:textures)
|
|
58
|
+
assert_not_nil assigns(:landmarks)
|
|
59
|
+
assert_not_nil assigns(:notecards)
|
|
60
|
+
assert_not_nil assigns(:urls)
|
|
61
|
+
assert_not_nil assigns(:mediaurls)
|
|
62
|
+
|
|
63
|
+
network_parameters = assigns(:network_parameters)
|
|
64
|
+
assert_equal 1, network_parameters.texture_id
|
|
65
|
+
assert_equal 3, network_parameters.notecard_id
|
|
66
|
+
assert_equal 5, network_parameters.landmark_id
|
|
67
|
+
assert_equal 3, network_parameters.url_id
|
|
68
|
+
assert_equal 5, network_parameters.mediaurl_id
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_new
|
|
72
|
+
get :new
|
|
73
|
+
|
|
74
|
+
assert_response :success
|
|
75
|
+
assert_template 'new'
|
|
76
|
+
|
|
77
|
+
assert_not_nil assigns(:network)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def test_create
|
|
81
|
+
num_networks = Network.count
|
|
82
|
+
|
|
83
|
+
post :create, :network => { :name => "glop" }
|
|
84
|
+
|
|
85
|
+
assert_response :redirect
|
|
86
|
+
assert_redirected_to :action => 'show'
|
|
87
|
+
|
|
88
|
+
assert_equal num_networks + 1, Network.count
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_edit
|
|
92
|
+
get :edit, :id => @first_id
|
|
93
|
+
|
|
94
|
+
assert_response :success
|
|
95
|
+
assert_template 'edit'
|
|
96
|
+
|
|
97
|
+
assert_not_nil assigns(:network)
|
|
98
|
+
assert assigns(:network).valid?
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_update
|
|
102
|
+
post :update, :id => @first_id
|
|
103
|
+
assert_response :redirect
|
|
104
|
+
assert_redirected_to :action => 'show', :id => @first_id
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_destroy
|
|
108
|
+
assert_nothing_raised {
|
|
109
|
+
@network = Network.find(@first_id)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
post :destroy, :id => @first_id
|
|
113
|
+
assert_response :redirect
|
|
114
|
+
assert_redirected_to :action => 'list'
|
|
115
|
+
assert_equal "Network '#{@network.name}' deleted.", flash[:notice]
|
|
116
|
+
assert_raise(ActiveRecord::RecordNotFound) {
|
|
117
|
+
Network.find(@first_id)
|
|
118
|
+
}
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def test_set_parameters
|
|
122
|
+
post :set_parameters, :id => 1, :network_parameters => {
|
|
123
|
+
:texture_id => "2",
|
|
124
|
+
:notecard_id => "",
|
|
125
|
+
:landmark_id => "7",
|
|
126
|
+
:url_id => "4",
|
|
127
|
+
:mediaurl_id => ""
|
|
128
|
+
}
|
|
129
|
+
assert_response :redirect
|
|
130
|
+
assert_redirected_to :action => 'show'
|
|
131
|
+
assert_not_nil flash[:notice]
|
|
132
|
+
|
|
133
|
+
panel1 = panels(:panel1_furniture1)
|
|
134
|
+
assert_equal 2, panel1.objects_in_world.find_by_otype("texture").id
|
|
135
|
+
assert_nil panel1.objects_in_world.find_by_otype("notecard")
|
|
136
|
+
assert_equal 7, panel1.objects_in_world.find_by_otype("landmark").id
|
|
137
|
+
assert_equal 4, panel1.objects_off_world.find_by_otype("url").id
|
|
138
|
+
assert_nil panel1.objects_off_world.find_by_otype("mediaurl")
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def test_remove_panel
|
|
142
|
+
network = networks(:network_1)
|
|
143
|
+
panel_id = panels(:panel1_furniture2)
|
|
144
|
+
assert_equal 3, network.panels.count
|
|
145
|
+
assert_nothing_raised { network.panels.find(panel_id) }
|
|
146
|
+
|
|
147
|
+
post :remove_panel, :id => network.id, :panel_id => panel_id
|
|
148
|
+
assert_response :redirect
|
|
149
|
+
assert_redirected_to :action => 'show', :id => network.id
|
|
150
|
+
assert_equal "Panel 'B1 : CC - 4x3 Casino' removed from network.", flash[:notice]
|
|
151
|
+
assert_equal 2, network.panels.count
|
|
152
|
+
assert_raise(ActiveRecord::RecordNotFound) { network.panels.find(panel_id) }
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def test_remove_panel_invalid_panel_id
|
|
156
|
+
network = networks(:network_1)
|
|
157
|
+
panel_id = 42
|
|
158
|
+
assert_equal 3, network.panels.count
|
|
159
|
+
assert_raise(ActiveRecord::RecordNotFound) { network.panels.find(panel_id) }
|
|
160
|
+
|
|
161
|
+
post :remove_panel, :id => network.id, :panel_id => panel_id
|
|
162
|
+
assert_response :redirect
|
|
163
|
+
assert_redirected_to :action => 'list'
|
|
164
|
+
assert_equal "Remove panel: Invalid network id ('#{network.id}') or panel id ('42').", flash[:notice]
|
|
165
|
+
assert_equal 3, network.panels.count
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def test_remove_panel_invalid_network_id
|
|
169
|
+
network_id = 42
|
|
170
|
+
panel = panels(:panel1_furniture2)
|
|
171
|
+
assert_raise(ActiveRecord::RecordNotFound) { Network.find(network_id) }
|
|
172
|
+
|
|
173
|
+
post :remove_panel, :id => network_id, :panel_id => panel.id
|
|
174
|
+
assert_response :redirect
|
|
175
|
+
assert_redirected_to :action => 'list'
|
|
176
|
+
assert_equal "Remove panel: Invalid network id ('#{network_id}') or panel id ('#{panel.id}').", flash[:notice]
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def test_add_panel
|
|
180
|
+
network = networks(:network_1)
|
|
181
|
+
# Récupère un panneau existant du réseau
|
|
182
|
+
first_panel = network.panels.first
|
|
183
|
+
# Panneau à ajouter au réseau
|
|
184
|
+
new_panel = panels(:panel2_furniture3)
|
|
185
|
+
assert_equal 3, network.panels.count
|
|
186
|
+
assert_nil new_panel.network
|
|
187
|
+
assert_raise(ActiveRecord::RecordNotFound) { network.panels.find(new_panel.id) }
|
|
188
|
+
|
|
189
|
+
post :add_panel, :id => network.id, :panel_id => new_panel.id
|
|
190
|
+
assert_response :redirect
|
|
191
|
+
assert_redirected_to :action => 'show', :id => network.id
|
|
192
|
+
assert_equal "Panel 'B2 : CC - 4x3 Palace' added to network.", flash[:notice]
|
|
193
|
+
|
|
194
|
+
new_panel.reload
|
|
195
|
+
assert_equal 4, network.panels.count
|
|
196
|
+
assert_nothing_raised { network.panels.find(new_panel.id) }
|
|
197
|
+
assert_equal network, new_panel.network
|
|
198
|
+
|
|
199
|
+
# Le panneau ajouté a-t-il bien pris les caractéristiques du réseau ?
|
|
200
|
+
assert_equal first_panel.texture, new_panel.texture
|
|
201
|
+
assert_equal first_panel.landmark, new_panel.landmark
|
|
202
|
+
assert_equal first_panel.notecard, new_panel.notecard
|
|
203
|
+
assert_equal first_panel.url, new_panel.url
|
|
204
|
+
assert_equal first_panel.mediaurl, new_panel.mediaurl
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def test_add_panel_invalid_panel_id
|
|
208
|
+
network = networks(:network_1)
|
|
209
|
+
panel_id = 42
|
|
210
|
+
assert_equal 3, network.panels.count
|
|
211
|
+
assert_raise(ActiveRecord::RecordNotFound) { Panel.find(panel_id) }
|
|
212
|
+
|
|
213
|
+
post :add_panel, :id => network.id, :panel_id => panel_id
|
|
214
|
+
assert_response :redirect
|
|
215
|
+
assert_redirected_to :action => 'list'
|
|
216
|
+
assert_equal "Add panel: Invalid network id ('#{network.id}') or panel id ('#{panel_id}').", flash[:notice]
|
|
217
|
+
assert_equal 3, network.panels.count
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def test_add_panel_invalid_network_id
|
|
221
|
+
network_id = 42
|
|
222
|
+
panel = panels(:panel1_furniture2)
|
|
223
|
+
assert_raise(ActiveRecord::RecordNotFound) { Network.find(network_id) }
|
|
224
|
+
|
|
225
|
+
post :add_panel, :id => network_id, :panel_id => panel.id
|
|
226
|
+
assert_response :redirect
|
|
227
|
+
assert_redirected_to :action => 'list'
|
|
228
|
+
assert_equal "Add panel: Invalid network id ('#{network_id}') or panel id ('#{panel.id}').", flash[:notice]
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def test_add_panel_already_used_elsewhere
|
|
232
|
+
network1 = networks(:network_1)
|
|
233
|
+
panel = panels(:panel2_furniture1)
|
|
234
|
+
assert_equal 3, network1.panels.count
|
|
235
|
+
assert_not_nil panel.network
|
|
236
|
+
network2 = panel.network
|
|
237
|
+
assert_raise(ActiveRecord::RecordNotFound) { network1.panels.find(panel.id) }
|
|
238
|
+
|
|
239
|
+
post :add_panel, :id => network1.id, :panel_id => panel.id
|
|
240
|
+
assert_response :redirect
|
|
241
|
+
assert_redirected_to :action => 'show', :id => network1.id
|
|
242
|
+
assert_equal "Panel 'B2 : Furniture 1' already belongs to a network ('#{network2.name}').", flash[:notice]
|
|
243
|
+
assert_equal 3, network1.panels.count
|
|
244
|
+
assert_raise(ActiveRecord::RecordNotFound) { network1.panels.find(panel.id) }
|
|
245
|
+
panel.reload
|
|
246
|
+
assert_equal network2, panel.network
|
|
247
|
+
end
|
|
248
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
+
require 'objects_in_world_controller'
|
|
3
|
+
|
|
4
|
+
# Re-raise errors caught by the controller.
|
|
5
|
+
class ObjectsInWorldController; def rescue_action(e) raise e end; end
|
|
6
|
+
|
|
7
|
+
class ObjectsInWorldControllerTest < Test::Unit::TestCase
|
|
8
|
+
fixtures :objects_in_world
|
|
9
|
+
|
|
10
|
+
def setup
|
|
11
|
+
@controller = ObjectsInWorldController.new
|
|
12
|
+
@request = ActionController::TestRequest.new
|
|
13
|
+
@response = ActionController::TestResponse.new
|
|
14
|
+
|
|
15
|
+
@first_id = objects_in_world(:logo_pu).id
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_index
|
|
19
|
+
get :index
|
|
20
|
+
assert_response :success
|
|
21
|
+
assert_template 'list'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_list
|
|
25
|
+
get :list
|
|
26
|
+
|
|
27
|
+
assert_response :success
|
|
28
|
+
assert_template 'list'
|
|
29
|
+
|
|
30
|
+
assert_not_nil assigns(:objects_in_world)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_show
|
|
34
|
+
get :show, :id => @first_id
|
|
35
|
+
|
|
36
|
+
assert_response :success
|
|
37
|
+
assert_template 'show'
|
|
38
|
+
|
|
39
|
+
assert_not_nil assigns(:object_in_world)
|
|
40
|
+
assert assigns(:object_in_world).valid?
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
+
require 'panels_controller'
|
|
3
|
+
|
|
4
|
+
# Re-raise errors caught by the controller.
|
|
5
|
+
class PanelsController; def rescue_action(e) raise e end; end
|
|
6
|
+
|
|
7
|
+
class PanelsControllerTest < Test::Unit::TestCase
|
|
8
|
+
fixtures :panels, :furnitures, :containers
|
|
9
|
+
fixtures :objects_in_world, :objects_off_world
|
|
10
|
+
fixtures :objects_in_world_panels, :objects_off_world_panels
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
@controller = PanelsController.new
|
|
14
|
+
@request = ActionController::TestRequest.new
|
|
15
|
+
@response = ActionController::TestResponse.new
|
|
16
|
+
|
|
17
|
+
@first_id = panels(:panel1_furniture1).id
|
|
18
|
+
|
|
19
|
+
# Configuration mail
|
|
20
|
+
@emails = ActionMailer::Base.deliveries
|
|
21
|
+
@emails.clear
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Met en variables d'environnement les paramètres SL de l'objet appelant
|
|
25
|
+
# quand on teste une URL appelée par SL.
|
|
26
|
+
def setup_sl_env
|
|
27
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_KEY"] = "d906e900-708f-fd93-8245-79000494711e"
|
|
28
|
+
@request.env["HTTP_X_SECONDLIFE_REGION"] = "Myeon (263936, 235008)"
|
|
29
|
+
@request.env["HTTP_X_SECONDLIFE_LOCAL_POSITION"] = "(33.413044, 2.188796, 136.624924)"
|
|
30
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_NAME"] = "Panel Test"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_index
|
|
34
|
+
get :index
|
|
35
|
+
assert_response :success
|
|
36
|
+
assert_template 'list'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_list
|
|
40
|
+
get :list
|
|
41
|
+
|
|
42
|
+
assert_response :success
|
|
43
|
+
assert_template 'list'
|
|
44
|
+
|
|
45
|
+
assert_not_nil assigns(:panels)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_show
|
|
49
|
+
get :show, :id => @first_id
|
|
50
|
+
|
|
51
|
+
assert_response :success
|
|
52
|
+
assert_template 'show'
|
|
53
|
+
|
|
54
|
+
assert_not_nil assigns(:panel)
|
|
55
|
+
assert assigns(:panel).valid?
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_register
|
|
59
|
+
furniture = furnitures(:furniture_1)
|
|
60
|
+
panel_count = Panel.count
|
|
61
|
+
setup_sl_env
|
|
62
|
+
post :register, :furniture_key => furniture.furniture_key
|
|
63
|
+
|
|
64
|
+
assert_response :success
|
|
65
|
+
assert_template nil
|
|
66
|
+
assert_equal "delay=%30%", @response.body
|
|
67
|
+
assert_equal panel_count+1, Panel.count
|
|
68
|
+
assert_nothing_raised {
|
|
69
|
+
@panel = Panel.find_by_panel_key("d906e900-708f-fd93-8245-79000494711e")
|
|
70
|
+
}
|
|
71
|
+
assert_equal "Panel Test", @panel.name
|
|
72
|
+
assert_equal furniture.furniture_key, @panel.furniture.furniture_key
|
|
73
|
+
assert_equal ObjectInWorld.default_texture, @panel.objects_in_world.find_by_otype("texture")
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_register_no_furniture
|
|
77
|
+
panel_count = Panel.count
|
|
78
|
+
setup_sl_env
|
|
79
|
+
post :register
|
|
80
|
+
|
|
81
|
+
assert_response 409
|
|
82
|
+
assert_template nil
|
|
83
|
+
assert_equal "The furniture id '' does not exist.", @response.body
|
|
84
|
+
assert_equal panel_count, Panel.count
|
|
85
|
+
assert_nil Panel.find_by_panel_key("d906e900-708f-fd93-8245-79000494711e")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_register_bad_furniture
|
|
89
|
+
panel_count = Panel.count
|
|
90
|
+
setup_sl_env
|
|
91
|
+
post :register, :furniture_key => "88888888-4444-4444-4444-111111111111"
|
|
92
|
+
|
|
93
|
+
assert_response 409
|
|
94
|
+
assert_template nil
|
|
95
|
+
assert_equal "The furniture id '88888888-4444-4444-4444-111111111111' does not exist.", @response.body
|
|
96
|
+
assert_equal panel_count, Panel.count
|
|
97
|
+
assert_nil Panel.find_by_panel_key("d906e900-708f-fd93-8245-79000494711e")
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_update_with_urls
|
|
101
|
+
panel = panels(:panel1_furniture1)
|
|
102
|
+
# On ajoute une URL et une MediaURL au panel que l'on teste
|
|
103
|
+
oow_lacoste = objects_off_world(:lacoste)
|
|
104
|
+
oow_glop_furniture = objects_off_world(:glop_media)
|
|
105
|
+
panel.objects_off_world.replace([oow_lacoste, oow_glop_furniture])
|
|
106
|
+
|
|
107
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_KEY"] = panel.panel_key
|
|
108
|
+
@request.env["HTTP_X_SECONDLIFE_REGION"] = "Ici"
|
|
109
|
+
@request.env["HTTP_X_SECONDLIFE_LOCAL_POSITION"] = "1,2,3"
|
|
110
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_NAME"] = panel.name
|
|
111
|
+
post :update
|
|
112
|
+
|
|
113
|
+
assert_response :success
|
|
114
|
+
assert_template nil
|
|
115
|
+
response_lines = @response.body.split(/\n/)
|
|
116
|
+
assert_equal 4, response_lines.size
|
|
117
|
+
assert_equal 'delay=' + panel.furniture.delay.to_s, response_lines[0]
|
|
118
|
+
assert_equal 'texture=caaf0b85-b869-d344-8573-d260a50f635d', response_lines[1]
|
|
119
|
+
assert_equal "url=#{oow_lacoste.content}", response_lines[2]
|
|
120
|
+
assert_equal "mediaurl=#{oow_glop_furniture.content}", response_lines[3]
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def test_update_without_urls
|
|
124
|
+
panel = panels(:panel1_furniture1)
|
|
125
|
+
# On s'assure qu'on n'a aucun object off world associé
|
|
126
|
+
panel.objects_off_world.clear
|
|
127
|
+
|
|
128
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_NAME"] = panel.name
|
|
129
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_KEY"] = panel.panel_key
|
|
130
|
+
@request.env["HTTP_X_SECONDLIFE_REGION"] = "Ici"
|
|
131
|
+
@request.env["HTTP_X_SECONDLIFE_LOCAL_POSITION"] = "1,2,3"
|
|
132
|
+
post :update
|
|
133
|
+
|
|
134
|
+
assert_response :success
|
|
135
|
+
assert_template nil
|
|
136
|
+
response_lines = @response.body.split(/\n/)
|
|
137
|
+
assert_equal 4, response_lines.size
|
|
138
|
+
assert_equal 'delay=' + panel.furniture.delay.to_s, response_lines[0]
|
|
139
|
+
assert_equal 'texture=caaf0b85-b869-d344-8573-d260a50f635d', response_lines[1]
|
|
140
|
+
assert_equal 'url=nourl', response_lines[2]
|
|
141
|
+
assert_equal 'mediaurl=nomedia', response_lines[3]
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_avtouch
|
|
145
|
+
panel = panels(:panel1_furniture1)
|
|
146
|
+
# On ajoute une notecard et une landmark au panel
|
|
147
|
+
landmark = objects_in_world(:cc_pan)
|
|
148
|
+
notecard = objects_in_world(:getting_money)
|
|
149
|
+
panel.objects_in_world.replace([notecard, landmark])
|
|
150
|
+
# Avatar fictif
|
|
151
|
+
avatar_key = "147d465d-b625-7f9a-ce06-18fcbd1d9d44"
|
|
152
|
+
|
|
153
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_NAME"] = panel.name
|
|
154
|
+
@request.env["HTTP_X_SECONDLIFE_OBJECT_KEY"] = panel.panel_key
|
|
155
|
+
@request.env["HTTP_X_SECONDLIFE_REGION"] = "Ici"
|
|
156
|
+
@request.env["HTTP_X_SECONDLIFE_LOCAL_POSITION"] = "1,2,3"
|
|
157
|
+
post :avtouch, :avatar_key => avatar_key
|
|
158
|
+
|
|
159
|
+
assert_response :success
|
|
160
|
+
assert_template nil
|
|
161
|
+
assert_equal 2, @emails.size
|
|
162
|
+
# Mail pour le landmark
|
|
163
|
+
email = @emails.first
|
|
164
|
+
assert_equal "give inventory", email.subject
|
|
165
|
+
assert_equal landmark.container.container_key + "@lsl.secondlife.com", email.to[0]
|
|
166
|
+
assert_equal "'#{avatar_key}',face,#{landmark.name}\n", email.body
|
|
167
|
+
# Mail pour le notecard
|
|
168
|
+
email = @emails.last
|
|
169
|
+
assert_equal "give inventory", email.subject
|
|
170
|
+
assert_equal notecard.container.container_key + "@lsl.secondlife.com", email.to[0]
|
|
171
|
+
assert_equal "'#{avatar_key}',face,#{notecard.name}\n", email.body
|
|
172
|
+
end
|
|
173
|
+
end
|