Use ActsAsList#update_order in AssignmentGroups#reorder

refs CNVS-8955

Test plan:
  * Try to reorder assignment groups in the assignment index page (old
    one and draft state).
  * Reload the page.
  * The groups should be arranged in your new order.

Change-Id: I61f637202e954575b500411ea2f7da4d962c4cdf
Reviewed-on: https://gerrit.instructure.com/25984
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cameron Sutter <csutter@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
This commit is contained in:
Cameron Matheson 2013-11-05 09:47:00 -07:00
parent e839e14755
commit 97be53eddd
2 changed files with 8 additions and 18 deletions

View File

@ -118,17 +118,10 @@ class AssignmentGroupsController < ApplicationController
def reorder
if authorized_action(@context.assignment_groups.new, @current_user, :update)
order = params[:order].split(',')
ids = []
order.each_index do |idx|
id = order[idx]
group = @context.assignment_groups.active.find_by_id(id) if id.present?
if group
group.move_to_bottom
ids << group.id
end
end
@context.assignment_groups.first.update_order(order)
respond_to do |format|
format.json { render :json => {:reorder => true, :order => ids}, :status => :ok }
new_order = @context.assignment_groups.pluck(:id)
format.json { render :json => {:reorder => true, :order => new_order}, :status => :ok }
end
end
end

View File

@ -70,16 +70,13 @@ describe AssignmentGroupsController do
it "should reorder assignment groups" do
course_with_teacher_logged_in(:active_all => true)
g1 = course_group
g2 = course_group
g1.position.should eql(1)
g2.position.should eql(2)
groups = 3.times.map { course_group }
groups.map(&:position).should == [1, 2, 3]
g1, g2, _ = groups
post 'reorder', :course_id => @course.id, :order => "#{g2.id},#{g1.id}"
response.should be_success
g1.reload
g2.reload
g1.position.should eql(2)
g2.position.should eql(1)
groups.each &:reload
groups.map(&:position).should == [2, 1, 3]
end
end