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 | 222 | end |
| 223 | 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 | 233 | def to_s |
| 226 | 234 | self.name || '?' |
| 227 | 235 | end | ... | ... |
app/models/profile.rb
| ... | ... | @@ -257,12 +257,7 @@ class Profile < ActiveRecord::Base |
| 257 | 257 | if self.domains.empty? |
| 258 | 258 | generate_url(:controller => 'content_viewer', :action => 'view_page', :page => []) |
| 259 | 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 | 261 | end |
| 267 | 262 | end |
| 268 | 263 | |
| ... | ... | @@ -279,26 +274,7 @@ class Profile < ActiveRecord::Base |
| 279 | 274 | end |
| 280 | 275 | |
| 281 | 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 | 278 | end |
| 303 | 279 | |
| 304 | 280 | # FIXME this can be SLOW | ... | ... |
lib/noosfero.rb
| ... | ... | @@ -40,6 +40,27 @@ module Noosfero |
| 40 | 40 | @terminology = term |
| 41 | 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 | 64 | end |
| 44 | 65 | |
| 45 | 66 | require 'noosfero/constants' | ... | ... |
test/unit/environment_test.rb
| ... | ... | @@ -156,6 +156,21 @@ class EnvironmentTest < Test::Unit::TestCase |
| 156 | 156 | assert_equal 'localhost', env.default_hostname |
| 157 | 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 | 174 | should 'provide an approval_method setting' do |
| 160 | 175 | env = Environment.new |
| 161 | 176 | ... | ... |
test/unit/noosfero_test.rb
| ... | ... | @@ -40,4 +40,10 @@ class NoosferoTest < Test::Unit::TestCase |
| 40 | 40 | assert_equal 'lalalalala', Noosfero.term('lalalalala') |
| 41 | 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 | 49 | end | ... | ... |
test/unit/profile_test.rb
| ... | ... | @@ -281,16 +281,17 @@ class ProfileTest < Test::Unit::TestCase |
| 281 | 281 | should 'help developers by adding a suitable port to url options' do |
| 282 | 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 | 286 | ok('Profile#url_options must include port option when running in development mode') { profile.url_options[:port] == 9999 } |
| 287 | 287 | end |
| 288 | 288 | |
| 289 | 289 | should 'help developers by adding a suitable port to url options for own domain urls' do |
| 290 | 290 | profile = Profile.create!(:name => "Test Profile", :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id) |
| 291 | 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 | 295 | ok('Profile#url must include port options when running in developers mode') { profile.url[:port] == 9999 } |
| 295 | 296 | end |
| 296 | 297 | ... | ... |