Commit d2acf743aa7990ae87ec4b107f9f8a8c276380be

Authored by Gabriela Navarro
1 parent 04ac4427

Fix and add tests on institution

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Gabriela Navarro <navarro1703@gmail.com>
lib/public_institution.rb
1 1 class PublicInstitution < Institution
2 2 validates :governmental_power, :governmental_sphere, :juridical_nature, :presence=>true
3   - validates_uniqueness_of :acronym, :allow_blank => true, :allow_nil => true
4   - validates_uniqueness_of :cnpj, :unit_code, :allow_nil => true, :allow_blank => true
  3 + validates :acronym, :allow_blank => true, :allow_nil => true, :uniqueness=>true
  4 + validates :cnpj, :uniqueness=>true
5 5 validates_format_of :cnpj, :with => /^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$/, :allow_nil => true, :allow_blank => true
  6 +
6 7  
7 8 end
... ...
test/functional/mpog_software_plugin_controller_test.rb
... ... @@ -20,8 +20,8 @@ class MpogSoftwarePluginControllerTest &lt; ActionController::TestCase
20 20 @response = ActionController::TestResponse.new
21 21  
22 22 @institution_list = []
23   - @institution_list << create_public_institution("Ministerio Publico da Uniao", "MPU", "BR", "DF", "Gama", @juridical_nature, @govPower, @govSphere)
24   - @institution_list << create_public_institution("Tribunal Regional da Uniao", "TRU", "BR", "DF", "Brasilia", @juridical_nature, @govPower, @govSphere)
  23 + @institution_list << create_public_institution("Ministerio Publico da Uniao", "MPU", "BR", "DF", "Gama", @juridical_nature, @govPower, @govSphere, "12.345.678/9012-45")
  24 + @institution_list << create_public_institution("Tribunal Regional da Uniao", "TRU", "BR", "DF", "Brasilia", @juridical_nature, @govPower, @govSphere, "12.345.678/9012-90")
25 25 end
26 26  
27 27 should "Search for institution with acronym" do
... ... @@ -54,48 +54,15 @@ class MpogSoftwarePluginControllerTest &lt; ActionController::TestCase
54 54 assert_template 'create_institution'
55 55 end
56 56  
57   - should "create new institution with ajax" do
  57 + should "create new institution with ajax without acronym" do
58 58 @controller.stubs(:verify_recaptcha).returns(true)
59 59  
60   - xhr :get, :new_institution,
61   - :authenticity_token=>"dsa45a6das52sd",
62   - :name => "foo bar",
63   - :community=>{:name=>"foo bar", :country => "BR", :state => "DF", :city => "Brasilia"},
64   - :governmental=>{:power=>@govPower.id, :sphere=>@govSphere.id},
65   - :juridical => {:nature => @juridical_nature.id},
66   - :institution => {:cnpj=>"12.234.567/8900-10", :acronym=>"fb", :type=>"PublicInstitution"},
67   - :recaptcha_response_field=>''
  60 + fields = generate_form_fields "foo bar", "BR", "DF", "Brasilia", "12.234.567/8900-10", "PublicInstitution"
  61 + fields[:institutions][:governmental_power] = @govPower.id
  62 + fields[:institutions][:governmental_sphere] = @govSphere.id
  63 + fields[:institutions][:juridical_nature] = @juridical_nature.id
68 64  
69   -
70   - json_response = ActiveSupport::JSON.decode(@response.body)
71   -
72   - assert json_response["success"]
73   - end
74   -
75   - should "create more than one institution without acronym" do
76   - @controller.stubs(:verify_recaptcha).returns(true)
77   -
78   - xhr :get, :new_institution,
79   - :authenticity_token=>"dsa45a6das52sd",
80   - :name => "foo bar",
81   - :community=>{:name=>"foo bar", :country => "BR", :state => "DF", :city => "Brasilia"},
82   - :governmental=>{:power=>@govPower.id, :sphere=>@govSphere.id},
83   - :juridical => {:nature => @juridical_nature.id},
84   - :institution => {:cnpj=>"12.234.567/8900-10", :acronym=>"", :type=>"PublicInstitution"},
85   - :recaptcha_response_field=>''
86   -
87   - json_response = ActiveSupport::JSON.decode(@response.body)
88   -
89   - assert json_response["success"]
90   -
91   - xhr :get, :new_institution,
92   - :authenticity_token=>"dsa45a6das52sd",
93   - :name => "foo bar 2",
94   - :community=>{:name=>"foo bar 2", :country => "BR", :state => "DF", :city => "Brasilia"},
95   - :governmental=>{:power=>@govPower.id, :sphere=>@govSphere.id},
96   - :juridical => {:nature => @juridical_nature.id},
97   - :institution => {:cnpj=>"12.224.567/8900-10", :acronym=>"", :type=>"PublicInstitution"},
98   - :recaptcha_response_field=>''
  65 + xhr :get, :new_institution, fields
