coalescing_panda 4.0.4 → 4.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/coalescing_panda/canvas_batch.js.coffee +5 -7
  3. data/app/assets/stylesheets/coalescing_panda/progress.css.scss +97 -0
  4. data/app/controllers/coalescing_panda/canvas_batches_controller.rb +10 -0
  5. data/app/controllers/coalescing_panda/lti_controller.rb +2 -2
  6. data/app/controllers/coalescing_panda/oauth2_controller.rb +3 -1
  7. data/app/models/coalescing_panda/assignment.rb +2 -0
  8. data/app/models/coalescing_panda/assignment_group.rb +11 -0
  9. data/app/models/coalescing_panda/canvas_batch.rb +4 -0
  10. data/app/models/coalescing_panda/course.rb +2 -0
  11. data/app/models/coalescing_panda/group.rb +3 -2
  12. data/app/models/coalescing_panda/group_category.rb +11 -0
  13. data/app/models/coalescing_panda/lti_account.rb +1 -0
  14. data/app/models/coalescing_panda/user.rb +1 -0
  15. data/app/models/coalescing_panda/workers/course_miner.rb +132 -56
  16. data/app/models/concerns/single_table_polymorphic.rb +1 -1
  17. data/app/views/coalescing_panda/canvas_batches/_canvas_batch.html.haml +22 -10
  18. data/app/views/coalescing_panda/canvas_batches/_canvas_batch_flash.html.haml +1 -1
  19. data/config/routes.rb +3 -1
  20. data/db/migrate/20150506183335_create_coalescing_panda_assignment_groups.rb +18 -0
  21. data/db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb +5 -0
  22. data/db/migrate/20150526144713_add_account_to_canvas_batches.rb +5 -0
  23. data/db/migrate/20150602205257_add_option_to_canvas_batches.rb +5 -0
  24. data/db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb +5 -0
  25. data/db/migrate/20150709192717_add_leader_id_to_groups.rb +6 -0
  26. data/db/migrate/20150714205405_create_coalescing_panda_group_categories.rb +16 -0
  27. data/lib/coalescing_panda/bearcat_uri.rb +20 -0
  28. data/lib/coalescing_panda/controller_helpers.rb +22 -25
  29. data/lib/coalescing_panda/version.rb +1 -1
  30. data/spec/dummy/db/development.sqlite3 +0 -0
  31. data/spec/dummy/db/schema.rb +120 -82
  32. data/spec/dummy/db/test.sqlite3 +0 -0
  33. data/spec/dummy/log/development.log +628 -0
  34. data/spec/dummy/log/test.log +42958 -0
  35. data/spec/factories/assignment_groups.rb +14 -0
  36. data/spec/models/coalescing_panda/assignment_group_spec.rb +32 -0
  37. data/spec/models/coalescing_panda/assignment_spec.rb +1 -0
  38. data/spec/models/coalescing_panda/course_spec.rb +5 -0
  39. data/spec/models/coalescing_panda/workers/course_miner_spec.rb +57 -10
  40. metadata +25 -6
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :assignment_group, class: CoalescingPanda::AssignmentGroup do
3
+ name "test assignment group"
4
+ course
5
+ context_id '1'
6
+ context_type 'Course'
7
+ position '1'
8
+ group_weight 50.5
9
+ workflow_state 'active'
10
+ sequence :canvas_assignment_group_id do |n|
11
+ "#{n}"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe CoalescingPanda::AssignmentGroup, :type => :model do
4
+ let(:assignment_group) { FactoryGirl.create(:assignment_group) }
5
+
6
+ context "associations" do
7
+ it 'should belong_to a course' do
8
+ expect(CoalescingPanda::AssignmentGroup.reflect_on_association(:course)).to_not be_nil
9
+ expect(CoalescingPanda::AssignmentGroup.reflect_on_association(:course).macro).to eql(:belongs_to)
10
+ end
11
+
12
+ it 'should have many assignments' do
13
+ expect(CoalescingPanda::AssignmentGroup.reflect_on_association(:assignments)).to_not be_nil
14
+ expect(CoalescingPanda::AssignmentGroup.reflect_on_association(:assignments).macro).to eql(:has_many)
15
+ end
16
+ end
17
+
18
+ context "validations" do
19
+ it "should require a canvas id" do
20
+ expect(FactoryGirl.build(:assignment_group, canvas_assignment_group_id: "")).to_not be_valid
21
+ end
22
+
23
+ it "should require a course" do
24
+ expect(FactoryGirl.build(:assignment_group, coalescing_panda_course_id: "")).to_not be_valid
25
+ end
26
+
27
+ it "should be valid with valid data" do
28
+ expect(FactoryGirl.build(:assignment_group)).to be_valid
29
+ end
30
+ end
31
+
32
+ end
@@ -7,6 +7,7 @@ RSpec.describe CoalescingPanda::Assignment, :type => :model do
7
7
  it 'should belong_to a course' do
