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 @@ | @@ -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 |