mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
124 lines
3.7 KiB
Ruby
124 lines
3.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'test_helper'
|
|
|
|
class MembersTest < ActionDispatch::IntegrationTest
|
|
# Called before every test method runs. Can be used
|
|
# to set up fixture information.
|
|
def setup
|
|
@admin = User.find_by(username: 'admin')
|
|
login_as(@admin, scope: :user)
|
|
end
|
|
|
|
test 'admin creates member' do
|
|
group_id = Group.first.id
|
|
email = 'robert.dubois@gmail.com'
|
|
|
|
VCR.use_cassette('members_admin_create_success') do
|
|
post members_path, params: { user: {
|
|
username: 'bob',
|
|
email: email,
|
|
group_id: group_id,
|
|
profile_attributes: {
|
|
last_name: 'Dubois',
|
|
first_name: 'Robert',
|
|
phone: '0485232145'
|
|
},
|
|
invoicing_profile_attributes: {
|
|
organization: false,
|
|
address_attributes: {
|
|
address: '21 grand rue, 73110 Bourget-en-Huile'
|
|
}
|
|
},
|
|
statistic_profile_attributes: {
|
|
gender: true,
|
|
birthday: '2018-02-08'
|
|
}
|
|
} }.to_json, headers: default_headers
|
|
end
|
|
|
|
# Check response format & status
|
|
assert_equal 201, response.status, response.body
|
|
assert_match Mime[:json].to_s, response.content_type
|
|
|
|
# Check that the user's match
|
|
user = json_response(response.body)
|
|
assert_equal email, user[:email], "user's mail does not match"
|
|
assert_equal group_id, user[:group_id], "user's group does not match"
|
|
end
|
|
|
|
test 'admin fails to update member group' do
|
|
user = User.friendly.find('kdumas')
|
|
|
|
# we cannot update an kevin's group because he's got a running subscription
|
|
put "/api/members/#{user.id}", params: { user: {
|
|
group_id: 1
|
|
} }.to_json, headers: default_headers
|
|
|
|
# Check response format & status
|
|
assert_equal 422, response.status, response.body
|
|
assert_match Mime[:json].to_s, response.content_type
|
|
|
|
# Check error message
|
|
res = json_response(response.body)
|
|
assert_equal I18n.t('members.unable_to_change_the_group_while_a_subscription_is_running'), res[:group_id][0], 'invalid error message'
|
|
end
|
|
|
|
test 'admin successfully updates a member' do
|
|
user = User.friendly.find('vlonchamp')
|
|
user_hash = { user: JSON.parse(user.to_json) }
|
|
instagram = 'https://www.instagram.com/vanessa/'
|
|
|
|
put "/api/members/#{user.id}", params: user_hash.deep_merge(
|
|
user: {
|
|
'group_id' => 1,
|
|
'profile_attributes' => {
|
|
'instagram' => instagram
|
|
}
|
|
}
|
|
).to_json, headers: default_headers
|
|
|
|
# Check response format & status
|
|
assert_equal 200, response.status, response.body
|
|
assert_match Mime[:json].to_s, response.content_type
|
|
|
|
# Check update result
|
|
res = json_response(response.body)
|
|
assert_equal 1, res[:group_id], "user's group does not match"
|
|
assert_equal instagram, res[:profile_attributes][:instagram], "user's social network not updated"
|
|
end
|
|
|
|
test 'admin search for autocompletion of a member s name' do
|
|
get '/api/members/search/kevin?subscription=true'
|
|
|
|
# Check response format & status
|
|
assert_equal 200, response.status, response.body
|
|
assert_match Mime[:json].to_s, response.content_type
|
|
|
|
# Check search result
|
|
res = json_response(response.body)
|
|
assert_equal 1, res.length
|
|
|
|
assert_match(/Kevin/, res[0][:name])
|
|
end
|
|
|
|
test 'admin changes the group of a member' do
|
|
user = User.find(2)
|
|
patch "/api/members/#{user.id}/",
|
|
params: {
|
|
user: {
|
|
id: user.id,
|
|
group_id: 2
|
|
}
|
|
}
|
|
|
|
# Check response format & status
|
|
assert_equal 200, response.status, response.body
|
|
assert_match Mime[:json].to_s, response.content_type
|
|
|
|
# Check search result
|
|
res = json_response(response.body)
|
|
assert_equal 2, res[:group_id]
|
|
end
|
|
end
|