8
8
  expect(CoalescingPanda::Assignment.reflect_on_association(:course)).to_not be_nil
9
9
  expect(CoalescingPanda::Assignment.reflect_on_association(:course).macro).to eql(:belongs_to)
10
+ expect(CoalescingPanda::Assignment.reflect_on_association(:assignment_group).macro).to eql(:belongs_to)
10
11
  end
11
12
 
12
13
  it 'should have many submisssions' do
@@ -43,6 +43,11 @@ RSpec.describe CoalescingPanda::Course, :type => :model do
43
43
  expect(CoalescingPanda::Course.reflect_on_association(:users)).to_not be_nil
44
44
  expect(CoalescingPanda::Course.reflect_on_association(:users).macro).to eql(:has_many)
45
45
  end
46
+
47
+ it 'should have many assignment groups' do
48
+ expect(CoalescingPanda::Course.reflect_on_association(:assignment_groups)).to_not be_nil
49
+ expect(CoalescingPanda::Course.reflect_on_association(:assignment_groups).macro).to eql(:has_many)
50
+ end
46
51
  end
47
52
 
48
53
  context "validations" do
@@ -2,7 +2,7 @@ require 'rails_helper'
2
2
 
3
3
  RSpec.describe CoalescingPanda::Workers::CourseMiner, :type => :model do
4
4
  let(:course) { FactoryGirl.create(:course) }
5
- let(:worker) { CoalescingPanda::Workers::CourseMiner.new(course, [:sections, :users, :enrollments, :assignments, :submissions, :groups, :group_memberships]) }
5
+ let(:worker) { CoalescingPanda::Workers::CourseMiner.new(course, [:sections, :users, :enrollments, :assignments, :assignment_groups, :submissions, :groups, :group_memberships]) }
6
6
  let(:users_response) {[
7
7
  {"id"=>1, "name"=>"teacher@test.com", "sortable_name"=>"teacher@test.com", "short_name"=>"teacher@test.com", "login_id"=>"teacher@test.com"},
8
8
  {"id"=>2, "name"=>"student1@test.com", "sortable_name"=>"student1@test.com", "short_name"=>"student1@test.com", "login_id"=>"student1@test.com"},
@@ -17,7 +17,7 @@ RSpec.describe CoalescingPanda::Workers::CourseMiner, :type => :model do
17
17
  {"associated_user_id"=>nil, "course_id"=>1, "course_section_id"=>1, "created_at"=>"2014-11-07T21:18:17Z", "end_at"=>nil, "id"=>3, "limit_privileges_to_course_section"=>false, "root_account_id"=>1, "start_at"=>nil, "type"=>"StudentEnrollment", "updated_at"=>"2014-11-20T23:18:21Z", "user_id"=>3, "enrollment_state"=>"active", "role"=>"StudentEnrollment", "role_id"=>3, "last_activity_at"=>"2014-11-10T22:10:15Z", "total_activity_time"=>921, "sis_import_id"=>nil, "grades"=>{"html_url"=>"http://localhost:3000/courses/1/grades/3", "current_score"=>80, "final_score"=>80, "current_grade"=>nil, "final_grade"=>nil}, "sis_course_id"=>"DOCSTUCOMM", "course_integration_id"=>nil, "sis_section_id"=>nil, "section_integration_id"=>nil, "html_url"=>"http://localhost:3000/courses/1/users/3", "user"=>{"id"=>3, "name"=>"student2@test.com", "sortable_name"=>"student2@test.com", "short_name"=>"student2@test.com", "login_id"=>"student2@test.com"}},
18
18
  ]}
