Guest User

Untitled

a guest
Apr 25th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. class GradeScale < ActiveRecord::Base
  2.  
  3. # Associations
  4. belongs_to :gradebook
  5.  
  6. # Validations
  7. validates_presence_of :gradebook_id, :grade_letter, :range_start, :range_end
  8. validates_numericality_of :range_start, :range_end, :greater_than_or_equal_to => 0, :less_than_or_equal_to => 100
  9. validates_uniqueness_of :grade_letter, :scope => :gradebook_id
  10. validate :range_exclusion
  11.  
  12. private
  13.  
  14. def range_exclusion
  15. ranges = GradeScale.find(:all, :select => "range_start, range_end")
  16. self.errors.add :range_start, 'lies within an existing range' if ranges.any?{ |r| (r.range_start.to_f..r.range_end.to_f).include?(range_start) }
  17. self.errors.add :range_end, 'lies within an existing range' if ranges.any?{ |r| (r.range_start.to_f..r.range_end.to_f).include?(range_end) }
  18. end
  19.  
  20. end
  21.  
  22. ## Test
  23. require File.dirname(__FILE__) + '/../test_helper'
  24.  
  25. class GradeScaleTest < ActiveSupport::TestCase
  26.  
  27. fixtures :grade_scales
  28.  
  29. def test_should_add_error_on_conflicting_ranges
  30. puts "inside tst"
  31. grade_scale1 = create(:gradebook_id => 1, :grade_letter => 'A', :range_start => 91.2, :range_end => 100)
  32. assert grade_scale1.valid?, "grade_scale1 should have been valid #{grade_scale1.errors.full_messages.join(', ')}"
  33. end
  34.  
  35. private
  36.  
  37. def create(options={})
  38. GradeScale.create({
  39. :gradebook_id => 1, :grade_letter => 'A'
  40. }.merge(options))
  41. end
  42.  
  43. end
  44.  
  45. ## Error
  46.  
  47. 1) Failure:
  48. test_should_add_error_on_conflicting_ranges(GradeScaleTest)
  49. [test/unit/grade_scale_test.rb:10:in `test_should_add_error_on_conflicting_ranges'
  50. /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/testing/default.rb:7:in `run']:
  51. grade_scale1 should have been valid Range start lies within an existing range, Range end lies within an existing range.
  52. <false> is not true.
Add Comment
Please, Sign In to add comment