1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-03-24 17:04:43 +00:00
Files
wrestlingdev.com/test/jobs/tournament_cleanup_job_test.rb

83 lines
2.9 KiB
Ruby

require 'test_helper'
class TournamentCleanupJobTest < ActiveJob::TestCase
setup do
# Create an old empty tournament (1 week old, 0 finished matches)
@old_empty_tournament = tournaments(:one)
@old_empty_tournament.update(date: 2.weeks.ago.to_date)
# Create an old active tournament (1 week old, with finished matches)
@old_active_tournament = tournaments(:two)
@old_active_tournament.update(date: 2.weeks.ago.to_date)
# Add a finished match to the active tournament using create instead of fixtures
weight = Weight.create(max: 120, tournament: @old_active_tournament)
wrestler = Wrestler.create(name: "Test Wrestler", weight: weight, school: schools(:one))
@match = Match.create(
tournament: @old_active_tournament,
weight: weight,
bracket_position: "Pool",
round: 1,
finished: 1,
win_type: "Decision",
score: "10-5",
w1: wrestler.id,
winner_id: wrestler.id
)
# Add delegates to test removal
tournament_delegate = TournamentDelegate.create(tournament: @old_active_tournament, user: users(:one))
school = schools(:one)
school.update(tournament_id: @old_active_tournament.id)
school_delegate = SchoolDelegate.create(school: school, user: users(:one))
end
test "removes old empty tournaments" do
# In this test, only the empty tournament should be deleted
@match.update!(win_type: "Decision") # Ensure this tournament has a non-BYE match
assert_difference 'Tournament.count', -1 do
TournamentCleanupJob.perform_now
end
assert_raises(ActiveRecord::RecordNotFound) { @old_empty_tournament.reload }
assert_nothing_raised { @old_active_tournament.reload }
end
test "removes old empty tournaments with only a bye finished match" do
# Update the win_type to BYE and score to empty as required by validation
@match.update!(win_type: "BYE", score: "")
assert_equal "BYE", @match.reload.win_type
assert_equal "", @match.score
# Both tournaments should be deleted (the empty one and the one with only BYE matches)
assert_difference 'Tournament.count', -2 do
TournamentCleanupJob.perform_now
end
assert_raises(ActiveRecord::RecordNotFound) { @old_empty_tournament.reload }
assert_raises(ActiveRecord::RecordNotFound) { @old_active_tournament.reload }
end
test "cleans up old active tournaments" do
# Ensure this tournament has a non-BYE match
@match.update!(win_type: "Decision")
TournamentCleanupJob.perform_now
# Tournament should still exist
@old_active_tournament.reload
# User association should be removed
assert_nil @old_active_tournament.user_id
# Tournament delegates should be removed
assert_equal 0, @old_active_tournament.delegates.count
# School delegates should be removed
@old_active_tournament.schools.each do |school|
assert_equal 0, school.delegates.count
end
end
end