19
19
  let(:assignments_response) {[
20
- {"assignment_group_id"=>1, "automatic_peer_reviews"=>false, "created_at"=>"2014-11-18T18:04:38Z", "description"=>"<p>What is your name?</p>", "due_at"=>nil, "grade_group_students_individually"=>false, "grading_standard_id"=>nil, "grading_type"=>"points", "group_category_id"=>nil, "id"=>1, "lock_at"=>nil, "peer_reviews"=>false, "points_possible"=>100, "position"=>1, "post_to_sis"=>true, "unlock_at"=>nil, "updated_at"=>"2014-11-18T18:04:42Z", "course_id"=>1, "name"=>"Gimme your name", "submission_types"=>["online_text_entry"], "has_submitted_submissions"=>false, "muted"=>false, "html_url"=>"http://localhost:3000/courses/1/assignments/1", "needs_grading_count"=>0, "integration_id"=>nil, "integration_data"=>{}, "published"=>true, "unpublishable"=>true, "locked_for_user"=>false},
20
+ {"assignment_group_id"=>1, "automatic_peer_reviews"=>false, "created_at"=>"2014-11-18T18:04:38Z", "description"=>"<p>What is your name?</p>", "due_at"=>nil, "grade_group_students_individually"=>false, "grading_standard_id"=>nil, "grading_type"=>"points", "group_category_id"=>1, "id"=>1, "lock_at"=>nil, "peer_reviews"=>false, "points_possible"=>100, "position"=>1, "post_to_sis"=>true, "unlock_at"=>nil, "updated_at"=>"2014-11-18T18:04:42Z", "course_id"=>1, "name"=>"Gimme your name", "submission_types"=>["online_text_entry"], "has_submitted_submissions"=>false, "muted"=>false, "html_url"=>"http://localhost:3000/courses/1/assignments/1", "needs_grading_count"=>0, "integration_id"=>nil, "integration_data"=>{}, "published"=>true, "unpublishable"=>true, "locked_for_user"=>false},
21
21
  {"assignment_group_id"=>1, "automatic_peer_reviews"=>false, "created_at"=>"2014-11-18T19:10:28Z", "description"=>"<p>What is your Favorite Color?</p>", "due_at"=>nil, "grade_group_students_individually"=>false, "grading_standard_id"=>nil, "grading_type"=>"points", "group_category_id"=>nil, "id"=>2, "lock_at"=>nil, "peer_reviews"=>false, "points_possible"=>100, "position"=>2, "post_to_sis"=>true, "unlock_at"=>nil, "updated_at"=>"2014-11-18T19:10:30Z", "course_id"=>1, "name"=>"Favorite Color", "submission_types"=>["online_text_entry"], "has_submitted_submissions"=>false, "muted"=>false, "html_url"=>"http://localhost:3000/courses/1/assignments/2", "needs_grading_count"=>0, "integration_id"=>nil, "integration_data"=>{}, "published"=>true, "unpublishable"=>true, "locked_for_user"=>false}
22
22
  ]}
23
23
  let(:submissions_response1) {[
@@ -28,13 +28,19 @@ RSpec.describe CoalescingPanda::Workers::CourseMiner, :type => :model do
28
28
  {"assignment_id"=>2, "attempt"=>nil, "body"=>nil, "grade"=>"90", "grade_matches_current_submission"=>true, "graded_at"=>"2014-11-20T23:18:21Z", "grader_id"=>1, "id"=>4, "score"=>90, "submission_type"=>nil, "submitted_at"=>nil, "url"=>nil, "user_id"=>3, "workflow_state"=>"graded", "late"=>false, "preview_url"=>"http://localhost:3000/courses/1/assignments/2/submissions/3?preview=1"},
29
29
  {"assignment_id"=>2, "attempt"=>nil, "body"=>nil, "grade"=>"80", "grade_matches_current_submission"=>true, "graded_at"=>"2014-11-20T23:18:17Z", "grader_id"=>1, "id"=>2, "score"=>80, "submission_type"=>nil, "submitted_at"=>nil, "url"=>nil, "user_id"=>2, "workflow_state"=>"graded", "late"=>false, "preview_url"=>"http://localhost:3000/courses/1/assignments/2/submissions/2?preview=1"}
30
30
  ]}
