Update tests for unbanning users

This commit is contained in:
Karina Kwiatek 2021-12-30 21:06:21 +01:00
parent a9392dad53
commit 7677ed21a4
4 changed files with 8 additions and 8 deletions

View File

@ -118,7 +118,7 @@ class Ajax::ModerationController < AjaxController
reason = params[:reason].to_s reason = params[:reason].to_s
target_user = User.find_by_screen_name!(params[:user]) target_user = User.find_by_screen_name!(params[:user])
unban = params[:ban] == '0' unban = params[:ban] == '0'
perma = params[:duration].nil? perma = params[:duration].blank?
if !unban && target_user.has_role?(:administrator) if !unban && target_user.has_role?(:administrator)
@response[:status] = :nopriv @response[:status] = :nopriv

View File

@ -224,7 +224,7 @@ class User < ApplicationRecord
# endregion # endregion
def banned? def banned?
self.bans.current.any? self.bans.current.count > 0
end end
def unban def unban

View File

@ -9,7 +9,8 @@ module UseCase
def call def call
UserBan.current.where(user_id: target_user_id).update_all( UserBan.current.where(user_id: target_user_id).update_all(
expires_at: DateTime.now # -1s to account for flakyness with timings in tests
expires_at: DateTime.now - 1.second
) )
end end
end end

View File

@ -424,7 +424,7 @@ describe Ajax::ModerationController, :ajax_controller, type: :controller do
before { target_user.ban(nil) } before { target_user.ban(nil) }
it "unbans the user" do it "unbans the user" do
expect { subject }.to change { target_user.reload.banned? }.from(true).to(false) expect { subject }.to change { target_user.reload.banned? }.from(true).to(false)
end end
include_examples "returns the expected response" include_examples "returns the expected response"
@ -443,15 +443,14 @@ describe Ajax::ModerationController, :ajax_controller, type: :controller do
context "when ban = 1" do context "when ban = 1" do
let(:ban) { "1" } let(:ban) { "1" }
let(:duration) { 3 }
let(:duration_unit) { 'hours' }
context "when permaban = 0" do context "when permaban = 0" do
let(:permaban) { "0" } let(:duration) { 3 }
let(:duration_unit) { 'hours' }
it "bans the user for 3 hours" do it "bans the user for 3 hours" do
Timecop.freeze do Timecop.freeze do
expect { subject }.to(change { target_user.reload.banned? }.from(false).to(true)) expect { subject }.to change { target_user.reload.banned? }.from(false).to(true)
expect(target_user.bans.current.first.reason).to eq("just a prank, bro") expect(target_user.bans.current.first.reason).to eq("just a prank, bro")
expect(target_user.bans.current.first.expires_at.to_i).to eq((Time.now.utc + 3.hours).to_i) expect(target_user.bans.current.first.expires_at.to_i).to eq((Time.now.utc + 3.hours).to_i)
end end