NameL3ss

helper spec

Apr 2nd, 2025
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. def new_position_order(previous_order, moved_id, old_position, new_position)
  2. expected_order = previous_order.dup
  3. expected_order.delete(moved_id)
  4. expected_order.transform_values! do |pos|
  5. if new_position < old_position && pos >= new_position && pos < old_position
  6. pos + 1
  7. elsif new_position > old_position && pos > old_position && pos <= new_position
  8. pos - 1
  9. else
  10. pos
  11. end
  12. end
  13.  
  14. expected_order[moved_id] = new_position
  15. expected_order.sort_by { |_, pos| pos }.to_h
  16. end
  17.  
  18. it "updates the position of the document attribute" do
  19. #previous_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
  20. moved_id = doc_attr_list.id
  21. #old_position = previous_order[moved_id]
  22. new_position = 4
  23. patch update_position_v1_document_attribute_path(id: moved_id), params: { position: new_position }, as: :json
  24. doc_attr_list.reload
  25. expect(JSON.parse(response.body).dig("data","attributes", "position")).to eq new_position
  26. # new_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
  27.  
  28. # expected_order = new_position_order(previous_order, moved_id, old_position, new_position)
  29. expect(response).to have_http_status(:ok)
  30. expect(doc_attr_list.position).to eq(new_position)
  31. #expect(new_order).to eq(expected_order)
  32. end
  33.  
  34. it "updates the last position to the first position" do
  35. previous_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
  36. moved_id = previous_order.to_a.last.first
  37. #old_position = previous_order[moved_id]
  38. new_position = 1
  39. patch update_position_v1_document_attribute_path(id: moved_id), params: { position: new_position }, as: :json
  40. bird.reload
  41. expect(JSON.parse(response.body).dig("data", "attributes", "position")).to eq new_position
  42. #new_order = customer.document_attributes.order(:position).pluck(:id, :position).to_h
  43.  
  44. #expected_order = new_position_order(previous_order, moved_id, old_position, new_position)
  45. expect(response).to have_http_status(:ok)
  46. expect(bird.position).to eq(new_position)
  47. #expect(new_order).to eq(expected_order)
  48. end
Advertisement
Add Comment
Please, Sign In to add comment