31
+ let(:group_categories_response){[
32
+ {"auto_leader" => "first", "group_limit" => nil, "id" => 1, "name" => "mark red", "role" => nil, "self_signup" => nil, "context_type" => "Course", "course_id" => 1, "protected" => false, "allows_multiple_memberships" => false, "is_member" => false}
33
+ ]}
31
34
  let(:groups_response){[
32
- {"description"=> nil, "group_category_id"=> 3, "id"=> 4, "is_public"=> false, "join_level"=> "invitation_only", "max_membership"=> 5, "name"=> "Student Group 1", "members_count"=> 2, "storage_quota_mb"=> 50, "context_type"=> "CoalescingPanda::Course", "course_id"=> 1, "avatar_url"=> nil, "role"=> nil, "leader"=> nil},
33
- {"description"=> nil, "group_category_id"=> 3, "id"=> 5, "is_public"=> false, "join_level"=> "invitation_only", "max_membership"=> 5, "name"=> "Student Group 2", "members_count"=> 2, "storage_quota_mb"=> 50, "context_type"=> "CoalescingPanda::Course", "course_id"=> 1, "avatar_url"=> nil, "role"=> nil, "leader"=> nil}
35
+ {"description"=> nil, "group_category_id"=> 1, "id"=> 4, "is_public"=> false, "join_level"=> "invitation_only", "max_membership"=> 5, "name"=> "Student Group 1", "members_count"=> 2, "storage_quota_mb"=> 50, "context_type"=> "CoalescingPanda::Course", "course_id"=> 1, "avatar_url"=> nil, "role"=> nil, "leader"=> {"id"=>2}},
36
+ {"description"=> nil, "group_category_id"=> nil, "id"=> 5, "is_public"=> false, "join_level"=> "invitation_only", "max_membership"=> 5, "name"=> "Student Group 2", "members_count"=> 2, "storage_quota_mb"=> 50, "context_type"=> "CoalescingPanda::Course", "course_id"=> 1, "avatar_url"=> nil, "role"=> nil, "leader"=> nil}
34
37
  ]}
35
38
  let(:membership_response){[
36
- {"group_id"=> 4, "id"=> 13, "moderator"=> false, "user_id"=> 2, "workflow_state"=> "accepted"},
37
- {"group_id"=> 4, "id"=> 14, "moderator"=> false, "user_id"=> 3, "workflow_state"=> "accepted"}
39
+ {"group_id"=> 4, "id"=> 13, "moderator"=> "true", "user_id"=> 2, "workflow_state"=> "accepted"},
40
+ {"group_id"=> 4, "id"=> 14, "moderator"=> "false", "user_id"=> 3, "workflow_state"=> "accepted"}
41
+ ]}
42
+ let(:assignment_groups_response) {[
43
+ {"group_weight" => 500, "id" => 3, "name" => "Assignments", "position" => 3, "rules" => {} }
38
44
  ]}
39
45
 
40
46
  before do
@@ -47,13 +53,14 @@ RSpec.describe CoalescingPanda::Workers::CourseMiner, :type => :model do
47
53
  Bearcat::Client.any_instance.stub(:get_course_submissions).with("1", "2") { double(Bearcat::ApiArray, :all_pages! => submissions_response2) }
48
54
  Bearcat::Client.any_instance.stub(:course_groups) { double(Bearcat::ApiArray, :all_pages! => groups_response) }
49
55
  Bearcat::Client.any_instance.stub(:list_group_memberships) { double(Bearcat::ApiArray, :all_pages! => membership_response) }
56
+ Bearcat::Client.any_instance.stub(:list_assignment_groups) { double(Bearcat::ApiArray, :all_pages! => assignment_groups_response) }
50
57
  end
51
58
 
52
59
  describe '#initialize' do
53
60
  it 'should set instance variables a user' do
54
61
  expect(worker.course).to eq course
55
62
  expect(worker.account).to eq course.account
56
- expect(worker.options).to eq [:sections, :users, :enrollments, :assignments, :submissions, :groups, :group_memberships]
63
+ expect(worker.options).to eq [:sections, :users, :enrollments, :assignments, :assignment_groups, :submissions, :groups, :group_memberships]
57
64
  expect(worker.batch).to eq CoalescingPanda::CanvasBatch.last
58
65
  end
59
66
  end
@@ -93,10 +100,24 @@ RSpec.describe CoalescingPanda::Workers::CourseMiner, :type => :model do
93
100
  expect(CoalescingPanda::Enrollment.last.workflow_state).to eq "active"
94
101
  end
95
102
 
103
+ it 'creates group categories' do
104
+ worker.sync_group_categories(group_categories_response)
105
+ expect(CoalescingPanda::GroupCategory.count).to eq 1
106
+ end
107
+
96
108
  it 'creates assignments' do
97
109
  CoalescingPanda::Assignment.destroy_all
110
+ worker.sync_group_categories(group_categories_response)
98
111
  worker.sync_assignments(assignments_response)
99
112
  expect(CoalescingPanda::Assignment.count).to eq 2
