do not allow GB1 when course enrollments are > 250

closes #CNVS-3926

test plan:
- open app/models/course.rb and change LARGE_ROSTER_THRESHOLD from 250 to 0
- go to the gradebook for any course
- gradebook 1 should not be an option

Change-Id: I0c1cc13f6347c3f47be4c6e6825b01890e1b56ad
Reviewed-on: https://gerrit.instructure.com/17869
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
This commit is contained in:
Joe Tanner 2013-02-19 14:46:44 -07:00
parent 2ca3234404
commit 4ccd7e54e7
2 changed files with 20 additions and 1 deletions

View File

@ -2854,7 +2854,7 @@ class Course < ActiveRecord::Base
opts[:default] ||= false
cast_expression = "Canvas::Plugin.value_to_boolean(val)"
end
class_eval <<-CODE
class_eval <<-CODE, __FILE__, __LINE__ + 1
def #{setting}
if settings_frd[#{setting.inspect}].nil? && !@disable_setting_defaults
default = Course.settings_options[#{setting.inspect}][:default]
@ -2885,6 +2885,16 @@ class Course < ActiveRecord::Base
add_setting :lock_all_announcements, :boolean => true, :default => false
add_setting :large_roster, :boolean => true, :default => lambda { |c| c.root_account.large_course_rosters? }
LARGE_ROSTER_THRESHOLD = 250
alias_method :orig_large_roster, :large_roster
def large_roster
orig_large_roster || (
student_count = Rails.cache.fetch(['student_count', self].cache_key) { students.count }
student_count > LARGE_ROSTER_THRESHOLD
)
end
alias_method :large_roster?, :large_roster
def user_can_manage_own_discussion_posts?(user)
return true if allow_student_discussion_editing?
return true if user_is_instructor?(user)

View File

@ -53,6 +53,15 @@ describe Course do
@course.should_not be_soft_concluded
end
context "#large_roster?" do
it "should return true when enrollment count is large enough" do
@course.large_roster = false
@course.large_roster?.should be_false
@course.students.stubs(:count).returns(Course::LARGE_ROSTER_THRESHOLD + 1)
@course.large_roster?.should be_true
end
end
describe "allow_student_discussion_topics" do
it "should default true" do