-
-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(game): game events from api #674
Conversation
Important Review skippedReview was skipped as selected files did not have any reviewable changes. Files selected but had no reviewable changes (1)
You can disable this status message by setting the WalkthroughThe recent changes focus on refactoring the game event handling system within the Vue.js application. Components have been updated to improve clarity and maintainability, with a shift from targeting last plays to emphasizing player interactions. New event types have been added, and existing ones have been renamed to enhance their semantic meaning. The updates also streamline the testing processes, ensuring robust validation of component behavior in various game scenarios. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant GameEventComponent
participant GameStore
User->>GameEventComponent: Trigger game event
GameEventComponent->>GameStore: Update current game state
GameStore-->>GameEventComponent: Provide updated player data
GameEventComponent->>User: Display updated game event
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Outside diff range, codebase verification and nitpick comments (4)
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMarkIsActiveEvent/GameScandalmongerMarkIsActiveEvent.vue (1)
1-3
: Consider adding a script and style section.The template is minimal and does not include any script or style sections. Ensure that the component is functional and styled appropriately in the context of the application.
<template> <div id="game-scandalmonger-mark-is-active-event"/> </template> <script> export default { name: "GameScandalmongerMarkIsActiveEvent", }; </script> <style scoped> #game-scandalmonger-mark-is-active-event { /* Add styles here */ } </style>app/components/shared/game/game-event/GameEventFlippingPlayersCard/game-event-flipping-players-card.types.ts (1)
4-6
: Consider adding comments for the type properties.Adding comments for the properties in the
GameEventFlippingPlayersCardProps
type can improve readability and maintainability.type GameEventFlippingPlayersCardProps = Omit<RoleFlippingImageProps, "definition" | "roleName" | "sizes"> & { /** * Array of players involved in the event */ players?: Player[]; };app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameStartsEvent/GameStartsEvent.vue (1)
18-18
: The import path forGameEventFlippingPlayerCard
is incorrect.The correct import path should be
~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.vue
. Please update the import statement accordingly.
- Current incorrect path:
~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard.vue
- Correct path:
~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.vue
Analysis chain
Verify the correctness of the updated import path.
The import path for
GameEventFlippingPlayerCard
has been updated. Ensure that the new path~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard.vue
is correct and the component functions as expected.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the existence and correctness of the updated import path. # Test: Check if the file exists at the new path. Expect: File exists. if [ -f "app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard.vue" ]; then echo "File exists." else echo "File does not exist." fiLength of output: 162
Script:
#!/bin/bash # Description: Search for the file GameEventFlippingPlayerCard.vue within the repository. fd GameEventFlippingPlayerCard.vueLength of output: 163
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePiedPiperHasCharmedEvent/GamePiedPiperHasCharmedEvent.vue (1)
19-19
: The component is not defined or exported correctly.The file
app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue
exists, but it does not contain anexport default
statement. This indicates that the component is not properly defined or exported, which will cause issues with the import inGamePiedPiperHasCharmedEvent.vue
.
- Ensure that the component
GameEventFlippingPlayersCard
is correctly defined and exported inGameEventFlippingPlayersCard.vue
.Analysis chain
Verify the correctness of the updated import path.
The import path for
GameEventFlippingLastPlayTargetsCard
has been updated. Ensure that the new path~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue
is correct and the component functions as expected.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the existence and correctness of the updated import path. # Test: Check if the file exists at the new path. Expect: File exists. if [ -f "app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue" ]; then echo "File exists." else echo "File does not exist." fiLength of output: 147
Script:
#!/bin/bash # Description: Verify the definition and export of the component in the updated import path. # Test: Check if the component is defined and exported in the file. Expect: Component is defined and exported. if grep -q 'export default' "app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue"; then echo "Component is defined and exported." else echo "Component is not defined or exported." fiLength of output: 211
Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files ignored due to path filters (15)
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameAccursedWolfFatherMayHaveInfectedEvent/__snapshots__/GameAccursedWolfFatherMayHaveInfectedEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameCupidHasCharmedEvent/__snapshots__/GameCupidHasCharmedEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameDeathEvent/__snapshots__/GameDeathEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameElderHasTakenRevengeEvent/__snapshots__/GameElderHasTakenRevengeEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/__snapshots__/GameIdiotIsSparedEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePiedPiperHasCharmedEvent/__snapshots__/GamePiedPiperHasCharmedEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePlayerDiesEvent/__snapshots__/GamePlayerDiesEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMayHaveMarkedEvent/__snapshots__/GameScandalmongerMayHaveMarkedEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSeerHasSeenEvent/__snapshots__/GameSeerHasSeenEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSheriffPromotionEvent/__snapshots__/GameSheriffPromotionEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameVillagerVillagerIntroductionEvent/__snapshots__/GameVillagerVillagerIntroductionEvent.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayerCard/GameEventFlippingLastPlayTargetsCard/__snapshots__/GameEventFlippingLastPlayTargetsCard.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlaySourcePlayersCard/__snapshots__/GameEventFlippingPlaySourcePlayersCard.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/__snapshots__/GameEventFlippingPlayerCard.nuxt.spec.ts.snap
is excluded by!**/*.snap
tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/__snapshots__/GameEventFlippingPlayersCard.nuxt.spec.ts.snap
is excluded by!**/*.snap
Files selected for processing (56)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameAccursedWolfFatherMayHaveInfectedEvent/GameAccursedWolfFatherMayHaveInfectedEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameActorMayHaveChosenCardEvent/GameActorMayHaveChosenCardEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameBearGrowlsEvent/GameBearGrowlsEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameBearSleepsEvent/GameBearSleepsEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameCupidHasCharmedEvent/GameCupidHasCharmedEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameDeathEvent/GameDeathEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameElderHasTakenRevengeEvent/GameElderHasTakenRevengeEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameEventsMonitorCurrentEvent.vue (2 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameFoxMayHaveSniffedEvent/GameFoxMayHaveSniffedEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/GameIdiotIsSparedEvent.vue (2 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePiedPiperHasCharmedEvent/GamePiedPiperHasCharmedEvent.vue (2 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMarkIsActiveEvent/GameScandalmongerMarkIsActiveEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMayHaveMarkedEvent/GameScandalmongerMayHaveMarkedEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSeerHasSeenEvent/GameSeerHasSeenEvent.vue (3 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSheriffPromotionEvent/GameSheriffPromotionEvent.vue (2 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameStartsEvent/GameStartsEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameThiefMayHaveChosenCardEvent/GameThiefMayHaveChosenCardEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameVillagerVillagerIntroductionEvent/GameVillagerVillagerIntroductionEvent.vue (2 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameWildChildHasTransformedEvent/GameWildChildHasTransformedEvent.vue (1 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameWolfHoundHasChosenSideEvent/GameWolfHoundHasChosenSideEvent.vue (2 hunks)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/game-events-monitor-current-event.types.ts (1 hunks)
- app/components/shared/game/game-event/GameEventFlippingPlayerCard/GameEventFlippingPlaySourcePlayersCard/GameEventFlippingPlaySourcePlayersCard.vue (1 hunks)
- app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.vue (1 hunks)
- app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue (1 hunks)
- app/components/shared/game/game-event/GameEventFlippingPlayersCard/game-event-flipping-players-card.types.ts (1 hunks)
- app/components/shared/game/game-event/GameEventWithTexts/GameEventWithTexts.vue (1 hunks)
- app/composables/api/game/constants/game-event/game-event.constants.ts (1 hunks)
- app/composables/api/game/game-event/game-event.class.ts (1 hunks)
- app/composables/api/game/types/game-event/game-event.types.ts (1 hunks)
- app/composables/api/game/types/game-history-record/game-history-record.class.ts (1 hunks)
- app/composables/api/game/types/game.class.ts (2 hunks)
- app/stores/game/game-event/useGameEventsStore.ts (3 hunks)
- app/stores/game/useGameStore.ts (3 hunks)
- docker/werewolves-assistant-sandbox-api/docker-compose.yml (1 hunks)
- modules/i18n/locales/en.json (2 hunks)
- modules/i18n/locales/fr.json (3 hunks)
- tests/acceptance/features/game/features/role/big-bad-wolf.feature (1 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameAccursedWolfFatherMayHaveInfectedEvent/GameAccursedWolfFatherMayHaveInfectedEvent.nuxt.spec.ts (4 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameCupidHasCharmedEvent/GameCupidHasCharmedEvent.nuxt.spec.ts (1 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameDeathEvent/GameDeathEvent.nuxt.spec.ts (4 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameElderHasTakenRevengeEvent/GameElderHasTakenRevengeEvent.nuxt.spec.ts (4 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameEventsMonitorCurrentEvent.nuxt.spec.ts (15 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/GameIdiotIsSparedEvent.nuxt.spec.ts (4 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePiedPiperHasCharmedEvent/GamePiedPiperHasCharmedEvent.nuxt.spec.ts (4 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMayHaveMarkedEvent/GameScandalmongerMayHaveMarkedEvent.nuxt.spec.ts (1 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSeerHasSeenEvent/GameSeerHasSeenEvent.nuxt.spec.ts (3 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSheriffPromotionEvent/GameSheriffPromotionEvent.nuxt.spec.ts (5 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameStartsEvent/GameStartsEvent.nuxt.spec.ts (1 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameVillagerVillagerIntroductionEvent/GameVillagerVillagerIntroductionEvent.nuxt.spec.ts (5 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameWolfHoundHasChosenSideEvent/GameWolfHoundHasChosenSideEvent.nuxt.spec.ts (9 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorFooter/GameEventsMonitorFooter.nuxt.spec.ts (14 hunks)
- tests/unit/specs/components/pages/game/GamePlaying/GamePlaying.nuxt.spec.ts (2 hunks)
- tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlaySourcePlayersCard/GameEventFlippingPlaySourcePlayersCard.nuxt.spec.ts (1 hunks)
- tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.nuxt.spec.ts (1 hunks)
- tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.nuxt.spec.ts (1 hunks)
- tests/unit/specs/components/shared/game/game-event/GameEventWithTexts/GameEventWithTexts.nuxt.spec.ts (1 hunks)
Files not processed due to max files limit (7)
- tests/unit/specs/composables/api/game/game-event/game-event.class.spec.ts
- tests/unit/specs/stores/game/game-event/useGameEventsStore.spec.ts
- tests/unit/specs/stores/game/useGameStore.spec.ts
- tests/unit/utils/factories/composables/api/game/game-event/game-event.factory.ts
- tests/unit/utils/factories/composables/api/game/game-event/useGameEventsGenerator.spec.ts
- tests/unit/utils/factories/composables/api/game/game-history-record/game-history-record.factory.ts
- tests/unit/utils/factories/composables/api/game/game.factory.ts
Files skipped from review due to trivial changes (13)
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameActorMayHaveChosenCardEvent/GameActorMayHaveChosenCardEvent.vue
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameBearGrowlsEvent/GameBearGrowlsEvent.vue
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameBearSleepsEvent/GameBearSleepsEvent.vue
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameFoxMayHaveSniffedEvent/GameFoxMayHaveSniffedEvent.vue
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameThiefMayHaveChosenCardEvent/GameThiefMayHaveChosenCardEvent.vue
- app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameWildChildHasTransformedEvent/GameWildChildHasTransformedEvent.vue
- app/components/shared/game/game-event/GameEventFlippingPlayerCard/GameEventFlippingPlaySourcePlayersCard/GameEventFlippingPlaySourcePlayersCard.vue
- app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.vue
- app/composables/api/game/types/game-event/game-event.types.ts
- modules/i18n/locales/en.json
- tests/acceptance/features/game/features/role/big-bad-wolf.feature
- tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlaySourcePlayersCard/GameEventFlippingPlaySourcePlayersCard.nuxt.spec.ts
- tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.nuxt.spec.ts
Additional comments not posted (123)
app/components/shared/game/game-event/GameEventFlippingPlayersCard/game-event-flipping-players-card.types.ts (2)
1-2
: LGTM!The import statements are correct and align with the project structure.
8-8
: LGTM!The export statement is correct and aligns with the project structure.
app/composables/api/game/game-event/game-event.class.ts (1)
2-2
: LGTM!The updated import path for
GameEventType
aligns with the composables structure and improves dependency management.app/composables/api/game/constants/game-event/game-event.constants.ts (3)
6-6
: Renaming improves clarity.The event type
"player-dies"
has been renamed to"death"
, which simplifies the terminology.
9-9
: Renaming enhances semantic meaning.The event type
"scandalmonger-has-marked"
has been renamed to"scandalmonger-may-have-marked"
, indicating a potential rather than a definitive action.
16-22
: New event types expand gameplay interactions.The new event types
"bear-growls"
,"bear-sleeps"
,"fox-may-have-sniffed"
,"thief-may-have-chosen-card"
,"wild-child-has-transformed"
,"actor-may-have-chosen-card"
, and"scandalmonger-mark-is-active"
enhance the game's mechanics by allowing for more nuanced interactions and scenarios.docker/werewolves-assistant-sandbox-api/docker-compose.yml (1)
3-3
: Update image version and verify compatibility.The image version has been updated from
v1.33.0
tov1.34.1
, which likely includes bug fixes, new features, or performance improvements.Ensure that the new version is compatible with the existing configuration.
app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue (2)
1-14
: Template section is well-structured.The template section defines the structure of the component using appropriate classes for styling and correctly passes props to the
GameEventFlippingPlayerCard
component.
16-24
: Script section is well-organized.The script section uses TypeScript for type safety, imports necessary components and types, and correctly defines props and computed properties.
app/components/shared/game/game-event/GameEventWithTexts/GameEventWithTexts.vue (1)
30-32
: Good addition of the conditional check.The early return if
newGameEventText
isundefined
improves the robustness of the function by ensuring only valid texts trigger the event emission.app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/game-events-monitor-current-event.types.ts (2)
2-2
: Appropriate update to the import type.Replacing
GamePlayerDiesEvent
withGameDeathEvent
likely reflects a broader conceptual update in event categorization.
11-13
: Good addition of the new typeCurrentGameEventProps
.This enhancement improves flexibility and allows for more complex event handling.
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameElderHasTakenRevengeEvent/GameElderHasTakenRevengeEvent.vue (3)
7-9
: Good update to the component name and:players
prop.Renaming to
GameEventFlippingPlayersCard
and directly usingevent.players
accommodates multiple players and simplifies the logic.
17-17
: Good addition of the new import typeCurrentGameEventProps
.This addition suggests a more structured approach to handling props.
29-32
: Simplified the computed propertygameElderHasTakenRevengeEventTexts
.This change streamlines the logic but modifies the conditions under which certain UI elements are displayed.
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameCupidHasCharmedEvent/GameCupidHasCharmedEvent.vue (2)
17-23
: LGTM! But verify the imports.The code changes are approved.
However, ensure that the imports are correct and the paths are valid.
Verification successful
Imports are correct.
The imported files
GameEventFlippingPlayersCard.vue
andgame-events-monitor-current-event.types.ts
exist at the specified paths.
app/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/game-events-monitor-current-event.types.ts
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the imports are correct and the paths are valid. # Test: Search for the imported files to ensure they exist. fd 'GameEventFlippingPlayersCard.vue' | grep 'GameEventFlippingPlayersCard.vue' fd 'game-events-monitor-current-event.types' | grep 'game-events-monitor-current-event.types'Length of output: 398
7-9
: Verify the new prop:players
is correctly passed.Ensure that the
players
prop is correctly passed and contains the expected data.app/composables/api/game/types/game-history-record/game-history-record.class.ts (1)
34-36
: LGTM! But verify the new propertyswitchedSidePlayers
.The code changes are approved.
However, ensure that the new property
switchedSidePlayers
is correctly used and integrated within the class.Verification successful
LGTM! But verify the new property
switchedSidePlayers
.The code changes are approved.
However, ensure that the new property
switchedSidePlayers
is correctly used and integrated within the class.
- The
switchedSidePlayers
property is correctly defined and integrated within theGameHistoryRecord
class.- The property is also correctly used in the test factory file.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the new property `switchedSidePlayers` is correctly used and integrated within the class. # Test: Search for the usage of `switchedSidePlayers` to ensure it is correctly used. rg --type ts 'switchedSidePlayers'Length of output: 318
Script:
#!/bin/bash # Description: Verify the integration of `switchedSidePlayers` within the `GameHistoryRecord` class. # Test: Search for the class `GameHistoryRecord` to inspect its methods and usage of `switchedSidePlayers`. ast-grep --lang typescript --pattern $'class GameHistoryRecord { $$$ }' -A 20Length of output: 4943
Script:
#!/bin/bash # Description: Verify the usage of `switchedSidePlayers` in the test file. # Test: Search for the usage of `switchedSidePlayers` in the test file to ensure it is correctly used. rg --type ts 'switchedSidePlayers' -A 5 tests/unit/utils/factories/composables/api/game/game-history-record/game-history-record.factory.tsLength of output: 403
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameAccursedWolfFatherMayHaveInfectedEvent/GameAccursedWolfFatherMayHaveInfectedEvent.vue (2)
17-29
: LGTM! But verify the imports and computed property.The code changes are approved.
However, ensure that the imports are correct, the props are properly defined, and the computed property is correctly implemented.
Verification successful
Verification Successful: Imports and Computed Property Implementation
The imports are correct, and the computed property
hasAccursedWolfFatherInfectedAnyone
is correctly implemented.
GameEventFlippingPlayersCard.vue
andgame-events-monitor-current-event.types.ts
imports are valid.- The computed property
hasAccursedWolfFatherInfectedAnyone
is properly defined and used within the Vue component.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the imports are correct, the props are properly defined, and the computed property is correctly implemented. # Test: Search for the imported files to ensure they exist. fd 'GameEventFlippingPlayersCard.vue' | grep 'GameEventFlippingPlayersCard.vue' fd 'game-events-monitor-current-event.types' | grep 'game-events-monitor-current-event.types' # Test: Search for the computed property `hasAccursedWolfFatherInfectedAnyone` to ensure it is correctly implemented. rg --type vue 'hasAccursedWolfFatherInfectedAnyone'Length of output: 478
Script:
#!/bin/bash # Description: Verify the computed property 'hasAccursedWolfFatherInfectedAnyone' is correctly implemented. # Test: Search for the computed property `hasAccursedWolfFatherInfectedAnyone` in Vue files. rg 'hasAccursedWolfFatherInfectedAnyone' --glob '**/*.vue' -A 5Length of output: 2721
7-9
: Verify the new prop:players
is correctly passed.Ensure that the
players
prop is correctly passed and contains the expected data.Verification successful
Verify the new prop
:players
is correctly passed.The
players
prop is correctly defined and used within theGameAccursedWolfFatherMayHaveInfectedEvent
component, ensuring it contains the expected data.
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameAccursedWolfFatherMayHaveInfectedEvent/GameAccursedWolfFatherMayHaveInfectedEvent.vue
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the `players` prop is correctly passed to `GameEventFlippingPlayersCard`. # Test: Search for the usage of `GameAccursedWolfFatherMayHaveInfectedEvent` to ensure `players` prop is passed correctly. rg --type vue -A 5 $'<GameAccursedWolfFatherMayHaveInfectedEvent'Length of output: 94
Script:
#!/bin/bash # Description: Verify the `players` prop is correctly passed to `GameEventFlippingPlayersCard`. # Test: Search for the usage of `GameAccursedWolfFatherMayHaveInfectedEvent` to ensure `players` prop is passed correctly. rg --glob '*.vue' -A 5 '<GameAccursedWolfFatherMayHaveInfectedEvent'Length of output: 70
Script:
#!/bin/bash # Description: Verify the `players` prop is correctly passed to `GameEventFlippingPlayersCard`. # Step 1: Search for the definition of `GameAccursedWolfFatherMayHaveInfectedEvent` component. rg --glob '*.vue' 'GameAccursedWolfFatherMayHaveInfectedEvent' # Step 2: Search for the usage of `GameAccursedWolfFatherMayHaveInfectedEvent` component across the codebase. rg --glob '*.vue' '<GameAccursedWolfFatherMayHaveInfectedEvent' # Step 3: Verify the `players` prop within the `GameAccursedWolfFatherMayHaveInfectedEvent` component. rg --glob '*.vue' -A 5 'props: { players'Length of output: 1405
Script:
#!/bin/bash # Description: Verify the `players` prop is correctly passed to `GameEventFlippingPlayersCard`. # Step 1: Search for the definition of `GameAccursedWolfFatherMayHaveInfectedEvent` component. rg --glob '*.vue' 'GameAccursedWolfFatherMayHaveInfectedEvent' # Step 2: Search for the usage of `GameAccursedWolfFatherMayHaveInfectedEvent` component across the codebase. rg --glob '*.vue' '<GameAccursedWolfFatherMayHaveInfectedEvent' # Step 3: Verify the `players` prop within the `GameAccursedWolfFatherMayHaveInfectedEvent` component. rg --glob '*.vue' -A 5 'props.*players'Length of output: 21092
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameVillagerVillagerIntroductionEvent/GameVillagerVillagerIntroductionEvent.vue (3)
9-9
: LGTM!The ID change aligns with the new event type and improves the semantic meaning.
24-31
: LGTM!The props declaration and computed properties are correctly implemented.
18-19
: LGTM! But verify the new imports.The new imports and props declaration improve type safety and modularity.
However, ensure that the new imports are correctly resolved in the codebase.
Verification successful
The new imports are correctly resolved.
The import paths for
CurrentGameEventProps
andGameEventFlippingPlayerCard
are valid and found in multiple files across the codebase.
~/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/game-events-monitor-current-event.types
~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.vue
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the new imports are correctly resolved in the codebase. # Test: Search for the import paths. Expect: Only valid import paths. rg --files-with-matches '~/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/game-events-monitor-current-event.types' rg --files-with-matches '~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayerCard/GameEventFlippingPlayerCard.vue'Length of output: 6126
app/composables/api/game/types/game.class.ts (1)
2-2
: LGTM! But verify the new property usage.The new property enhances the functionality of the
Game
class.However, ensure that the new property is correctly utilized in the codebase.
Verification successful
The new
events
property is correctly utilized in the codebase.The property is extensively used in the test files, ensuring its functionality is well-covered.
tests/unit/specs/stores/game/game-event/useGameEventsStore.spec.ts
tests/unit/utils/factories/composables/api/game/game.factory.ts
tests/unit/specs/components/pages/about/AboutWerewolvesAssistant/AboutWerewolvesAssistant.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GamePlaying.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorFooter/GameEventsMonitorFooter.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMayHaveMarkedEvent/GameScandalmongerMayHaveMarkedEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameEventsMonitorCurrentEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameElderHasTakenRevengeEvent/GameElderHasTakenRevengeEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameVillagerVillagerIntroductionEvent/GameVillagerVillagerIntroductionEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameDeathEvent/GameDeathEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameWolfHoundHasChosenSideEvent/GameWolfHoundHasChosenSideEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSheriffPromotionEvent/GameSheriffPromotionEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSeerHasSeenEvent/GameSeerHasSeenEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/GameIdiotIsSparedEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePiedPiperHasCharmedEvent/GamePiedPiperHasCharmedEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameCupidHasCharmedEvent/GameCupidHasCharmedEvent.nuxt.spec.ts
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameAccursedWolfFatherMayHaveInfectedEvent/GameAccursedWolfFatherMayHaveInfectedEvent.nuxt.spec.ts
tests/acceptance/features/game/step-definitions/game-options/game-options.given-steps.ts
tests/acceptance/features/game/step-definitions/game-event/game-event.when-steps.ts
app/stores/game/game-event/useGameEventsStore.ts
app/composables/api/game/types/game.class.ts
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the new property usage in the codebase. # Test: Search for the new property usage. Expect: Only valid usage. rg --type python -A 5 $'events'Length of output: 61
Script:
#!/bin/bash # Description: Verify the new property usage in the codebase. # Test: Search for the new property usage. Expect: Only valid usage. rg --type typescript -A 5 'events'Length of output: 69
Script:
#!/bin/bash # Description: Verify the new property usage in the codebase. # Test: Search for the new property usage. Expect: Only valid usage. rg --type-add 'ts:*.ts' -t ts -A 5 'events'Length of output: 64576
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/GameIdiotIsSparedEvent.vue (4)
8-11
: LGTM!The component name change aligns with the new logic and the players prop is correctly updated.
25-32
: LGTM!The props declaration and computed properties are correctly implemented.
45-45
: LGTM!The modified function parameter type prevents potential runtime errors.
19-20
: LGTM! But verify the new imports.The new imports and props declaration improve type safety and modularity.
However, ensure that the new imports are correctly resolved in the codebase.
Verification successful
The new imports are correctly resolved in the codebase.
The import paths for
CurrentGameEventProps
andGameEventFlippingPlayersCard
are valid and correctly integrated into multiple files, includingGameIdiotIsSparedEvent.vue
.
CurrentGameEventProps
is found in:
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/GameIdiotIsSparedEvent.vue
- Other related component files and test specs.
GameEventFlippingPlayersCard
is found in:
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/GameIdiotIsSparedEvent.vue
- Other related component files and test specs.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the new imports are correctly resolved in the codebase. # Test: Search for the import paths. Expect: Only valid import paths. rg --files-with-matches '~/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/game-events-monitor-current-event.types' rg --files-with-matches '~/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.vue'Length of output: 5565
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMayHaveMarkedEvent/GameScandalmongerMayHaveMarkedEvent.vue (5)
3-3
: Update the component ID.The component ID has been updated to reflect the new semantics of the event.
7-9
: Update the imported component and its ID.The component
GameEventFlippingPlayersCard
is now used instead ofGameEventFlippingLastPlayTargetsCard
, and the ID has been updated accordingly.
17-18
: Update the imports.The import statements have been updated to reflect the new component and type.
23-23
: Define props usingCurrentGameEventProps
.Props are now defined using
CurrentGameEventProps
, enhancing type safety.
30-38
: Update the computed properties.The logic for determining if the scandalmonger has marked anyone has been updated to directly check against the
props.event.players
array. The text returned ingameScandalmongerHasMarkedEventTexts
has been updated to align with the new semantics.app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSheriffPromotionEvent/GameSheriffPromotionEvent.vue (4)
7-9
: Update the imported component and the:players
binding.The component
GameEventFlippingPlayersCard
is now used instead ofGameEventFlippingPlayerCard
, and the:players
binding now utilizesevent.players
instead ofsheriffInPlayers
.
18-19
: Update the imports.The import statements have been updated to reflect the new component and type.
25-26
: Define props usingCurrentGameEventProps
.Props are now defined using
CurrentGameEventProps
, enhancing type safety.
35-36
: Update the computed propertysheriffInPlayers
.The variable
sheriffInPlayers
is now computed from theprops.event.players
array, specifically targeting the first player in the array.app/stores/game/game-event/useGameEventsStore.ts (4)
2-2
: Update the import statement.The import statement for
GameEvent
has been added to enhance type safety.
12-12
: Refactor thegameEvents
state.The
gameEvents
state is now a computed property that derives its value from thegameStore
, enhancing reactivity.
18-18
: Refactor theresetGameEvents
function.The
resetGameEvents
function has been replaced withresetGameEventIndex
, which now only resets the index of the current game event.
23-24
: Add a null check forgameEvents
.The
goToNextGameEvent
function now includes a check for the existence ofgameEvents.value
, preventing potential runtime errors.app/stores/game/useGameStore.ts (2)
61-61
: LGTM! But verify the functionality ofresetGameEventIndex
.The function now calls
resetGameEventIndex
instead of generating new game events. This change simplifies the function and might improve performance.However, ensure that
resetGameEventIndex
correctly handles the event index reset.
36-36
: LGTM! But verify the functionality ofresetGameEventIndex
.The function now calls
resetGameEventIndex
instead of generating new game events. This change simplifies the function and might improve performance.However, ensure that
resetGameEventIndex
correctly handles the event index reset.Verification successful
Verification successful for
resetGameEventIndex
.The
resetGameEventIndex
function correctly resets the game event index by settingcurrentGameEventIndex.value
to 0. This behavior is confirmed through unit tests.
- Implementation:
app/stores/game/game-event/useGameEventsStore.ts
- Tests:
tests/unit/specs/stores/game/game-event/useGameEventsStore.spec.ts
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the functionality of `resetGameEventIndex`. # Test: Search for the implementation of `resetGameEventIndex`. Expect: Implementation exists and correctly handles the event index reset. rg --type ts -A 5 $'resetGameEventIndex'Length of output: 5314
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePiedPiperHasCharmedEvent/GamePiedPiperHasCharmedEvent.vue (3)
26-26
: LGTM!The change adds type safety to the props by defining their type as
CurrentGameEventProps
.
37-37
: LGTM!The function computes the charmed players based on the event's properties, ensuring that the displayed players are directly linked to the event data.
43-52
: LGTM!The function generates text based on the charmed players, ensuring that the displayed messages accurately reflect the current state of the game.
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameDeathEvent/GameDeathEvent.vue (2)
1-16
: LGTM! The template structure is well-defined.The template uses
GameEventWithTexts
andGameEventFlippingPlayersCard
components effectively.
18-59
: LGTM! The script section is well-structured.The script defines the necessary imports, props, computed properties, and event handling logic effectively.
However, ensure that the
playSoundEffect
function is correctly implemented and used elsewhere in the codebase.Verification successful
The
playSoundEffect
function is correctly implemented and used.The function is defined in
app/stores/audio/useAudioStore.ts
and is extensively tested across various unit tests, ensuring its correct behavior.
app/stores/audio/useAudioStore.ts
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the implementation and usage of the `playSoundEffect` function. # Test: Search for the function implementation and usage. Expect: Correct implementation and usage. rg --type ts -A 5 $'playSoundEffect'Length of output: 66263
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSeerHasSeenEvent/GameSeerHasSeenEvent.vue (2)
Line range hint
1-12
:
LGTM! The template structure is well-defined.The template uses
GameEventWithTexts
andGameEventFlippingPlayersCard
components effectively.
Line range hint
18-56
:
LGTM! The script section is well-structured.The script defines the necessary imports, props, computed properties, and event handling logic effectively.
However, ensure that the
playSoundEffect
function is correctly implemented and used elsewhere in the codebase.Verification successful
The
playSoundEffect
function is correctly implemented and used.The function
playSoundEffect
is defined inapp/stores/audio/useAudioStore.ts
and is utilized across multiple test files to verify its behavior. This indicates that the function is well-integrated and its usage is thoroughly tested.
- Implementation found in
app/stores/audio/useAudioStore.ts
.- Usage verified in multiple test files.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the implementation and usage of the `playSoundEffect` function. # Test: Search for the function implementation and usage. Expect: Correct implementation and usage. rg --type ts -A 5 $'playSoundEffect'Length of output: 66263
tests/unit/specs/components/shared/game/game-event/GameEventFlippingPlayersCard/GameEventFlippingPlayersCard.nuxt.spec.ts (4)
30-33
: LGTM! The snapshot test is correctly set up.The test ensures that the component renders as expected and matches the snapshot.
35-41
: LGTM! The test case for passing players when defined is correctly set up.The test ensures that the players prop is passed as expected when players are defined.
42-47
: LGTM! The test case for passing empty array when players are undefined is correctly set up.The test ensures that the players prop is passed as an empty array when players are undefined.
26-28
: LGTM! The beforeEach setup is correctly set up.The beforeEach block ensures that the component is mounted before each test case.
tests/unit/specs/components/shared/game/game-event/GameEventWithTexts/GameEventWithTexts.nuxt.spec.ts (2)
59-60
: LGTM! The type specification adds clarity and type safety.The change to explicitly specify the expected type as
string[][]
is a good practice.
62-67
: LGTM! The new test case improves robustness.The addition of the test case to verify that the component does not emit the "gameEventTextChange" event when the emitted text is
undefined
enhances the robustness of the event handling logic.tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameCupidHasCharmedEvent/GameCupidHasCharmedEvent.nuxt.spec.ts (4)
1-2
: LGTM! The utility functions improve test setup.The addition of the
createFakeGameEvent
andcreateFakeSeerAlivePlayer
utility functions streamlines the setup of test cases, enhancing clarity and maintainability.
12-15
: LGTM! The constant improves clarity and reusability.The addition of the
defaultInLovePlayers
constant enhances the clarity and reusability of the test data.
16-21
: LGTM! ThedefaultProps
object improves test structure.The addition of the
defaultProps
object ensures a consistent and expected setup for each test, enhancing the structure and readability of the tests.
26-29
: LGTM! The modification ensures correct props.The modification to the
mountGameCupidHasCharmedEventComponent
function ensures that the component is mounted with the correct props, improving the consistency of the tests.tests/unit/specs/components/pages/game/GamePlaying/GamePlaying.nuxt.spec.ts (3)
2-2
: LGTM! The utility function improves test setup.The addition of the
createFakeGameEvent
utility function streamlines the setup of test cases, enhancing clarity and maintainability.
13-13
: LGTM! The shift touseGameStore
improves state management.The shift from using
useGameEventsStore
touseGameStore
consolidates game-related state management under a single store, enhancing the clarity and maintainability of the test code.
50-51
: LGTM! Accessinggame.events
fromgameStore
improves consistency.The change to access
game.events
fromgameStore
ensures that the game events are accessed from the consolidated game store, enhancing the consistency of the test code.app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameWolfHoundHasChosenSideEvent/GameWolfHoundHasChosenSideEvent.vue (3)
40-40
: LGTM!The change aligns the logic with the updated variable naming.
47-47
: LGTM!The change aligns the logic with the updated variable naming.
33-33
: Verify the assumption about the first player.Ensure that the first player in
props.event.players
is always the wolf hound. If this assumption is incorrect, the logic may need to be adjusted.tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameElderHasTakenRevengeEvent/GameElderHasTakenRevengeEvent.nuxt.spec.ts (2)
2-2
: LGTM!The addition of the import statement for
createFakeGameEvent
enhances the test setup.
19-24
: LGTM!The
defaultProps
object enhances the clarity and reusability of the test setup.tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameAccursedWolfFatherMayHaveInfectedEvent/GameAccursedWolfFatherMayHaveInfectedEvent.nuxt.spec.ts (2)
2-2
: LGTM!The addition of the import statement for
createFakeGameEvent
enhances the test setup.
22-27
: LGTM!The
defaultProps
object enhances the clarity and reusability of the test setup.tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GamePiedPiperHasCharmedEvent/GamePiedPiperHasCharmedEvent.nuxt.spec.ts (3)
2-2
: Import statement forcreateFakeGameEvent
looks good.The import statement is correctly added and aligns with the new functionality introduced.
24-29
: Declaration ofdefaultProps
looks good.The
defaultProps
object is well-defined and correctly usescreateFakeGameEvent
to set up the test scenario.
101-114
: New test case for handling no players in the event looks good.The test case is well-structured and covers an important edge case, ensuring the component behaves correctly when no players are present but the game options dictate that charmed players should be revealed.
app/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameEventsMonitorCurrentEvent.vue (5)
14-14
: Update to:key
binding looks good.Changing the
:key
binding tocurrentGameEvent?.type
improves the uniqueness of the key and potentially optimizes rendering performance.
26-27
: Import statements for new event components look good.The import statements for
GameActorMayHaveChosenCardEvent
,GameBearGrowlsEvent
, andGameBearSleepsEvent
are correctly added.
30-37
: Import statements for updated event components look good.The import statements for
GameDeathEvent
andGameScandalmongerMayHaveMarkedEvent
are correctly updated to reflect the new naming conventions.
41-44
: Import statements for additional new event components look good.The import statements for
GameThiefMayHaveChosenCardEvent
andGameWildChildHasTransformedEvent
are correctly added.
58-74
: Update tocurrentGameEventTypeComponent
computed property looks good.The updates ensure that the correct component is rendered based on the current game event type, enhancing the component's ability to dynamically respond to a wider variety of game events.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameVillagerVillagerIntroductionEvent/GameVillagerVillagerIntroductionEvent.nuxt.spec.ts (4)
2-2
: Import statement forcreateFakeGameEvent
looks good.The import statement is correctly added and aligns with the new functionality introduced.
21-26
: Declaration ofdefaultProps
looks good.The
defaultProps
object is well-defined and correctly usescreateFakeGameEvent
to set up the test scenario.
82-88
: Updated test case for handling no players in the event looks good.The test case is well-structured and covers an important edge case, ensuring the component behaves correctly when no players are present in the event.
105-127
: Updated test case for rendering the flipping card component looks good.The test case is well-structured and ensures that the component behaves correctly based on the presence of players in the event.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameIdiotIsSparedEvent/GameIdiotIsSparedEvent.nuxt.spec.ts (6)
2-2
: LGTM! The new utility function improves test setup.The
createFakeGameEvent
utility function enhances the readability and maintainability of the test setup.
16-22
: LGTM! The new defaultProps setup is clear and maintainable.The
defaultProps
object is now more consistent and clear, improving the initialization of component properties during tests.
38-38
: LGTM! The new props structure is clear.The updated props structure in the
mountGameIdiotIsSparedEventComponent
function improves the clarity of the test cases.
45-46
: LGTM! The game store is correctly populated.The
beforeEach
block now ensures the game store is correctly populated before each test runs.
75-75
: LGTM! The new test case improves robustness.The new test case for scenarios where the idiot player is not found improves the robustness of the component.
97-104
: LGTM! The new test case ensures correct behavior.The new test case ensures that the component behaves correctly when the idiot player is not found.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSeerHasSeenEvent/GameSeerHasSeenEvent.nuxt.spec.ts (6)
2-6
: LGTM! The new utility functions improve test setup.The
createFakeGameEvent
and other utility functions enhance the readability and maintainability of the test setup.
20-25
: LGTM! The new defaultProps setup is clear and maintainable.The
defaultProps
object is now more consistent and clear, improving the initialization of component properties during tests.
35-35
: LGTM! The new props structure is clear.The updated props structure in the
mountGameSeerHasSeenEventComponent
function improves the clarity of the test cases.
42-43
: LGTM! The game store is correctly populated.The
beforeEach
block now ensures the game store is correctly populated before each test runs.
73-80
: LGTM! The new test case improves robustness.The new test case for scenarios where no players are present improves the robustness of the component.
89-95
: LGTM! The new test case improves robustness.The new test case for scenarios where players in the event are undefined improves the robustness of the component.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameStartsEvent/GameStartsEvent.nuxt.spec.ts (3)
7-7
: LGTM! The import statement has been updated correctly.The import statement for the
GameEventFlippingPlayerCard
component has been updated to reflect the new directory structure.
7-7
: LGTM! The new test cases ensure correct behavior.The new test cases ensure that the component behaves correctly under various game start scenarios.
7-7
: LGTM! The new test case ensures correct behavior.The new test case ensures that all players are passed to the flipping player card component when rendered.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameScandalmongerMayHaveMarkedEvent/GameScandalmongerMayHaveMarkedEvent.nuxt.spec.ts (6)
1-12
: LGTM!The imports are necessary and correctly used in the file.
15-26
: LGTM!The describe block and constants are correctly defined and used in the tests.
27-38
: LGTM!The mount function and beforeEach block are correctly defined and used.
40-50
: LGTM!The snapshot tests are correctly defined and cover various rendering scenarios.
52-71
: LGTM!The sound effect tests are correctly defined and cover various scenarios.
Line range hint
74-164
: LGTM!The game event texts and flipping card tests are correctly defined and cover various scenarios.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameDeathEvent/GameDeathEvent.nuxt.spec.ts (6)
1-19
: LGTM!The imports are necessary and correctly used in the file.
20-29
: LGTM!The describe block and constants are correctly defined and used in the tests.
Line range hint
30-52
: LGTM!The mount function and beforeEach block are correctly defined and used.
Line range hint
40-49
: LGTM!The snapshot tests are correctly defined and cover various rendering scenarios.
Line range hint
53-125
: LGTM!The sound effect tests are correctly defined and cover various scenarios.
Line range hint
63-142
: LGTM!The game event texts and flipping card tests are correctly defined and cover various scenarios.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameSheriffPromotionEvent/GameSheriffPromotionEvent.nuxt.spec.ts (5)
Line range hint
1-19
: LGTM!The imports are necessary and correctly used in the file.
22-29
: LGTM!The describe block and constants are correctly defined and used in the tests.
Line range hint
30-52
: LGTM!The mount function and beforeEach block are correctly defined and used.
Line range hint
53-58
: LGTM!The snapshot tests are correctly defined and cover various rendering scenarios.
Line range hint
74-172
: LGTM!The game event texts and flipping card tests are correctly defined and cover various scenarios.
tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorFooter/GameEventsMonitorFooter.nuxt.spec.ts (2)
3-4
: LGTM!The imports for
createFakeGameEvent
andcreateFakeGame
are appropriate for creating mock game events and games.
Line range hint
26-40
: LGTM!The initialization of
defaultGame
and its assignment in thebeforeEach
setup improves test consistency and maintainability.tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameWolfHoundHasChosenSideEvent/GameWolfHoundHasChosenSideEvent.nuxt.spec.ts (2)
2-2
: LGTM!The import for
createFakeGameEvent
is appropriate for creating mock game events.
Line range hint
26-40
: LGTM!The initialization of
defaultProps
and its assignment in thebeforeEach
setup improves test clarity and maintainability.tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorCurrentEvent/GameEventsMonitorCurrentEvent.nuxt.spec.ts (2)
2-26
: LGTM!The imports for
createFakeGameEvent
and new event components are appropriate for creating mock game events and testing new event types.
Line range hint
36-63
: LGTM!The initialization of
defaultGame
and its assignment in thebeforeEach
setup improves test consistency and maintainability.modules/i18n/locales/fr.json (3)
1343-1344
: Verify the correctness of the updated translation.The localization string for "seerHasSeenRole" has been updated. Ensure that the translation is accurate and consistent with the surrounding context.
Verification successful
Verified: The translation for "seerHasSeenRole" is accurate and consistent.
The French translation "La Voyante a vu {role} !" correctly translates the English version "The Seer has seen {role}!" and maintains consistency within the file.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the correctness of the updated translation for "seerHasSeenRole". # Test: Search for the updated translation string. Expect: Consistent usage in the context. rg --type json -A 5 $'"seerHasSeenRole"'Length of output: 1182
Line range hint
1356-1360
:
Verify the usage of the new event identifier.The event identifier "GameScandalmongerHasMarkedEvent" has been renamed to "GameScandalmongerMayHaveMarkedEvent". Ensure that this new identifier is consistently used throughout the codebase.
Verification successful
The event identifier "GameScandalmongerHasMarkedEvent" has been successfully renamed to "GameScandalmongerMayHaveMarkedEvent" and is consistently used throughout the codebase.
- The new identifier is present in both
modules/i18n/locales/en.json
andmodules/i18n/locales/fr.json
.- The old identifier "GameScandalmongerHasMarkedEvent" is no longer found in the codebase.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of the new event identifier "GameScandalmongerMayHaveMarkedEvent". # Test: Search for the new event identifier. Expect: Only occurrences of the new identifier. rg --type json -A 5 $'"GameScandalmongerMayHaveMarkedEvent"'Length of output: 1272
Script:
#!/bin/bash # Description: Verify that the old event identifier "GameScandalmongerHasMarkedEvent" is no longer present in the codebase. # Test: Search for the old event identifier. Expect: No occurrences of the old identifier. rg --type json -A 5 $'"GameScandalmongerHasMarkedEvent"'Length of output: 57
Line range hint
1330-1334
:
Verify the usage of the new event identifier.The event identifier "GamePlayerDiesEvent" has been renamed to "GameDeathEvent". Ensure that this new identifier is consistently used throughout the codebase.
Verification successful
Verification successful: The event identifier "GamePlayerDiesEvent" has been successfully replaced with "GameDeathEvent" throughout the codebase.
- The new identifier "GameDeathEvent" is present in both French and English localization files.
- The old identifier "GamePlayerDiesEvent" is no longer present in JSON, JavaScript, or TypeScript files.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of the new event identifier "GameDeathEvent". # Test: Search for the new event identifier. Expect: Only occurrences of the new identifier. rg --type json -A 5 $'"GameDeathEvent"'Length of output: 1185
Script:
#!/bin/bash # Description: Verify that the old event identifier "GamePlayerDiesEvent" is no longer used in the codebase. # Test: Search for the old event identifier. Expect: No occurrences of the old identifier. rg --type json -A 5 $'"GamePlayerDiesEvent"'Length of output: 45
Script:
#!/bin/bash # Description: Verify that the old event identifier "GamePlayerDiesEvent" is no longer used in the codebase. # Test: Search for the old event identifier in non-JSON files. Expect: No occurrences of the old identifier. rg --type js,ts -A 5 $'"GamePlayerDiesEvent"'Length of output: 76
Script:
#!/bin/bash # Description: Verify that the old event identifier "GamePlayerDiesEvent" is no longer used in the codebase. # Test: Search for the old event identifier in JavaScript and TypeScript files. Expect: No occurrences of the old identifier. rg --type js -A 5 $'"GamePlayerDiesEvent"' rg --type ts -A 5 $'"GamePlayerDiesEvent"'Length of output: 87
Quality Gate passedIssues Measures |
## [1.27.0](v1.26.0...v1.27.0) (2024-08-07) ### 🚀 Features * **bear-tamer:** bear tamer events ([#677](#677)) ([3d890fd](3d890fd)) * **docker:** docker file and push to hub ([#708](#708)) ([3e1a22d](3e1a22d)) * **elder:** elder has taken revenge event ([#656](#656)) ([25f46d5](25f46d5)) * **fox:** game events ([#692](#692)) ([0de3432](0de3432)) * **game-lobby:** additional cards manager ([#706](#706)) ([5eb8ce3](5eb8ce3)) * **game-lobby:** display position coordinator button on two players ([#698](#698)) ([404b184](404b184)) * **game:** game events from api ([#674](#674)) ([cc5938b](cc5938b)) * **scandalmonger:** scandalmonger mark is active event ([#681](#681)) ([828acaa](828acaa)) ### 🐛 Bug Fixes * **deps:** update dependency primevue to v4 ([#605](#605)) ([c05c2be](c05c2be)) ### ✅ Tests * **fox:** targets in game events ([#696](#696)) ([7eb4ff6](7eb4ff6)) * **rusty-sword-knight:** acceptance tests ([#689](#689)) ([8b60d86](8b60d86)) ### 🧹 Chore * **deps:** update antoinezanardi/werewolves-assistant-api docker tag to v1.35.1 ([#720](#720)) ([a4eef03](a4eef03)) * **deps:** update dependency @commitlint/cli to ^19.4.0 ([#721](#721)) ([10ae971](10ae971)) * **deps:** update dependency @nuxt/test-utils to ^3.14.0 ([#684](#684)) ([e842c26](e842c26)) * **deps:** update dependency @nuxtjs/i18n to ^8.3.2 ([#686](#686)) ([a5fc6d6](a5fc6d6)) * **deps:** update dependency @nuxtjs/i18n to ^8.3.3 ([#688](#688)) ([6c04526](6c04526)) * **deps:** update dependency @pinia/nuxt to ^0.5.2 ([#679](#679)) ([268cb94](268cb94)) * **deps:** update dependency @pinia/nuxt to ^0.5.3 ([#712](#712)) ([4c0e823](4c0e823)) * **deps:** update dependency @pinia/testing to ^0.1.4 ([#680](#680)) ([6aaa549](6aaa549)) * **deps:** update dependency @pinia/testing to ^0.1.5 ([#713](#713)) ([1e865de](1e865de)) * **deps:** update dependency @stryker-mutator/core to ^8.4.0 ([#717](#717)) ([18fd997](18fd997)) * **deps:** update dependency @stylistic/eslint-plugin to ^2.4.0 ([#687](#687)) ([b96f302](b96f302)) * **deps:** update dependency @stylistic/eslint-plugin to ^2.6.1 ([#701](#701)) ([d057800](d057800)) * **deps:** update dependency @types/eslint to v9 ([#665](#665)) ([e4cf01c](e4cf01c)) * **deps:** update dependency eslint to ^9.8.0 ([#685](#685)) ([722ad20](722ad20)) * **deps:** update dependency husky to ^9.1.1 ([#650](#650)) ([03ff232](03ff232)) * **deps:** update dependency husky to ^9.1.2 ([#675](#675)) ([8b450f1](8b450f1)) * **deps:** update dependency husky to ^9.1.3 ([#683](#683)) ([8fb79bb](8fb79bb)) * **deps:** update dependency husky to ^9.1.4 ([#690](#690)) ([8e4afd7](8e4afd7)) * **deps:** update dependency lint-staged to ^15.2.8 ([#707](#707)) ([9d0ea50](9d0ea50)) * **deps:** update dependency msw to ^2.3.2 ([#654](#654)) ([df18287](df18287)) * **deps:** update dependency msw to ^2.3.3 ([#667](#667)) ([4e31286](4e31286)) * **deps:** update dependency msw to ^2.3.4 ([#668](#668)) ([d368d3a](d368d3a)) * **deps:** update dependency msw to ^2.3.5 ([#705](#705)) ([e44c938](e44c938)) * **deps:** update dependency pinia to ^2.2.0 ([#682](#682)) ([a264598](a264598)) * **deps:** update dependency pinia to ^2.2.1 ([#714](#714)) ([7ec9618](7ec9618)) * **deps:** update dependency prettier-plugin-gherkin to ^2.4.1 ([#678](#678)) ([fdf456f](fdf456f)) * **deps:** update dependency prettier-plugin-gherkin to v3 ([#693](#693)) ([951b899](951b899)) * **deps:** update dependency qs to ^6.13.0 ([#703](#703)) ([be22e54](be22e54)) * **deps:** update dependency tailwindcss to ^3.4.7 ([#676](#676)) ([9653815](9653815)) * **deps:** update dependency tailwindcss to ^3.4.8 ([#722](#722)) ([706364a](706364a)) * **deps:** update dependency tsx to ^4.16.3 ([#694](#694)) ([ac58a05](ac58a05)) * **deps:** update dependency tsx to ^4.16.5 ([#702](#702)) ([bd33184](bd33184)) * **deps:** update dependency type-fest to ^4.22.1 ([#651](#651)) ([e21922d](e21922d)) * **deps:** update dependency type-fest to ^4.23.0 ([#661](#661)) ([54e81b0](54e81b0)) * **deps:** update dependency typescript to ^5.5.4 ([#666](#666)) ([b3d9999](b3d9999)) * **deps:** update dependency validate-branch-name to ^1.3.1 ([#672](#672)) ([ee73726](ee73726)) * **deps:** update dependency vue to ^3.4.33 ([#655](#655)) ([2b6f4be](2b6f4be)) * **deps:** update dependency vue to ^3.4.34 ([#671](#671)) ([a4628ae](a4628ae)) * **deps:** update dependency vue to ^3.4.35 ([#695](#695)) ([632b6e6](632b6e6)) * **deps:** update dependency vue to ^3.4.36 ([#715](#715)) ([0e26759](0e26759)) * **deps:** update dependency vue-router to ^4.4.2 ([#699](#699)) ([55c7ea4](55c7ea4)) * **deps:** update dependency vue-router to ^4.4.3 ([#716](#716)) ([41940fc](41940fc)) * **deps:** update dependency vue-tsc to ^2.0.28 ([#658](#658)) ([376855f](376855f)) * **deps:** update dependency vue-tsc to ^2.0.29 ([#673](#673)) ([e8c0b73](e8c0b73)) * **deps:** update node docker tag to v22.6.0 ([#718](#718)) ([2b3eb0f](2b3eb0f)) * **deps:** update node.js to >=20.16.0 ([#670](#670)) ([4b03818](4b03818)) * **deps:** update nuxtjs monorepo to ^3.12.4 ([#653](#653)) ([08a94ce](08a94ce)) * **deps:** update playwright monorepo to ^1.45.3 ([#663](#663)) ([99322ea](99322ea)) * **deps:** update playwright monorepo to ^1.46.0 ([#710](#710)) ([cdcc769](cdcc769)) * **deps:** update pnpm to v9.6.0 ([#657](#657)) ([8a18dec](8a18dec)) * **deps:** update pnpm to v9.7.0 ([#719](#719)) ([deb0b81](deb0b81)) * **deps:** update stryker-js monorepo to ^8.3.0 ([#704](#704)) ([0d4788e](0d4788e)) * **deps:** update stryker-js monorepo to ^8.4.0 ([#711](#711)) ([5def08d](5def08d)) * **deps:** update typescript-eslint monorepo to ^7.17.0 ([#664](#664)) ([cf7484f](cf7484f)) * **deps:** update typescript-eslint monorepo to ^7.18.0 ([#691](#691)) ([fe46fff](fe46fff)) * **deps:** update typescript-eslint monorepo to ^8.0.1 ([#709](#709)) ([d189e1e](d189e1e)) * **deps:** update typescript-eslint monorepo to v8 (major) ([#700](#700)) ([de6cf8d](de6cf8d)) * **deps:** update vitest monorepo to ^2.0.3 ([#636](#636)) ([0cdd8e6](0cdd8e6)) * **deps:** update vitest monorepo to ^2.0.4 ([#659](#659)) ([a4a5d77](a4a5d77)) * **deps:** update vitest monorepo to ^2.0.5 ([#697](#697)) ([5783273](5783273))
🎉 This PR is included in version 1.27.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Summary by CodeRabbit
New Features
GameDeathEvent
,GameFoxMayHaveSniffedEvent
, andGameThiefMayHaveChosenCardEvent
.Improvements
Bug Fixes
Documentation
Tests