Commit 3d9b60463d251625908be57d129a55774653d426
1 parent
284128b1
Exists in
master
and in
29 other branches
ActionItem519: adding Environment#top_url
while I'm there, extracting the port detection for development mode into Noosfero module git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2322 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
6 changed files
with
57 additions
and
30 deletions
Show diff stats
app/models/environment.rb
| @@ -222,6 +222,14 @@ class Environment < ActiveRecord::Base | @@ -222,6 +222,14 @@ class Environment < ActiveRecord::Base | ||
| 222 | end | 222 | end |
| 223 | end | 223 | end |
| 224 | 224 | ||
| 225 | + def top_url | ||
| 226 | + result = "http://#{default_hostname}" | ||
| 227 | + if Noosfero.url_options.has_key?(:port) | ||
| 228 | + result << ':' << Noosfero.url_options[:port].to_s | ||
| 229 | + end | ||
| 230 | + result | ||
| 231 | + end | ||
| 232 | + | ||
| 225 | def to_s | 233 | def to_s |
| 226 | self.name || '?' | 234 | self.name || '?' |
| 227 | end | 235 | end |
app/models/profile.rb
| @@ -257,12 +257,7 @@ class Profile < ActiveRecord::Base | @@ -257,12 +257,7 @@ class Profile < ActiveRecord::Base | ||
| 257 | if self.domains.empty? | 257 | if self.domains.empty? |
| 258 | generate_url(:controller => 'content_viewer', :action => 'view_page', :page => []) | 258 | generate_url(:controller => 'content_viewer', :action => 'view_page', :page => []) |
| 259 | else | 259 | else |
| 260 | - options = { :host => self.domains.first.name, :controller => 'content_viewer', :action => 'view_page', :page => []} | ||
| 261 | - # help developers by generating a suitable URL for development environment | ||
| 262 | - if (ENV['RAILS_ENV'] == 'development') | ||
| 263 | - options.merge!(development_url_options) | ||
| 264 | - end | ||
| 265 | - options | 260 | + Noosfero.url_options.merge({ :host => self.domains.first.name, :controller => 'content_viewer', :action => 'view_page', :page => []}) |
| 266 | end | 261 | end |
| 267 | end | 262 | end |
| 268 | 263 | ||
| @@ -279,26 +274,7 @@ class Profile < ActiveRecord::Base | @@ -279,26 +274,7 @@ class Profile < ActiveRecord::Base | ||
| 279 | end | 274 | end |
| 280 | 275 | ||
| 281 | def url_options | 276 | def url_options |
| 282 | - options = { :host => self.environment.default_hostname, :profile => self.identifier} | ||
| 283 | - | ||
| 284 | - # help developers by generating a suitable URL for development environment | ||
| 285 | - if (ENV['RAILS_ENV'] == 'development') | ||
| 286 | - options.merge!(development_url_options) | ||
| 287 | - end | ||
| 288 | - | ||
| 289 | - options | ||
| 290 | - end | ||
| 291 | - | ||
| 292 | - # FIXME couldn't think of a way to test this. | ||
| 293 | - # | ||
| 294 | - # Works (tested by hand) on Rails 2.0.2, with mongrel. Should work with | ||
| 295 | - # webrick too. | ||
| 296 | - def development_url_options # :nodoc: | ||
| 297 | - if Object.const_defined?('OPTIONS') | ||
| 298 | - { :port => OPTIONS[:port ]} | ||
| 299 | - else | ||
| 300 | - {} | ||
| 301 | - end | 277 | + Noosfero.url_options.merge({ :host => self.environment.default_hostname, :profile => self.identifier}) |
| 302 | end | 278 | end |
| 303 | 279 | ||
| 304 | # FIXME this can be SLOW | 280 | # FIXME this can be SLOW |
lib/noosfero.rb
| @@ -40,6 +40,27 @@ module Noosfero | @@ -40,6 +40,27 @@ module Noosfero | ||
| 40 | @terminology = term | 40 | @terminology = term |
| 41 | end | 41 | end |
| 42 | 42 | ||
| 43 | + def self.url_options | ||
| 44 | + if ENV['RAILS_ENV'] == 'development' | ||
| 45 | + development_url_options | ||
| 46 | + else | ||
| 47 | + {} | ||
| 48 | + end | ||
| 49 | + end | ||
| 50 | + | ||
| 51 | + # FIXME couldn't think of a way to test this. | ||
| 52 | + # | ||
| 53 | + # Works (tested by hand) on Rails 2.0.2, with mongrel. Should work with | ||
| 54 | + # webrick too. | ||
| 55 | + def self.development_url_options | ||
| 56 | + if Object.const_defined?('OPTIONS') | ||
| 57 | + { :port => OPTIONS[:port ]} | ||
| 58 | + else | ||
| 59 | + {} | ||
| 60 | + end | ||
| 61 | + end | ||
| 62 | + | ||
| 63 | + | ||
| 43 | end | 64 | end |
| 44 | 65 | ||
| 45 | require 'noosfero/constants' | 66 | require 'noosfero/constants' |
test/unit/environment_test.rb
| @@ -156,6 +156,21 @@ class EnvironmentTest < Test::Unit::TestCase | @@ -156,6 +156,21 @@ class EnvironmentTest < Test::Unit::TestCase | ||
| 156 | assert_equal 'localhost', env.default_hostname | 156 | assert_equal 'localhost', env.default_hostname |
| 157 | end | 157 | end |
| 158 | 158 | ||
| 159 | + should 'provide default top URL' do | ||
| 160 | + env = Environment.new | ||
| 161 | + env.expects(:default_hostname).returns('www.lalala.net') | ||
| 162 | + assert_equal 'http://www.lalala.net', env.top_url | ||
| 163 | + end | ||
| 164 | + | ||
| 165 | + should 'include port in default top URL for development environment' do | ||
| 166 | + env = Environment.new | ||
| 167 | + env.expects(:default_hostname).returns('www.lalala.net') | ||
| 168 | + | ||
| 169 | + Noosfero.expects(:url_options).returns({ :port => 9999 }).at_least_once | ||
| 170 | + | ||
| 171 | + assert_equal 'http://www.lalala.net:9999', env.top_url | ||
| 172 | + end | ||
| 173 | + | ||
| 159 | should 'provide an approval_method setting' do | 174 | should 'provide an approval_method setting' do |
| 160 | env = Environment.new | 175 | env = Environment.new |
| 161 | 176 |
test/unit/noosfero_test.rb
| @@ -40,4 +40,10 @@ class NoosferoTest < Test::Unit::TestCase | @@ -40,4 +40,10 @@ class NoosferoTest < Test::Unit::TestCase | ||
| 40 | assert_equal 'lalalalala', Noosfero.term('lalalalala') | 40 | assert_equal 'lalalalala', Noosfero.term('lalalalala') |
| 41 | end | 41 | end |
| 42 | 42 | ||
| 43 | + should 'provide url options to identify development environment' do | ||
| 44 | + ENV.expects(:[]).with('RAILS_ENV').returns('development') | ||
| 45 | + Noosfero.expects(:development_url_options).returns({ :port => 9999 }) | ||
| 46 | + assert_equal({:port => 9999}, Noosfero.url_options) | ||
| 47 | + end | ||
| 48 | + | ||
| 43 | end | 49 | end |
test/unit/profile_test.rb
| @@ -281,16 +281,17 @@ class ProfileTest < Test::Unit::TestCase | @@ -281,16 +281,17 @@ class ProfileTest < Test::Unit::TestCase | ||
| 281 | should 'help developers by adding a suitable port to url options' do | 281 | should 'help developers by adding a suitable port to url options' do |
| 282 | profile = Profile.create!(:name => "Test Profile", :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id) | 282 | profile = Profile.create!(:name => "Test Profile", :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id) |
| 283 | 283 | ||
| 284 | - ENV.expects(:[]).with('RAILS_ENV').returns('development') | ||
| 285 | - profile.expects(:development_url_options).returns({ :port => 9999 }) | 284 | + Noosfero.expects(:url_options).returns({ :port => 9999 }) |
| 285 | + | ||
| 286 | ok('Profile#url_options must include port option when running in development mode') { profile.url_options[:port] == 9999 } | 286 | ok('Profile#url_options must include port option when running in development mode') { profile.url_options[:port] == 9999 } |
| 287 | end | 287 | end |
| 288 | 288 | ||
| 289 | should 'help developers by adding a suitable port to url options for own domain urls' do | 289 | should 'help developers by adding a suitable port to url options for own domain urls' do |
| 290 | profile = Profile.create!(:name => "Test Profile", :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id) | 290 | profile = Profile.create!(:name => "Test Profile", :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id) |
| 291 | profile.domains << Domain.new(:name => 'micojones.net') | 291 | profile.domains << Domain.new(:name => 'micojones.net') |
| 292 | - ENV.expects(:[]).with('RAILS_ENV').returns('development') | ||
| 293 | - profile.expects(:development_url_options).returns({ :port => 9999 }) | 292 | + |
| 293 | + Noosfero.expects(:url_options).returns({ :port => 9999 }) | ||
| 294 | + | ||
| 294 | ok('Profile#url must include port options when running in developers mode') { profile.url[:port] == 9999 } | 295 | ok('Profile#url must include port options when running in developers mode') { profile.url[:port] == 9999 } |
| 295 | end | 296 | end |
| 296 | 297 |