99 66  
100 67 json_response = ActiveSupport::JSON.decode(@response.body)
101 68  
... ... @@ -105,14 +72,12 @@ class MpogSoftwarePluginControllerTest &lt; ActionController::TestCase
105 72 should "not create a institution that already exists" do
106 73 @controller.stubs(:verify_recaptcha).returns(true)
107 74  
108   - xhr :get, :new_institution,
109   - :authenticity_token=>"dsa45a6das52sd",
110   - :name => "Ministerio Publico da Uniao",
111   - :community=>{:name=>"Ministerio Publico da Uniao", :country => "BR", :state => "DF", :city => "Brasilia"},
112   - :governmental=>{:power=>@govPower.id, :sphere=>@govSphere.id},
113   - :juridical => {:nature => @juridical_nature.id},
114   - :institution => {:cnpj=>"12.234.567/8900-10", :acronym=>"fb", :type=>"PublicInstitution"},
115   - :recaptcha_response_field=>''
  75 + fields = generate_form_fields "Ministerio Publico da Uniao", "BR", "DF", "Brasilia", "12.234.567/8900-10", "PublicInstitution"
  76 + fields[:institutions][:governmental_power] = @govPower.id
  77 + fields[:institutions][:governmental_sphere] = @govSphere.id
  78 + fields[:institutions][:juridical_nature] = @juridical_nature.id
  79 +
  80 + xhr :get, :new_institution, fields
116 81  
117 82 json_response = ActiveSupport::JSON.decode(@response.body)
118 83  
... ... @@ -122,14 +87,10 @@ class MpogSoftwarePluginControllerTest &lt; ActionController::TestCase
122 87 should "not create a institution without cnpj" do
123 88 @controller.stubs(:verify_recaptcha).returns(true)
124 89  
125   - xhr :get, :new_institution,
126   - :authenticity_token=>"dsa45a6das52sd",
127   - :name => "Ministerio Publico da Uniao",
128   - :community=>{:name=>"Ministerio Publico da Uniao", :country => "BR", :state => "DF", :city => "Brasilia"},
129   - :governmental=>{:power=>@govPower.id, :sphere=>@govSphere.id},
130   - :juridical => {:nature => @juridical_nature.id},
131   - :institution => {:cnpj=> "", :acronym=>"fb", :type=>"PublicInstitution"},
132   - :recaptcha_response_field=>''
  90 + fields = generate_form_fields "Some Private Institution", "BR", "DF", "Brasilia", "", "PrivateInstitution"
  91 + fields[:institutions][:acronym] = "SPI"
  92 +
  93 + xhr :get, :new_institution, fields
133 94  
134 95 json_response = ActiveSupport::JSON.decode(@response.body)
135 96  
... ... @@ -165,26 +126,51 @@ class MpogSoftwarePluginControllerTest &lt; ActionController::TestCase
165 126 assert_equal "false", @response.body
166 127 end
167 128  
168   - should "update institution date_modification in your creation" do
  129 + should "Create new institution with method post" do
169 130 @controller.stubs(:verify_recaptcha).returns(true)
170 131  
171   - xhr :get, :new_institution,
172   - :authenticity_token=>"dsa45a6das52sd",
173   - :name => "foo bar",
174   - :community=>{:name=>"foo bar", :country => "BR", :state => "DF", :city => "Brasilia"},
175   - :governmental=>{:power=>@govPower.id, :sphere=>@govSphere.id},
176   - :juridical => {:nature => @juridical_nature.id},
177   - :institution => {:cnpj=>"12.234.567/8900-10", :acronym=>"fb", :type=>"PublicInstitution"},
178   - :recaptcha_response_field=>''
  132 + fields = generate_form_fields "Some Private Institution", "BR", "DF", "Brasilia", "12.345.567/8900-10", "PrivateInstitution"
  133 + fields[:institutions][:acronym] = "SPI"
  134 +
  135 + post :new_institution, fields
179 136  
180   - date = Time.now.day.to_s + "/" + Time.now.month.to_s + "/" + Time.now.year.to_s
181   - assert_equal date, Institution.last.date_modification
  137 + assert_redirected_to(controller: "admin_panel", action: "index")
182 138 end
183 139  
  140 + should "not create new institution with method post without cnpj" do
  141 + @controller.stubs(:verify_recaptcha).returns(true)
  142 +
  143 + fields = generate_form_fields "Some Private Institution", "BR", "DF", "Brasilia", "", "PrivateInstitution"
  144 + fields[:institutions][:acronym] = "SPI"
  145 +
  146 + post :new_institution, fields
  147 +
  148 + assert_redirected_to(controller: "mpog_software_plugin", action: "create_institution_admin")
  149 + end
184 150  
185 151 private
186 152  
187   - def create_public_institution name, acronym, country, state, city, juridical_nature, gov_p, gov_s
  153 + def generate_form_fields name, country, state, city, cnpj, type
  154 + fields = {
  155 + :community => {
  156 + :name => name,
  157 + :country => country,
  158 + :state => state,
  159 + :city => city
  160 + },
  161 + :institutions => {
  162 + :cnpj=> cnpj,
  163 + :type => type,
  164 + :acronym => "",
  165 + :governmental_power => "",
  166 + :governmental_sphere => "",
  167 + :juridical_nature => ""
  168 + }
  169 + }
  170 + fields
  171 + end
  172 +
  173 + def create_public_institution name, acronym, country, state, city, juridical_nature, gov_p, gov_s, cnpj
188 174 institution_community = fast_create(Community)
189 175 institution_community.name = name
190 176 institution_community.country = country
... ... @@ -199,6 +185,7 @@ class MpogSoftwarePluginControllerTest &lt; ActionController::TestCase
199 185 institution.acronym = acronym
200 186 institution.governmental_power = gov_p
201 187 institution.governmental_sphere = gov_s
  188 + institution.cnpj = cnpj
202 189 institution.save!
203 190 institution
204 191 end
... ...