37 lines
1.7 KiB
CoffeeScript
37 lines
1.7 KiB
CoffeeScript
define ["underscore", "js/models/settings/course_grading_policy"], (_, CourseGradingPolicy) ->
|
|
describe "CourseGradingPolicy", ->
|
|
beforeEach ->
|
|
@model = new CourseGradingPolicy()
|
|
|
|
describe "parse", ->
|
|
it "sets a null grace period to 00:00", ->
|
|
attrs = @model.parse(grace_period: null)
|
|
expect(attrs.grace_period).toEqual(
|
|
hours: 0,
|
|
minutes: 0
|
|
)
|
|
|
|
describe "parseGracePeriod", ->
|
|
it "parses a time in HH:MM format", ->
|
|
time = @model.parseGracePeriod("07:19")
|
|
expect(time).toEqual(
|
|
hours: 7,
|
|
minutes: 19
|
|
)
|
|
|
|
it "returns null on an incorrectly formatted string", ->
|
|
expect(@model.parseGracePeriod("asdf")).toBe(null)
|
|
expect(@model.parseGracePeriod("7:19")).toBe(null)
|
|
expect(@model.parseGracePeriod("1000:00")).toBe(null)
|
|
|
|
describe "validate", ->
|
|
it "enforces that the passing grade is <= the minimum grade to receive credit if credit is enabled", ->
|
|
@model.set({minimum_grade_credit: 0.8, grace_period: '01:00', is_credit_course: true})
|
|
@model.set('grade_cutoffs', [0.9], validate: true)
|
|
expect(_.keys(@model.validationError)).toContain('minimum_grade_credit')
|
|
|
|
it "does not enforce the passing grade limit in non-credit courses", ->
|
|
@model.set({minimum_grade_credit: 0.8, grace_period: '01:00', is_credit_course: false})
|
|
@model.set({grade_cutoffs: [0.9]}, validate: true)
|
|
expect(@model.validationError).toBe(null)
|