Commit 8a361fcd9a84addd2a7d9a81b0c91d9024550d12

Authored by Caio SBA
Committed by Daniela Feitosa
1 parent b1b3e471

Adding tests for MultiTenancy lib

(ActionItem1845)
Showing 1 changed file with 90 additions and 0 deletions   Show diff stats
test/unit/multi_tenancy.rb 0 → 100644
@@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +require 'noosfero/multi_tenancy'
  3 +
  4 +class MultiTenancyTest < Test::Unit::TestCase
  5 +
  6 + def test_get_mapping_if_is_set
  7 + mapping = { :env => {} }
  8 + Noosfero::MultiTenancy.instance_variable_set(:@mapping, mapping)
  9 + assert_equal mapping, Noosfero::MultiTenancy.mapping
  10 + end
  11 +
  12 + def test_set_mapping_if_is_not_set
  13 + mapping = { :env => {} }
  14 + Noosfero::MultiTenancy.expects(:load_map).returns(mapping)
  15 + Noosfero::MultiTenancy.instance_variable_set(:@mapping, nil)
  16 + assert_equal mapping, Noosfero::MultiTenancy.mapping
  17 + assert_equal mapping, Noosfero::MultiTenancy.instance_variable_get(:@mapping)
  18 + end
  19 +
  20 + def test_multitenancy_is_on_if_has_mapping
  21 + Noosfero::MultiTenancy.expects(:mapping).returns({ :env => {} })
  22 + assert Noosfero::MultiTenancy.on?
  23 + end
  24 +
  25 + def test_multitenancy_is_on_if_it_is_a_hosted_environment
  26 + Noosfero::MultiTenancy.expects(:mapping).returns({})
  27 + Noosfero::MultiTenancy.expects(:is_hosted_environment?).returns(true)
  28 + assert Noosfero::MultiTenancy.on?
  29 + end
  30 +
  31 + def test_multitenancy_is_off_if_it_is_not_a_hosted_environment_and_there_is_no_mapping
  32 + Noosfero::MultiTenancy.expects(:mapping).returns({})
  33 + Noosfero::MultiTenancy.expects(:is_hosted_environment?).returns(false)
  34 + assert !Noosfero::MultiTenancy.on?
  35 + end
  36 +
  37 + def test_set_schema_by_host
  38 + Noosfero::MultiTenancy.expects(:mapping).returns({ 'host' => 'schema' })
  39 + adapter = ActiveRecord::Base.connection.class
  40 + adapter.any_instance.expects(:schema_search_path=).with('schema').returns(true)
  41 + assert Noosfero::MultiTenancy.db_by_host = 'host'
  42 + end
  43 +
  44 + def test_load_map
  45 + YAML.expects(:load_file).returns(db_config)
  46 + assert_equal({ 'test.one.com' => 'one', 'one.com' => 'one', 'two.com' => 'two' }, Noosfero::MultiTenancy.send(:load_map))
  47 + end
  48 +
  49 + def test_if_is_hosted_environment
  50 + YAML.expects(:load_file).returns(db_config)
  51 + Object.send(:remove_const, :RAILS_ENV)
  52 + Object.const_set(:RAILS_ENV, 'one_test')
  53 + assert Noosfero::MultiTenancy.send(:is_hosted_environment?)
  54 + Object.send(:remove_const, :RAILS_ENV)
  55 + Object.const_set(:RAILS_ENV, 'test')
  56 + end
  57 +
  58 + def test_if_is_not_hosted_environment
  59 + YAML.expects(:load_file).returns(db_config)
  60 + assert !Noosfero::MultiTenancy.send(:is_hosted_environment?)
  61 + end
  62 +
  63 + private
  64 +
  65 + def db_config
  66 + {
  67 + 'one_test' => {
  68 + 'schema_search_path' => 'one',
  69 + 'domains' => ['test.one.com', 'one.com'],
  70 + 'adapter' => 'PostgreSQL'
  71 + },
  72 + 'two_test' => {
  73 + 'schema_search_path' => 'two',
  74 + 'domains' => ['two.com'],
  75 + 'adapter' => 'PostgreSQL'
  76 + },
  77 + 'test' => {
  78 + 'schema_search_path' => 'public',
  79 + 'domains' => ['test.com'],
  80 + 'adapter' => 'PostgreSQL'
  81 + },
  82 + 'production' => {
  83 + 'schema_search_path' => 'production',
  84 + 'domains' => ['production.com'],
  85 + 'adapter' => 'PostgreSQL'
  86 + }
  87 + }
  88 + end
  89 +
  90 +end