mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-08-23 11:36:19 -05:00
Fix avgSeedingSkillOrdinal condition in autoseed
Basically this should never happen so this is not fixing any known bug
This commit is contained in:
@@ -23,7 +23,10 @@ const createTeam = (
|
||||
id,
|
||||
seed: options.seed ?? null,
|
||||
members: { length: options.members ?? 4 },
|
||||
avgSeedingSkillOrdinal: options.avgSeedingSkillOrdinal ?? 100,
|
||||
avgSeedingSkillOrdinal:
|
||||
options.avgSeedingSkillOrdinal === undefined
|
||||
? 100
|
||||
: options.avgSeedingSkillOrdinal,
|
||||
createdAt: options.createdAt ?? id,
|
||||
startingBracketIdx: options.startingBracketIdx ?? null,
|
||||
});
|
||||
@@ -146,7 +149,7 @@ describe("compareTeamsForOrdering", () => {
|
||||
|
||||
it("places team with skill before team without skill", () => {
|
||||
const withSkill = createTeam(1, { avgSeedingSkillOrdinal: 100 });
|
||||
const withoutSkill = createTeam(2);
|
||||
const withoutSkill = createTeam(2, { avgSeedingSkillOrdinal: null });
|
||||
|
||||
const result = compareTeamsForOrdering(
|
||||
withSkill,
|
||||
@@ -156,6 +159,21 @@ describe("compareTeamsForOrdering", () => {
|
||||
|
||||
expect(result).toBeLessThan(0);
|
||||
});
|
||||
|
||||
it("places rated team before unrated team even when unrated was created earlier", () => {
|
||||
const rated = createTeam(1, {
|
||||
avgSeedingSkillOrdinal: 100,
|
||||
createdAt: 200,
|
||||
});
|
||||
const unrated = createTeam(2, {
|
||||
avgSeedingSkillOrdinal: null,
|
||||
createdAt: 100,
|
||||
});
|
||||
|
||||
const sorted = sortTeamsBySeeding([unrated, rated], MIN_MEMBERS);
|
||||
|
||||
expect(sorted.map((t) => t.id)).toEqual([1, 2]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("createdAt tiebreaker", () => {
|
||||
|
||||
@@ -312,10 +312,16 @@ export function compareTeamsForOrdering(
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (a.avgSeedingSkillOrdinal !== null && b.avgSeedingSkillOrdinal === null) {
|
||||
return -1;
|
||||
}
|
||||
if (a.avgSeedingSkillOrdinal === null && b.avgSeedingSkillOrdinal !== null) {
|
||||
return 1;
|
||||
}
|
||||
if (
|
||||
a.avgSeedingSkillOrdinal !== b.avgSeedingSkillOrdinal &&
|
||||
a.avgSeedingSkillOrdinal !== null &&
|
||||
b.avgSeedingSkillOrdinal !== null
|
||||
b.avgSeedingSkillOrdinal !== null &&
|
||||
a.avgSeedingSkillOrdinal !== b.avgSeedingSkillOrdinal
|
||||
) {
|
||||
return b.avgSeedingSkillOrdinal - a.avgSeedingSkillOrdinal;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user