-
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test(factories): multiple factories for clearer tests (#78)
- Loading branch information
1 parent
a9e827f
commit 9ed0189
Showing
7 changed files
with
5,100 additions
and
4,913 deletions.
There are no files selected for viewing
151 changes: 151 additions & 0 deletions
151
tests/factories/game/schemas/player/player-attribute/player-attribute.schema.factory.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
import { faker } from "@faker-js/faker"; | ||
import { plainToInstance } from "class-transformer"; | ||
import { gameSourceValues } from "../../../../../../src/modules/game/constants/game.constant"; | ||
import { PLAYER_ATTRIBUTE_NAMES, PLAYER_GROUPS } from "../../../../../../src/modules/game/enums/player.enum"; | ||
import { PlayerAttribute } from "../../../../../../src/modules/game/schemas/player/player-attribute/player-attribute.schema"; | ||
import { ROLE_NAMES } from "../../../../../../src/modules/role/enums/role.enum"; | ||
|
||
function createFakePlayerSheriffAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.SHERIFF, | ||
source: PLAYER_GROUPS.ALL, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerSeenAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.SEEN, | ||
source: ROLE_NAMES.SEER, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerEatenAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.EATEN, | ||
source: PLAYER_GROUPS.WEREWOLVES, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerDrankLifePotionAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.DRANK_LIFE_POTION, | ||
source: ROLE_NAMES.WITCH, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerDrankDeathPotionAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.DRANK_DEATH_POTION, | ||
source: ROLE_NAMES.WITCH, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerProtectedAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.PROTECTED, | ||
source: ROLE_NAMES.GUARD, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerRavenMarkedAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.RAVEN_MARKED, | ||
source: ROLE_NAMES.RAVEN, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerInLoveAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.IN_LOVE, | ||
source: ROLE_NAMES.CUPID, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerWorshipedAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.WORSHIPED, | ||
source: ROLE_NAMES.WILD_CHILD, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerPowerlessAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.POWERLESS, | ||
source: ROLE_NAMES.ANCIENT, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerCantVoteAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.CANT_VOTE, | ||
source: ROLE_NAMES.SCAPEGOAT, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerCharmedAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.CHARMED, | ||
source: ROLE_NAMES.PIED_PIPER, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerGrowledAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.GROWLED, | ||
source: ROLE_NAMES.BEAR_TAMER, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerContaminatedAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return createFakePlayerAttribute({ | ||
name: PLAYER_ATTRIBUTE_NAMES.CONTAMINATED, | ||
source: ROLE_NAMES.RUSTY_SWORD_KNIGHT, | ||
...obj, | ||
}); | ||
} | ||
|
||
function createFakePlayerAttribute(obj: Partial<PlayerAttribute> = {}): PlayerAttribute { | ||
return plainToInstance(PlayerAttribute, { | ||
name: obj.name ?? faker.helpers.arrayElement(Object.values(PLAYER_ATTRIBUTE_NAMES)), | ||
source: obj.source ?? faker.helpers.arrayElement(gameSourceValues), | ||
}); | ||
} | ||
|
||
function bulkCreateFakePlayerAttributes(length: number, attributes: Partial<PlayerAttribute>[] = []): PlayerAttribute[] { | ||
return plainToInstance(PlayerAttribute, Array.from(Array(length)).map((item, index) => { | ||
const override = index < attributes.length ? attributes[index] : {}; | ||
return createFakePlayerAttribute(override); | ||
})); | ||
} | ||
|
||
export { | ||
createFakePlayerSheriffAttribute, | ||
createFakePlayerSeenAttribute, | ||
createFakePlayerEatenAttribute, | ||
createFakePlayerDrankLifePotionAttribute, | ||
createFakePlayerDrankDeathPotionAttribute, | ||
createFakePlayerProtectedAttribute, | ||
createFakePlayerRavenMarkedAttribute, | ||
createFakePlayerInLoveAttribute, | ||
createFakePlayerWorshipedAttribute, | ||
createFakePlayerPowerlessAttribute, | ||
createFakePlayerCantVoteAttribute, | ||
createFakePlayerCharmedAttribute, | ||
createFakePlayerGrowledAttribute, | ||
createFakePlayerContaminatedAttribute, | ||
createFakePlayerAttribute, | ||
bulkCreateFakePlayerAttributes, | ||
}; |
164 changes: 164 additions & 0 deletions
164
tests/factories/game/schemas/player/player-with-role.schema.factory.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
import type { PlayerRole } from "../../../../../src/modules/game/schemas/player/player-role.schema"; | ||
import type { PlayerSide } from "../../../../../src/modules/game/schemas/player/player-side.schema"; | ||
import type { Player } from "../../../../../src/modules/game/schemas/player/player.schema"; | ||
import { villagerRoles } from "../../../../../src/modules/role/constants/role.constant"; | ||
import { ROLE_NAMES, ROLE_SIDES } from "../../../../../src/modules/role/enums/role.enum"; | ||
import { createFakePlayer } from "./player.schema.factory"; | ||
|
||
function createFakeWerewolfPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.WEREWOLF, obj); | ||
} | ||
|
||
function createFakeBigBadWolfPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.BIG_BAD_WOLF, obj); | ||
} | ||
|
||
function createFakeVileFatherOfWolvesPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.VILE_FATHER_OF_WOLVES, obj); | ||
} | ||
|
||
function createFakeWhiteWerewolfPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.WHITE_WEREWOLF, obj); | ||
} | ||
|
||
function createFakeVillagerPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.VILLAGER, obj); | ||
} | ||
|
||
function createFakeVillagerVillagerPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.VILLAGER_VILLAGER, obj); | ||
} | ||
|
||
function createFakeSeerPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.SEER, obj); | ||
} | ||
|
||
function createFakeCupidPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.CUPID, obj); | ||
} | ||
|
||
function createFakeWitchPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.WITCH, obj); | ||
} | ||
|
||
function createFakeHunterPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.HUNTER, obj); | ||
} | ||
|
||
function createFakeLittleGirlPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.LITTLE_GIRL, obj); | ||
} | ||
|
||
function createFakeGuardPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.GUARD, obj); | ||
} | ||
|
||
function createFakeAncientPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.ANCIENT, obj); | ||
} | ||
|
||
function createFakeScapegoatPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.SCAPEGOAT, obj); | ||
} | ||
|
||
function createFakeIdiotPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.IDIOT, obj); | ||
} | ||
|
||
function createFakeTwoSistersPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.TWO_SISTERS, obj); | ||
} | ||
|
||
function createFakeThreeBrothersPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.THREE_BROTHERS, obj); | ||
} | ||
|
||
function createFakeFoxPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.FOX, obj); | ||
} | ||
|
||
function createFakeBearTamerPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.BEAR_TAMER, obj); | ||
} | ||
|
||
function createFakeStutteringJudgePlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.STUTTERING_JUDGE, obj); | ||
} | ||
|
||
function createFakeRustySwordKnightPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.RUSTY_SWORD_KNIGHT, obj); | ||
} | ||
|
||
function createFakeWildChildPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.WILD_CHILD, obj); | ||
} | ||
|
||
function createFakeDogWolfPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.DOG_WOLF, obj); | ||
} | ||
|
||
function createFakeThiefPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.THIEF, obj); | ||
} | ||
|
||
function createFakeAngelPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.ANGEL, obj); | ||
} | ||
|
||
function createFakePiedPiperPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.PIED_PIPER, obj); | ||
} | ||
|
||
function createFakeRavenPlayer(obj: Partial<Player> = {}): Player { | ||
return createFakePlayerWithRole(ROLE_NAMES.RAVEN, obj); | ||
} | ||
|
||
function createFakePlayerWithRole(role: ROLE_NAMES, obj: Partial<Player> = {}): Player { | ||
const playerRole: PlayerRole = { | ||
current: role, | ||
original: role, | ||
isRevealed: role === ROLE_NAMES.VILLAGER_VILLAGER, | ||
}; | ||
const playerSide: PlayerSide = { | ||
current: villagerRoles.find(({ name }) => name === role) ? ROLE_SIDES.VILLAGERS : ROLE_SIDES.WEREWOLVES, | ||
original: villagerRoles.find(({ name }) => name === role) ? ROLE_SIDES.VILLAGERS : ROLE_SIDES.WEREWOLVES, | ||
}; | ||
return createFakePlayer({ | ||
role: playerRole, | ||
side: playerSide, | ||
attributes: [], | ||
isAlive: true, | ||
...obj, | ||
}); | ||
} | ||
|
||
export { | ||
createFakePlayerWithRole, | ||
createFakeWerewolfPlayer, | ||
createFakeBigBadWolfPlayer, | ||
createFakeVileFatherOfWolvesPlayer, | ||
createFakeWhiteWerewolfPlayer, | ||
createFakeVillagerPlayer, | ||
createFakeVillagerVillagerPlayer, | ||
createFakeSeerPlayer, | ||
createFakeCupidPlayer, | ||
createFakeWitchPlayer, | ||
createFakeHunterPlayer, | ||
createFakeLittleGirlPlayer, | ||
createFakeGuardPlayer, | ||
createFakeAncientPlayer, | ||
createFakeScapegoatPlayer, | ||
createFakeIdiotPlayer, | ||
createFakeTwoSistersPlayer, | ||
createFakeThreeBrothersPlayer, | ||
createFakeFoxPlayer, | ||
createFakeBearTamerPlayer, | ||
createFakeStutteringJudgePlayer, | ||
createFakeRustySwordKnightPlayer, | ||
createFakeWildChildPlayer, | ||
createFakeDogWolfPlayer, | ||
createFakeThiefPlayer, | ||
createFakeAngelPlayer, | ||
createFakePiedPiperPlayer, | ||
createFakeRavenPlayer, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.