Commit 8a361fcd9a84addd2a7d9a81b0c91d9024550d12
Committed by
Daniela Feitosa
1 parent
b1b3e471
Exists in
staging
and in
42 other branches
Adding tests for MultiTenancy lib
(ActionItem1845)
Showing
1 changed file
with
90 additions
and
0 deletions
Show diff stats
... | ... | @@ -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 | ... | ... |