113
+ expect(CoalescingPanda::Assignment.find_by(canvas_assignment_id: 1).group_category).to_not be_nil
114
+ end
115
+
116
+ it 'creates assignment groups' do
117
+ CoalescingPanda::AssignmentGroup.destroy_all
118
+ expect(CoalescingPanda::AssignmentGroup.count).to eq 0
119
+ worker.sync_assignment_groups(assignment_groups_response)
120
+ expect(CoalescingPanda::AssignmentGroup.count).to eq 1
100
121
  end
101
122
 
102
123
  it 'creates submissions' do
@@ -112,8 +133,20 @@ RSpec.describe CoalescingPanda::Workers::CourseMiner, :type => :model do
112
133
 
113
134
  it 'creates groups' do
114
135
  CoalescingPanda::Group.destroy_all
136
+ worker.sync_group_categories(group_categories_response)
115
137
  worker.sync_groups(groups_response)
116
138
  expect(CoalescingPanda::Group.count).to eq 2
139
+ expect(CoalescingPanda::Group.find_by(canvas_group_id: 4)).to_not be_nil
140
+ end
141
+
142
+ it 'creates groups with leaders' do
143
+ CoalescingPanda::Group.destroy_all
144
+ worker.sync_sections(sections_response)
145
+ worker.sync_users(users_response)
146
+ worker.sync_enrollments(enrollments_response)
147
+ worker.sync_groups(groups_response)
148
+ expect(CoalescingPanda::Group.count).to eq 2
149
+ expect(CoalescingPanda::Group.where(canvas_group_id: "4").first.leader).to_not be_nil
117
150
  end
118
151
 
119
152
  it 'creates group memberships' do
@@ -164,9 +197,23 @@ RSpec.describe CoalescingPanda::Workers::CourseMiner, :type => :model do
164
197
  end
165
198
 
166
199
  it 'returns group membership attributes' do
167
- attributes = {"group_id"=> 4,"id"=> 13,"moderator"=> false,"user_id"=> 2,"workflow_state"=> "accepted"}
200
+ attributes = {"group_id"=> 4,"id"=> 13,"moderator"=> "false","user_id"=> 2,"workflow_state"=> "accepted"}
168
201
  record = CoalescingPanda::GroupMembership.new
169
- expect(worker.standard_attributes(record, attributes)).to eq({"workflow_state" => "accepted"})
202
+ expect(worker.standard_attributes(record, attributes)).to eq({"moderator"=> "false", "workflow_state" => "accepted"})
203
+ end
204
+ end
205
+
206
+ describe "#setup_batch" do
207
+ it 'should return a new batch if none are in progress' do
208
+ batch = worker.setup_batch
209
+ expect(batch.status).to eq 'Queued'
210
+ end
211
+
212
+ it 'should return a started batch if one exists' do
213
+ batch = worker.setup_batch
214
+ batch.update_attributes(status: 'Started')
215
+ batch = worker.setup_batch
216
+ expect(batch.status).to eq 'Started'
170
217
  end
171
218
  end
172
- end
219
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coalescing_panda
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.4
4
+ version: 4.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Mills
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-04-02 00:00:00.000000000 Z
13
+ date: 2015-07-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -30,16 +30,16 @@ dependencies:
30
30
  name: bearcat
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "~>"
33
+ - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 1.0.5
35
+ version: 1.0.21
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "~>"
40
+ - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 1.0.5
42
+ version: 1.0.21
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: macaddr
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -330,17 +330,20 @@ files:
330
330
  - app/assets/stylesheets/coalescing_panda/application.css
331
331
  - app/assets/stylesheets/coalescing_panda/launch.css.scss
332
332
  - app/assets/stylesheets/coalescing_panda/oauth2.css
333
+ - app/assets/stylesheets/coalescing_panda/progress.css.scss
333
334
  - app/controllers/coalescing_panda/application_controller.rb
334
335
  - app/controllers/coalescing_panda/canvas_batches_controller.rb
335
336
  - app/controllers/coalescing_panda/lti_controller.rb
336
337
  - app/controllers/coalescing_panda/oauth2_controller.rb
337
338
  - app/helpers/coalescing_panda/canvas_batches_helper.rb
338
339
  - app/models/coalescing_panda/assignment.rb
340
+ - app/models/coalescing_panda/assignment_group.rb
339
341
  - app/models/coalescing_panda/canvas_api_auth.rb
340
342
  - app/models/coalescing_panda/canvas_batch.rb
