houdini/spec/lib/query/query_users_spec.rb
2019-08-02 19:07:29 +02:00

55 lines
3.8 KiB
Ruby

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
require 'rails_helper'
describe QueryUsers do
describe '.nonprofit_user_emails', pending: true do
before(:all) do
# @np = Psql.execute(Qexpr.new.insert('nonprofits', [{name: 'xxyy'}])).first
#
# @users = Psql.execute(Qexpr.new.insert('users', [
# {email: "u1#{SecureRandom.uuid}@example.com"},
# {email: "u2#{SecureRandom.uuid}@example.com"},
# {email: "u3#{SecureRandom.uuid}@example.com"},
# {email: "u4#{SecureRandom.uuid}@example.com"},
# {email: "u5#{SecureRandom.uuid}@example.com"},
# {email: "u6#{SecureRandom.uuid}@example.com"}
# ]).returning('email', 'id'))
# @user_wrong_role = Psql.execute(Qexpr.new.insert('users', [{email: "u-wrong-role-#{SecureRandom.uuid}@example.com"}]).returning('email', 'id')).first
# @user_no_settings = Psql.execute(Qexpr.new.insert('users', [{email: "u-no-role-#{SecureRandom.uuid}@example.com"}]).returning('email,' 'id')).first
#
# @roles = Psql.execute(Qexpr.new.insert('roles', [
# {user_id: @users[0]['id'], name: 'nonprofit_admin'},
# {user_id: @users[1]['id'], name: 'nonprofit_associate'},
# {user_id: @users[2]['id'], name: 'nonprofit_admin'},
# {user_id: @users[3]['id'], name: 'nonprofit_associate'},
# {user_id: @users[4]['id'], name: 'nonprofit_admin'},
# {user_id: @users[5]['id'], name: 'nonprofit_associate'},
# {user_id: @user_no_settings['id'], name: 'nonprofit_admin'}
# ], {common_data: {host_id: @np['id'], host_type: 'Nonprofit'}}))
#
# @wrong_role = Psql.execute(Qexpr.new.insert('roles', [{host_type: 'Campaign', host_id: @np['id'], user_id: @user_wrong_role['id'], name: 'campaign_editor'}])).first
# @wrong_role = Psql.execute(Qexpr.new.insert('roles', [{host_type: 'Campaign', host_id: @np['id'], user_id: @user_wrong_role['id'], name: 'campaign_editor'}])).first
#
# @email_settings = {notify_payments: true, notify_campaigns: true, notify_events: true, notify_payouts: true, notify_recurring_donations: true}
#
# @email_settings = Psql.execute(Qexpr.new.insert('email_settings', [
# @email_settings.merge({user_id: @users[0]['id']}),
# @email_settings.merge({user_id: @users[1]['id'], notify_payments: false}),
# @email_settings.merge({user_id: @users[2]['id'], notify_campaigns: false}),
# @email_settings.merge({user_id: @users[3]['id'], notify_events: false}),
# @email_settings.merge({user_id: @users[4]['id'], notify_payouts: false}),
# @email_settings.merge({user_id: @users[5]['id'], notify_recurring_donations: false}),
# ], {common_data: {nonprofit_id: @np['id']}, no_timestamps: true}))
end
it 'Returns all users who have the respective setting enabled (or no settings set), and does not return people without the right role' do
expect(QueryUsers.nonprofit_user_emails(@np['id'], 'notify_payments').sort).to eq([0, 2, 3, 4, 5].map { |id| @users[id]['email'] }.concat([@user_no_settings['email']]).sort)
expect(QueryUsers.nonprofit_user_emails(@np['id'], 'notify_campaigns').sort).to eq([0, 1, 3, 4, 5].map { |id| @users[id]['email'] }.concat([@user_no_settings['email']]).sort)
expect(QueryUsers.nonprofit_user_emails(@np['id'], 'notify_events').sort).to eq([0, 1, 2, 4, 5].map { |id| @users[id]['email'] }.concat([@user_no_settings['email']]).sort)
expect(QueryUsers.nonprofit_user_emails(@np['id'], 'notify_payouts').sort).to eq([0, 1, 2, 3, 5].map { |id| @users[id]['email'] }.concat([@user_no_settings['email']]).sort)
expect(QueryUsers.nonprofit_user_emails(@np['id'], 'notify_recurring_donations').sort).to eq([0, 1, 2, 3, 4].map { |id| @users[id]['email'] }.concat([@user_no_settings['email']]).sort)
end
end
end