profile_editor_controller_test.rb
3.57 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 File.dirname(__FILE__) + '/../../../../test/test_helper'
require File.dirname(__FILE__) + '/../helpers/institution_test_helper'
require(
File.dirname(__FILE__) +
'/../../../../app/controllers/my_profile/profile_editor_controller'
)
class ProfileEditorController; def rescue_action(e) raise e end; end
class ProfileEditorControllerTest < ActionController::TestCase
def setup
@controller = ProfileEditorController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@profile = create_user('default_user').person
Environment.default.affiliate(
@profile,
[Environment::Roles.admin(Environment.default.id)] +
Profile::Roles.all_roles(Environment.default.id)
)
@environment = Environment.default
@environment.enabled_plugins = ['SoftwareCommunitiesPlugin']
admin = create_user("adminuser").person
admin.stubs(:has_permission?).returns("true")
login_as('adminuser')
@environment.add_admin(admin)
@environment.save
@govPower = GovernmentalPower.create(:name=>"Some Gov Power")
@govSphere = GovernmentalSphere.create(:name=>"Some Gov Sphere")
@juridical_nature = JuridicalNature.create(:name => "Autarquia")
@institution_list = []
@institution_list << InstitutionTestHelper.create_public_institution(
"Ministerio Publico da Uniao",
"MPU",
"BR",
"DF",
"Gama",
@juridical_nature,
@govPower,
@govSphere,
"12.345.678/9012-45"
)
@institution_list << InstitutionTestHelper.create_public_institution(
"Tribunal Regional da Uniao",
"TRU",
"BR",
"DF",
"Brasilia",
@juridical_nature,
@govPower,
@govSphere,
"12.345.678/9012-90"
)
end
should "add new institution for user into edit profile" do
user = create_basic_user
params_user = Hash.new
params_user[:institution_ids] = []
@institution_list.each do |institution|
params_user[:institution_ids] << institution.id
end
post :edit, :profile => User.last.person.identifier, :user => params_user
assert_equal @institution_list.count, User.last.institutions.count
end
should "remove institutions for user into edit profile" do
user = create_basic_user
@institution_list.each do |institution|
user.institutions << institution
end
user.save!
params_user = Hash.new
params_user[:institution_ids] = []
assert_equal @institution_list.count, User.last.institutions.count
post :edit, :profile => User.last.person.identifier, :user => params_user
assert_equal 0, User.last.institutions.count
end
should "redirect to edit_software_community on edit community of software" do
software = create_software_info("Test Software")
post :edit, :profile => software.community.identifier
assert_redirected_to :controller => 'profile_editor', :action => 'edit_software_community'
end
protected
def create_basic_user
user = fast_create(User)
user.person = fast_create(Person)
user.person.user = user
user.save!
user.person.save!
user
end
def create_community name
community = fast_create(Community)
community.name = name
community.save
community
end
def create_software_info name, finality = "", acronym = ""
community = create_community(name)
software_info = SoftwareInfo.new
software_info.community = community
software_info.finality = finality
software_info.acronym = acronym
software_info.public_software = true
software_info.save
software_info
end
end