341
343
  - app/models/coalescing_panda/course.rb
342
344
  - app/models/coalescing_panda/enrollment.rb
343
345
  - app/models/coalescing_panda/group.rb
346
+ - app/models/coalescing_panda/group_category.rb
344
347
  - app/models/coalescing_panda/group_membership.rb
345
348
  - app/models/coalescing_panda/lti_account.rb
346
349
  - app/models/coalescing_panda/lti_nonce.rb
@@ -379,7 +382,15 @@ files:
379
382
  - db/migrate/20150107205405_create_coalescing_panda_groups.rb
380
383
  - db/migrate/20150107205413_create_coalescing_panda_group_memberships.rb
381
384
  - db/migrate/20150210180516_add_context_to_canvas_batch.rb
385
+ - db/migrate/20150506183335_create_coalescing_panda_assignment_groups.rb
386
+ - db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb
387
+ - db/migrate/20150526144713_add_account_to_canvas_batches.rb
388
+ - db/migrate/20150602205257_add_option_to_canvas_batches.rb
389
+ - db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb
390
+ - db/migrate/20150709192717_add_leader_id_to_groups.rb
391
+ - db/migrate/20150714205405_create_coalescing_panda_group_categories.rb
382
392
  - lib/coalescing_panda.rb
393
+ - lib/coalescing_panda/bearcat_uri.rb
383
394
  - lib/coalescing_panda/controller_helpers.rb
384
395
  - lib/coalescing_panda/engine.rb
385
396
  - lib/coalescing_panda/route_helpers.rb
@@ -416,14 +427,17 @@ files:
416
427
  - spec/dummy/config/initializers/wrap_parameters.rb
417
428
  - spec/dummy/config/locales/en.yml
418
429
  - spec/dummy/config/routes.rb
430
+ - spec/dummy/db/development.sqlite3
419
431
  - spec/dummy/db/schema.rb
420
432
  - spec/dummy/db/test.sqlite3
433
+ - spec/dummy/log/development.log
421
434
  - spec/dummy/log/test.log
422
435
  - spec/dummy/public/404.html
423
436
  - spec/dummy/public/422.html
424
437
  - spec/dummy/public/500.html
425
438
  - spec/dummy/public/favicon.ico
426
439
  - spec/factories/accounts.rb
440
+ - spec/factories/assignment_groups.rb
427
441
  - spec/factories/assignments.rb
428
442
  - spec/factories/canvas_batches.rb
429
443
  - spec/factories/courses.rb
@@ -432,6 +446,7 @@ files:
432
446
  - spec/factories/submissions.rb
433
447
  - spec/factories/terms.rb
434
448
  - spec/factories/users.rb
449
+ - spec/models/coalescing_panda/assignment_group_spec.rb
435
450
  - spec/models/coalescing_panda/assignment_spec.rb
436
451
  - spec/models/coalescing_panda/canvas_api_auth_spec.rb
437
452
  - spec/models/coalescing_panda/canvas_batch_spec.rb
@@ -501,8 +516,10 @@ test_files:
501
516
  - spec/dummy/config/locales/en.yml
502
517
  - spec/dummy/config/routes.rb
503
518
  - spec/dummy/config.ru
519
+ - spec/dummy/db/development.sqlite3
504
520
  - spec/dummy/db/schema.rb
505
521
  - spec/dummy/db/test.sqlite3
522
+ - spec/dummy/log/development.log
506
523
  - spec/dummy/log/test.log
507
524
  - spec/dummy/public/404.html
508
525
  - spec/dummy/public/422.html
@@ -511,6 +528,7 @@ test_files:
511
528
  - spec/dummy/Rakefile
512
529
  - spec/dummy/README.rdoc
513
530
  - spec/factories/accounts.rb
531
+ - spec/factories/assignment_groups.rb
514
532
  - spec/factories/assignments.rb
515
533
  - spec/factories/canvas_batches.rb
516
534
  - spec/factories/courses.rb
@@ -519,6 +537,7 @@ test_files:
519
537
  - spec/factories/submissions.rb
520
538
  - spec/factories/terms.rb
521
539
  - spec/factories/users.rb
540
+ - spec/models/coalescing_panda/assignment_group_spec.rb
522
541
  - spec/models/coalescing_panda/assignment_spec.rb
523
542
  - spec/models/coalescing_panda/canvas_api_auth_spec.rb
524
543
  - spec/models/coalescing_panda/canvas_batch_spec.rb