mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
109 lines
3.2 KiB
Ruby
109 lines
3.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
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, { user: {
|
|
username: 'bob',
|
|
email: email,
|
|
group_id: group_id,
|
|
profile_attributes: {
|
|
last_name: 'Dubois',
|
|
first_name: 'Robert',
|
|
phone: '0485232145'
|
|
},
|
|
invoicing_profile_attributes: {
|
|
address_attributes: {
|
|
address: '21 grand rue, 73110 Bourget-en-Huile'
|
|
}
|
|
},
|
|
statistic_profile_attributes: {
|
|
gender: true,
|
|
birthday: '2018-02-08'
|
|
}
|
|
} }.to_json, default_headers
|
|
end
|
|
|
|
# Check response format & status
|
|
assert_equal 201, response.status, response.body
|
|
assert_equal Mime::JSON, 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}", { user: {
|
|
group_id: 1
|
|
} }.to_json, default_headers
|
|
|
|
|
|
# Check response format & status
|
|
assert_equal 422, response.status, response.body
|
|
assert_equal Mime::JSON, 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: {
|
|
profile_attributes: JSON.parse(user.to_json)['profile']
|
|
}.merge(JSON.parse(user.to_json))
|
|
}
|
|
instagram = 'https://www.instagram.com/vanessa/'
|
|
|
|
put "/api/members/#{user.id}", user_hash.deep_merge(
|
|
user: {
|
|
group_id: 2,
|
|
profile_attributes: {
|
|
instagram: instagram
|
|
}
|
|
}
|
|
).to_json, default_headers
|
|
|
|
# Check response format & status
|
|
assert_equal 200, response.status, response.body
|
|
assert_equal Mime::JSON, response.content_type
|
|
|
|
# Check update result
|
|
res = json_response(response.body)
|
|
assert_equal 2, res[:group_id], "user's group does not match"
|
|
assert_equal instagram, res[:profile][: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_equal Mime::JSON, response.content_type
|
|
|
|
# Check search result
|
|
res = json_response(response.body)
|
|
assert_equal 1, res.length
|
|
|
|
assert_match /Kevin/, res[0][:name]
|
|
end
|
|
end
|