forked from instructure/canvas-lms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathassignment_util_spec.rb
More file actions
179 lines (150 loc) · 8.06 KB
/
Copy pathassignment_util_spec.rb
File metadata and controls
179 lines (150 loc) · 8.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
describe AssignmentUtil do
before :once do
course_with_teacher(active_all: true)
student_in_course(active_all: true, user_name: 'a student')
end
let(:assignment) do
@course.assignments.create!(assignment_valid_attributes)
end
let(:assignment_name_length_value){ 15 }
def account_stub_helper(assignment, require_due_date, sis_syncing, new_sis_integrations)
assignment.context.account.stubs(:sis_require_assignment_due_date).returns({value: require_due_date})
assignment.context.account.stubs(:sis_syncing).returns({value: sis_syncing})
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(new_sis_integrations)
end
def due_date_required_helper(assignment, post_to_sis, require_due_date, sis_syncing, new_sis_integrations)
assignment.post_to_sis = post_to_sis
account_stub_helper(assignment, require_due_date, sis_syncing, new_sis_integrations)
end
describe "due_date_required?" do
it "returns true when all 4 are set to true" do
due_date_required_helper(assignment, true, true, true, true)
expect(described_class.due_date_required?(assignment)).to eq(true)
end
it "returns false when post_to_sis is false" do
due_date_required_helper(assignment, false, true, true, true)
expect(described_class.due_date_required?(assignment)).to eq(false)
end
it "returns false when sis_require_assignment_due_date is false" do
due_date_required_helper(assignment, true, false, true, true)
expect(described_class.due_date_required?(assignment)).to eq(false)
end
it "returns false when sis_syncing is false" do
due_date_required_helper(assignment, true, true, false, true)
expect(described_class.due_date_required?(assignment)).to eq(false)
end
it "returns false when new_sis_integrations is false" do
due_date_required_helper(assignment, true, true, true, false)
expect(described_class.due_date_required?(assignment)).to eq(false)
end
end
describe "due_date_required_for_account?" do
it "returns true when all 3 are set to true" do
account_stub_helper(assignment, true, true, true)
expect(described_class.due_date_required_for_account?(assignment.context)).to eq(true)
end
it "returns false when sis_require_assignment_due_date is false" do
account_stub_helper(assignment, false, true, true)
expect(described_class.due_date_required_for_account?(assignment.context)).to eq(false)
end
it "returns false when sis_syncing is false" do
account_stub_helper(assignment, true, false, true)
expect(described_class.due_date_required_for_account?(assignment.context)).to eq(false)
end
it "returns false when new_sis_integrations is false" do
account_stub_helper(assignment, true, true, false)
expect(described_class.due_date_required_for_account?(assignment.context)).to eq(false)
end
end
describe "assignment_max_name_length" do
it "returns 15 when the account setting sis_assignment_name_length_input is 15" do
assignment.context.account.stubs(:sis_assignment_name_length_input).returns({value: 15})
expect(described_class.assignment_max_name_length(assignment.context)).to eq(15)
end
end
describe "post_to_sis_friendly_name" do
it "returns custom friendly name when the account setting sis_name is custom" do
assignment.context.account.root_account.settings[:sis_name] = 'Foo Bar'
expect(described_class.post_to_sis_friendly_name(assignment.context)).to eq('Foo Bar')
end
it "returns SIS when the account setting sis_name is not custom" do
expect(described_class.post_to_sis_friendly_name(assignment.context)).to eq('SIS')
end
end
describe "due_date_ok?" do
it "returns false when due_at is blank and due_date_required? is true" do
assignment.due_at = nil
described_class.stubs(:due_date_required?).with(assignment).returns(true)
expect(described_class.due_date_ok?(assignment)).to eq(false)
end
it "returns true when due_at is blank, due_date_required? is true and grading_type is not_graded" do
assignment.due_at = nil
assignment.grading_type = 'not_graded'
described_class.stubs(:due_date_required?).with(assignment).returns(true)
expect(described_class.due_date_ok?(assignment)).to eq(true)
end
it "returns true when due_at is present and due_date_required? is true" do
assignment.due_at = Time.zone.now
described_class.stubs(:due_date_required?).with(assignment).returns(true)
expect(described_class.due_date_ok?(assignment)).to eq(true)
end
it "returns true when due_at is present and due_date_required? is false" do
assignment.due_at = Time.zone.now
described_class.stubs(:due_date_required?).with(assignment).returns(false)
expect(described_class.due_date_ok?(assignment)).to eq(true)
end
it "returns true when due_at is not present and due_date_required? is false" do
assignment.due_at = nil
described_class.stubs(:due_date_required?).with(assignment).returns(false)
expect(described_class.due_date_ok?(assignment)).to eq(true)
end
end
describe "sis_integration_settings_enabled?" do
it "returns true when new_sis_integrations fetaure enabled" do
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(true)
expect(described_class.sis_integration_settings_enabled?(assignment.context)).to eq(true)
end
it "returns false when new_sis_integrations fetaure enabled" do
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(false)
expect(described_class.sis_integration_settings_enabled?(assignment.context)).to eq(false)
end
end
describe "assignment_name_length_required?" do
it "returns true when all 4 are set to true" do
assignment.post_to_sis = true
assignment.context.account.stubs(:sis_syncing).returns({value: true})
assignment.context.account.stubs(:sis_assignment_name_length).returns({value: true})
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(true)
expect(described_class.assignment_name_length_required?(assignment)).to eq(true)
end
it "returns false when sis_sycning is set to false" do
assignment.post_to_sis = true
assignment.context.account.stubs(:sis_syncing).returns({value: false})
assignment.context.account.stubs(:sis_assignment_name_length).returns({value: true})
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(true)
expect(described_class.assignment_name_length_required?(assignment)).to eq(false)
end
it "returns false when post_to_sis is false" do
assignment.post_to_sis = false
assignment.context.account.stubs(:sis_syncing).returns({value: true})
assignment.context.account.stubs(:sis_assignment_name_length).returns({value: true})
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(true)
expect(described_class.assignment_name_length_required?(assignment)).to eq(false)
end
it "returns false when sis_assignment_name_length is false" do
assignment.post_to_sis = true
assignment.context.account.stubs(:sis_syncing).returns({value: false})
assignment.context.account.stubs(:sis_assignment_name_length).returns({value: false})
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(true)
expect(described_class.assignment_name_length_required?(assignment)).to eq(false)
end
it "returns false when new_sis_integrations is false" do
assignment.post_to_sis = true
assignment.context.account.stubs(:sis_syncing).returns({value: false})
assignment.context.account.stubs(:sis_assignment_name_length).returns({value: true})
assignment.context.account.stubs(:feature_enabled?).with('new_sis_integrations').returns(false)
expect(described_class.assignment_name_length_required?(assignment)).to eq(false)
end
end
end