forgot_password_helper_test.rb
4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
require_relative "../test_helper"
class ForgotPasswordHelperTest < ActionView::TestCase
  include ForgotPasswordHelper
  def setup
    @environment = Environment.default
    @plugins = Noosfero::Plugin::Manager.new(@environment, self)
  end
  attr_accessor :environment
  should 'allow extra fields provided by plugins' do
    class Plugin1 < Noosfero::Plugin
      def change_password_fields
        {:field => 'f1', :name => 'F1', :model => 'person'}
      end
    end
    class Plugin2 < Noosfero::Plugin
      def change_password_fields
        [{:field => 'f2', :name => 'F2', :model => 'person'},
         {:field => 'f3', :name => 'F3', :model => 'person'}]
      end
    end
    Noosfero::Plugin.stubs(:all).returns(['ForgotPasswordHelperTest::Plugin1', 'ForgotPasswordHelperTest::Plugin2'])
    environment.enable_plugin(Plugin1)
    environment.enable_plugin(Plugin2)
    assert_includes fields, 'f1'
    assert_includes fields, 'f2'
    assert_includes fields, 'f3'
  end
  should 'allow extra person fields provided by plugins' do
    class Plugin1 < Noosfero::Plugin
      def change_password_fields
        {:field => 'f1', :name => 'F1', :model => 'person'}
      end
    end
    class Plugin2 < Noosfero::Plugin
      def change_password_fields
        [{:field => 'f2', :name => 'F2', :model => 'user'},
         {:field => 'f3', :name => 'F3', :model => 'person'}]
      end
    end
    Noosfero::Plugin.stubs(:all).returns(['ForgotPasswordHelperTest::Plugin1', 'ForgotPasswordHelperTest::Plugin2'])
    environment.enable_plugin(Plugin1)
    environment.enable_plugin(Plugin2)
    assert_includes person_fields, 'f1'
    assert_not_includes person_fields, 'f2'
    assert_includes person_fields, 'f3'
  end
  should 'allow extra user fields provided by plugins' do
    class Plugin1 < Noosfero::Plugin
      def change_password_fields
        {:field => 'f1', :name => 'F1', :model => 'user'}
      end
    end
    class Plugin2 < Noosfero::Plugin
      def change_password_fields
        [{:field => 'f2', :name => 'F2', :model => 'person'},
         {:field => 'f3', :name => 'F3', :model => 'user'}]
      end
    end
    Noosfero::Plugin.stubs(:all).returns(['ForgotPasswordHelperTest::Plugin1', 'ForgotPasswordHelperTest::Plugin2'])
    environment.enable_plugin(Plugin1)
    environment.enable_plugin(Plugin2)
    assert_includes user_fields, 'f1'
    assert_not_includes user_fields, 'f2'
    assert_includes user_fields, 'f3'
  end
  should 'add plugins fields labels to final label' do
    class Plugin1 < Noosfero::Plugin
      def change_password_fields
        {:field => 'f1', :name => 'F1', :model => 'user'}
      end
    end
    class Plugin2 < Noosfero::Plugin
      def change_password_fields
        [{:field => 'f2', :name => 'F2', :model => 'person'},
         {:field => 'f3', :name => 'F3', :model => 'user'}]
      end
    end
    Noosfero::Plugin.stubs(:all).returns(['ForgotPasswordHelperTest::Plugin1', 'ForgotPasswordHelperTest::Plugin2'])
    environment.enable_plugin(Plugin1)
    environment.enable_plugin(Plugin2)
    assert_match /F1/, fields_label
    assert_match /F2/, fields_label
    assert_match /F3/, fields_label
  end
  should 'fetch requestors based on fields available' do
    p1 = create_user('person1').person
    p2 = create_user('person2').person
    requestors = fetch_requestors('person1')
    assert_includes requestors, p1
    assert_not_includes requestors, p2
    p3 = create_user('person3').person
    p3.address = 'some address'
    p3.save!
    p4 = create_user('person4').person
    p4.address = 'some address'
    p4.save!
    p5 = create_user('person5').person
    p5.address = 'another address'
    p5.save!
    self.stubs(:person_fields).returns(%w[address])
    requestors = fetch_requestors('some address')
    assert_includes requestors, p3
    assert_includes requestors, p4
  end
  should 'not fetch people from other environments' do
    p1 = create_user('person', :environment => fast_create(Environment)).person
    p2 = create_user('person').person
    requestors = fetch_requestors('person')
    assert_not_includes requestors, p1
    assert_includes requestors, p2
  end
end