Skip to content

Commit 01b4bd9

Browse files
Clean negative special needs and dietary restrictions (#202)
* fix: Clean negative special needs and dietary restrictions * fix: Adds test for leading and trailing whitespace in negative checks Co-authored-by: IlinDmitry <339966289@mail.ru>
1 parent 7c359ec commit 01b4bd9

File tree

2 files changed

+134
-0
lines changed

2 files changed

+134
-0
lines changed

app/models/questionnaire.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ class Questionnaire < ApplicationRecord
66

77
before_validation :consolidate_school_names
88
before_validation :clean_for_non_rsvp
9+
before_validation :clean_negative_special_needs
10+
before_validation :clean_negative_dietary_restrictions
911
after_create :queue_triggered_email_create
1012
after_update :queue_triggered_email_update
1113
after_save :update_school_questionnaire_count
@@ -226,6 +228,14 @@ def clean_for_non_rsvp
226228
end
227229
end
228230

231+
def clean_negative_special_needs
232+
self.special_needs = nil if special_needs.present? && %w[none n/a non-applicable na nothing nil null no].include?(special_needs.strip.downcase)
233+
end
234+
235+
def clean_negative_dietary_restrictions
236+
self.dietary_restrictions = nil if dietary_restrictions.present? && %w[none n/a non-applicable na nothing nil null no].include?(dietary_restrictions.strip.downcase)
237+
end
238+
229239
def consolidate_school_names
230240
return if school.blank?
231241
duplicate = SchoolNameDuplicate.find_by(name: school.name)

test/models/questionnaire_test.rb

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,130 @@ class QuestionnaireTest < ActiveSupport::TestCase
211211
end
212212
end
213213

214+
context "#clean_negative_special_needs" do
215+
should "return nil if special_needs field is None" do
216+
questionnaire = create(:questionnaire, special_needs: "NoNE")
217+
assert_nil questionnaire.special_needs
218+
end
219+
220+
should "return nil if special_needs field is n/a" do
221+
questionnaire = create(:questionnaire, special_needs: "N/a")
222+
assert_nil questionnaire.special_needs
223+
end
224+
225+
should "return nil if special_needs fiels is non-applicable" do
226+
questionnaire = create(:questionnaire, special_needs: "Non-applicable")
227+
assert_nil questionnaire.special_needs
228+
end
229+
230+
should "return nil if special_needs fiels is na" do
231+
questionnaire = create(:questionnaire, special_needs: "na")
232+
assert_nil questionnaire.special_needs
233+
end
234+
235+
should "return nil if special_needs fiels is nothing" do
236+
questionnaire = create(:questionnaire, special_needs: "nOthing")
237+
assert_nil questionnaire.special_needs
238+
end
239+
240+
should "return nil if special_needs fiels is nil" do
241+
questionnaire = create(:questionnaire, special_needs: "Nil")
242+
assert_nil questionnaire.special_needs
243+
end
244+
245+
should "return nil if special_needs fiels is null" do
246+
questionnaire = create(:questionnaire, special_needs: "nULL")
247+
assert_nil questionnaire.special_needs
248+
end
249+
250+
should "return nil if special_needs fiels is no" do
251+
questionnaire = create(:questionnaire, special_needs: "no")
252+
assert_nil questionnaire.special_needs
253+
end
254+
255+
should "return nil if special_needs fiels is no (with spaces)" do
256+
questionnaire = create(:questionnaire, special_needs: " no ")
257+
assert_nil questionnaire.special_needs
258+
end
259+
260+
should "return value if special_needs is none except for wheelchair" do
261+
questionnaire = create(:questionnaire, special_needs: "None except for wheelchair")
262+
assert_equal "None except for wheelchair", questionnaire.special_needs
263+
end
264+
265+
should "return value if special_needs is no thank you" do
266+
questionnaire = create(:questionnaire, special_needs: "no thank you")
267+
assert_equal "no thank you", questionnaire.special_needs
268+
end
269+
270+
should "return value if special_needs is need i need to sleep" do
271+
questionnaire = create(:questionnaire, special_needs: "I need to sleep")
272+
assert_equal "I need to sleep", questionnaire.special_needs
273+
end
274+
end
275+
276+
context "#clean_negative_dietary_restrictions" do
277+
should "return nil if dietary_restrictions field is None" do
278+
questionnaire = create(:questionnaire, dietary_restrictions: "NoNE")
279+
assert_nil questionnaire.dietary_restrictions
280+
end
281+
282+
should "return nil if dietary_restrictions field is n/a" do
283+
questionnaire = create(:questionnaire, dietary_restrictions: "N/a")
284+
assert_nil questionnaire.dietary_restrictions
285+
end
286+
287+
should "return nil if dietary_restrictions field is non-applicable" do
288+
questionnaire = create(:questionnaire, dietary_restrictions: "Non-applicable")
289+
assert_nil questionnaire.dietary_restrictions
290+
end
291+
292+
should "return nil if dietary_restrictions fiels is na" do
293+
questionnaire = create(:questionnaire, dietary_restrictions: "na")
294+
assert_nil questionnaire.dietary_restrictions
295+
end
296+
297+
should "return nil if dietary_restrictions fiels is nothing" do
298+
questionnaire = create(:questionnaire, dietary_restrictions: "nOthing")
299+
assert_nil questionnaire.dietary_restrictions
300+
end
301+
302+
should "return nil if dietary_restrictions fiels is nil" do
303+
questionnaire = create(:questionnaire, dietary_restrictions: "Nil")
304+
assert_nil questionnaire.dietary_restrictions
305+
end
306+
307+
should "return nil if dietary_restrictions fiels is null" do
308+
questionnaire = create(:questionnaire, dietary_restrictions: "nULL")
309+
assert_nil questionnaire.dietary_restrictions
310+
end
311+
312+
should "return nil if dietary_restrictions fiels is no" do
313+
questionnaire = create(:questionnaire, dietary_restrictions: "no")
314+
assert_nil questionnaire.dietary_restrictions
315+
end
316+
317+
should "return nil if dietary_restrictions fiels is no (with spaces)" do
318+
questionnaire = create(:questionnaire, dietary_restrictions: " no ")
319+
assert_nil questionnaire.dietary_restrictions
320+
end
321+
322+
should "return value if dietary_restrictions is nothing except for peanuts" do
323+
questionnaire = create(:questionnaire, dietary_restrictions: "Nothing except for peanuts")
324+
assert_equal "Nothing except for peanuts", questionnaire.dietary_restrictions
325+
end
326+
327+
should "return value if dietary_restrictions is no thank you" do
328+
questionnaire = create(:questionnaire, dietary_restrictions: "no thank you")
329+
assert_equal "no thank you", questionnaire.dietary_restrictions
330+
end
331+
332+
should "return value if dietary_restrictions is need i am a vegetarian" do
333+
questionnaire = create(:questionnaire, dietary_restrictions: "I am a vegetarian")
334+
assert_equal "I am a vegetarian", questionnaire.dietary_restrictions
335+
end
336+
end
337+
214338
context "#minor?" do
215339
should "return true for 16 year old" do
216340
HackathonConfig['event_start_date'] = "2020-06-12"

0 commit comments

Comments
 (0)