API de comptabilité horaire.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

memberships_controller_test.rb 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. require "test_helper"
  2. class Api::V1::MembershipsControllerTest < ActionDispatch::IntegrationTest
  3. setup do
  4. @membership = memberships(:one)
  5. @user = users(:one)
  6. @user2 = users(:two)
  7. @team = teams(:one)
  8. @team2 = teams(:two)
  9. end
  10. # INDEX
  11. test "should access Membership index - specifix team" do
  12. get api_v1_team_memberships_url(@team),
  13. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  14. as: :json
  15. assert_response :success
  16. json_response = JSON.parse(self.response.body)
  17. assert_equal @membership.member_id, json_response['data'][0]['attributes']['member_id']
  18. end
  19. test "should access Membership index - all teams" do
  20. get api_v1_memberships_url,
  21. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  22. as: :json
  23. assert_response :success
  24. end
  25. test "should not access Membership index" do
  26. get api_v1_team_memberships_url(@team),
  27. as: :json
  28. assert_response :forbidden
  29. end
  30. # SHOW
  31. test "should show Membership" do
  32. get api_v1_team_memberships_url(@team, @membership),
  33. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  34. as: :json
  35. assert_response :success
  36. end
  37. test "should forbid show Membership" do
  38. get api_v1_team_memberships_url(@team, @membership),
  39. as: :json
  40. assert_response :forbidden
  41. end
  42. #CREATE
  43. test "should create membership" do
  44. assert_difference("Membership.count") do
  45. post api_v1_team_memberships_url(@team),
  46. params: { membership: { can_edit: false, member_id: @user2, team_id: @team } },
  47. headers: { Authorization: JsonWebToken.encode(user_id: @user2.id) },
  48. as: :json
  49. end
  50. assert_response :created
  51. end
  52. test "should forbid create membership" do
  53. assert_no_difference("Membership.count") do
  54. post api_v1_team_memberships_url(@team),
  55. params: { membership: { can_edit: false } },
  56. as: :json
  57. end
  58. assert_response :forbidden
  59. end
  60. # UPDATE
  61. test "should update membership" do
  62. patch api_v1_team_membership_url(@team, @membership),
  63. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  64. params: { membership: { can_edit: true } },
  65. as: :json
  66. assert_response :success
  67. end
  68. test "should forbid update membership" do
  69. patch api_v1_team_membership_url(@team, @membership),
  70. params: { membership: { can_edit: true } },
  71. as: :json
  72. assert_response :forbidden
  73. end
  74. test "should forbid update read_only attributes - team_id" do
  75. patch api_v1_team_membership_url(@team, @membership),
  76. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  77. params: { membership: { team_id: @team2.id, member_id: @user2.id } },
  78. as: :json
  79. assert_response :unprocessable_entity
  80. end
  81. # DESTROY
  82. test "should destroy membership" do
  83. assert_difference('Membership.count', -1) do
  84. delete api_v1_team_membership_url(@team, @membership),
  85. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  86. as: :json
  87. end
  88. assert_response :no_content
  89. end
  90. test "should forbid destroy membership" do
  91. assert_no_difference('Membership.count') do
  92. delete api_v1_team_membership_url(@team, @membership), as: :json
  93. end
  94. assert_response :forbidden
  95. end
  96. end