Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def new_position_order(previous_order, moved_id, old_position, new_position)
- expected_order = previous_order.dup
- expected_order.delete(moved_id)
- expected_order.transform_values! do |pos|
- if new_position < old_position && pos >= new_position && pos < old_position
- pos + 1
- elsif new_position > old_position && pos > old_position && pos <= new_position
- pos - 1
- else
- pos
- end
- end
- expected_order[moved_id] = new_position
- expected_order.sort_by { |_, pos| pos }.to_h
- end
- it "updates the position of the document attribute" do
- #previous_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
- moved_id = doc_attr_list.id
- #old_position = previous_order[moved_id]
- new_position = 4
- patch update_position_v1_document_attribute_path(id: moved_id), params: { position: new_position }, as: :json
- doc_attr_list.reload
- expect(JSON.parse(response.body).dig("data","attributes", "position")).to eq new_position
- # new_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
- # expected_order = new_position_order(previous_order, moved_id, old_position, new_position)
- expect(response).to have_http_status(:ok)
- expect(doc_attr_list.position).to eq(new_position)
- #expect(new_order).to eq(expected_order)
- end
- it "updates the last position to the first position" do
- previous_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
- moved_id = previous_order.to_a.last.first
- #old_position = previous_order[moved_id]
- new_position = 1
- patch update_position_v1_document_attribute_path(id: moved_id), params: { position: new_position }, as: :json
- bird.reload
- expect(JSON.parse(response.body).dig("data", "attributes", "position")).to eq new_position
- #new_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
- #expected_order = new_position_order(previous_order, moved_id, old_position, new_position)
- expect(response).to have_http_status(:ok)
- expect(bird.position).to eq(new_position)
- #expect(new_order).to eq(expected_order)
- end
Advertisement
Add Comment
Please, Sign In to add comment