2019-04-30 08:27:42 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-12-11 23:36:15 +08:00
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
RSpec.describe GroupActionLogger do
|
2019-05-07 11:12:20 +08:00
|
|
|
fab!(:group_owner) { Fabricate(:user) }
|
|
|
|
fab!(:group) { Fabricate(:group) }
|
|
|
|
fab!(:user) { Fabricate(:user) }
|
2016-12-11 23:36:15 +08:00
|
|
|
|
|
|
|
subject { described_class.new(group_owner, group) }
|
|
|
|
|
|
|
|
before do
|
|
|
|
group.add_owner(group_owner)
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#log_make_user_group_owner' do
|
|
|
|
it 'should create the right record' do
|
|
|
|
subject.log_make_user_group_owner(user)
|
|
|
|
|
|
|
|
group_history = GroupHistory.last
|
|
|
|
|
|
|
|
expect(group_history.action).to eq(GroupHistory.actions[:make_user_group_owner])
|
|
|
|
expect(group_history.acting_user).to eq(group_owner)
|
|
|
|
expect(group_history.target_user).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#log_remove_user_as_group_owner' do
|
|
|
|
it 'should create the right record' do
|
|
|
|
subject.log_remove_user_as_group_owner(user)
|
|
|
|
|
|
|
|
group_history = GroupHistory.last
|
|
|
|
|
|
|
|
expect(group_history.action).to eq(GroupHistory.actions[:remove_user_as_group_owner])
|
|
|
|
expect(group_history.acting_user).to eq(group_owner)
|
|
|
|
expect(group_history.target_user).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#log_add_user_to_group' do
|
2017-07-28 10:37:10 +08:00
|
|
|
describe 'as a group owner' do
|
|
|
|
it 'should create the right record' do
|
|
|
|
subject.log_add_user_to_group(user)
|
2016-12-11 23:36:15 +08:00
|
|
|
|
2017-07-28 10:37:10 +08:00
|
|
|
group_history = GroupHistory.last
|
2016-12-11 23:36:15 +08:00
|
|
|
|
2017-07-28 10:37:10 +08:00
|
|
|
expect(group_history.action).to eq(GroupHistory.actions[:add_user_to_group])
|
|
|
|
expect(group_history.acting_user).to eq(group_owner)
|
|
|
|
expect(group_history.target_user).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'as a normal user' do
|
|
|
|
subject { described_class.new(user, group) }
|
|
|
|
|
|
|
|
describe 'user cannot freely exit group' do
|
|
|
|
it 'should not be allowed to log the action' do
|
|
|
|
expect { subject.log_add_user_to_group(user) }
|
|
|
|
.to raise_error(Discourse::InvalidParameters)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'user can freely exit group' do
|
|
|
|
before do
|
|
|
|
group.update!(public_admission: true)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'should create the right record' do
|
|
|
|
subject.log_add_user_to_group(user)
|
|
|
|
|
|
|
|
group_history = GroupHistory.last
|
|
|
|
|
|
|
|
expect(group_history.action).to eq(GroupHistory.actions[:add_user_to_group])
|
|
|
|
expect(group_history.acting_user).to eq(user)
|
|
|
|
expect(group_history.target_user).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
2016-12-11 23:36:15 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#log_remove_user_from_group' do
|
2017-07-28 10:37:10 +08:00
|
|
|
describe 'as group owner' do
|
|
|
|
it 'should create the right record' do
|
|
|
|
subject.log_remove_user_from_group(user)
|
2016-12-11 23:36:15 +08:00
|
|
|
|
2017-07-28 10:37:10 +08:00
|
|
|
group_history = GroupHistory.last
|
2016-12-11 23:36:15 +08:00
|
|
|
|
2017-07-28 10:37:10 +08:00
|
|
|
expect(group_history.action).to eq(GroupHistory.actions[:remove_user_from_group])
|
|
|
|
expect(group_history.acting_user).to eq(group_owner)
|
|
|
|
expect(group_history.target_user).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'as a normal user' do
|
|
|
|
subject { described_class.new(user, group) }
|
|
|
|
|
|
|
|
describe 'user cannot freely exit group' do
|
|
|
|
it 'should not be allowed to log the action' do
|
|
|
|
expect { subject.log_remove_user_from_group(user) }
|
|
|
|
.to raise_error(Discourse::InvalidParameters)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'user can freely exit group' do
|
|
|
|
before do
|
|
|
|
group.update!(public_exit: true)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'should create the right record' do
|
|
|
|
subject.log_remove_user_from_group(user)
|
|
|
|
|
|
|
|
group_history = GroupHistory.last
|
|
|
|
|
|
|
|
expect(group_history.action).to eq(GroupHistory.actions[:remove_user_from_group])
|
|
|
|
expect(group_history.acting_user).to eq(user)
|
|
|
|
expect(group_history.target_user).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
2016-12-11 23:36:15 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#log_change_group_settings' do
|
|
|
|
it 'should create the right record' do
|
2019-04-29 15:32:25 +08:00
|
|
|
group.update!(public_admission: true, created_at: Time.zone.now)
|
2016-12-11 23:36:15 +08:00
|
|
|
|
|
|
|
expect { subject.log_change_group_settings }.to change { GroupHistory.count }.by(1)
|
|
|
|
|
|
|
|
group_history = GroupHistory.last
|
|
|
|
|
|
|
|
expect(group_history.action).to eq(GroupHistory.actions[:change_group_setting])
|
|
|
|
expect(group_history.acting_user).to eq(group_owner)
|
2017-07-28 10:37:10 +08:00
|
|
|
expect(group_history.subject).to eq('public_admission')
|
2016-12-11 23:36:15 +08:00
|
|
|
expect(group_history.prev_value).to eq('f')
|
|
|
|
expect(group_history.new_value).to eq('t')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|