@@ -2,7 +2,7 @@ import { prismaMock } from "../../test/mockPrisma";
22import { ServerHeader } from "../packet" ;
33import { GameServerInfoPacket } from "../packets/gameServerInfo" ;
44import { GameServer , GameServerSnapshot , GameServerState , Player } from "@prisma/client" ;
5- import { changePlayerClans , processGameServerInfo } from "./pollGameServer" ;
5+ import { processGameServerInfo } from "./pollGameServer" ;
66
77const newGameServer = ( ) : GameServer & { gameServerState : GameServerState | null } => ( {
88 id : 1 ,
@@ -68,29 +68,24 @@ test('processGameServerInfo', async () => {
6868 id : 1 ,
6969 } as unknown as GameServerSnapshot ) ;
7070
71- prismaMock . player . findUnique . mockResolvedValue ( { clanName : null } as unknown as Player ) ;
72- prismaMock . player . updateMany . mockResolvedValue ( { count : 1 } ) ;
73-
7471 await processGameServerInfo ( gameServer , gameServerInfo ) ;
7572
7673 expect ( prismaMock . clan . createMany ) . toHaveBeenCalledWith ( {
7774 data : [ { name : 'clan1' } , { name : 'clan2' } ] ,
7875 skipDuplicates : true
7976 } ) ;
8077
81- expect ( prismaMock . player . createMany ) . toHaveBeenCalledWith ( {
82- data : [ { name : 'name1' } , { name : 'name2' } ] ,
83- skipDuplicates : true
84- } ) ;
78+ expect ( prismaMock . player . upsert ) . toHaveBeenCalledWith ( expect . objectContaining ( {
79+ where : { name : 'name1' } ,
80+ update : { clanName : 'clan1' , lastSeenAt : expect . any ( Date ) } ,
81+ create : { name : 'name1' , clanName : 'clan1' , lastSeenAt : expect . any ( Date ) } ,
82+ } ) ) ;
8583
86- expect ( prismaMock . player . updateMany ) . toHaveBeenCalledWith ( {
87- where : { name : 'name1' , clanName : null } ,
88- data : { clanName : 'clan1' }
89- } ) ;
90- expect ( prismaMock . player . updateMany ) . toHaveBeenCalledWith ( {
91- where : { name : 'name2' , clanName : null } ,
92- data : { clanName : 'clan2' }
93- } ) ;
84+ expect ( prismaMock . player . upsert ) . toHaveBeenCalledWith ( expect . objectContaining ( {
85+ where : { name : 'name2' } ,
86+ update : { clanName : 'clan2' , lastSeenAt : expect . any ( Date ) } ,
87+ create : { name : 'name2' , clanName : 'clan2' , lastSeenAt : expect . any ( Date ) } ,
88+ } ) ) ;
9489
9590 expect ( prismaMock . gameServerSnapshot . create ) . toHaveBeenCalledWith ( expect . objectContaining ( {
9691 data : expect . objectContaining ( {
@@ -117,78 +112,3 @@ test('processGameServerInfo', async () => {
117112 } )
118113 } ) ) ;
119114} ) ;
120-
121- describe ( 'changePlayerClan' , ( ) => {
122-
123- test ( 'Empty clan' , async ( ) => {
124- prismaMock . player . findUnique . mockResolvedValue ( { clanName : 'clan1' } as unknown as Player ) ;
125- prismaMock . player . updateMany . mockResolvedValue ( { count : 1 } ) ;
126-
127- await changePlayerClans ( {
128- 'name1' : null ,
129- } ) ;
130-
131- expect ( prismaMock . player . updateMany ) . toHaveBeenCalledWith ( {
132- where : { name : 'name1' , clanName : 'clan1' } ,
133- data : { clanName : null }
134- } ) ;
135-
136- expect ( prismaMock . clan . update ) . toHaveBeenCalledWith ( {
137- where : { name : 'clan1' } ,
138- data : { activePlayerCount : { increment : - 1 } }
139- } ) ;
140- } ) ;
141-
142- test ( 'Clan changes' , async ( ) => {
143- prismaMock . player . findUnique . mockResolvedValue ( { clanName : 'clan1' } as unknown as Player ) ;
144- prismaMock . player . updateMany . mockResolvedValue ( { count : 1 } ) ;
145-
146- await changePlayerClans ( {
147- 'name1' : 'clan2' ,
148- } ) ;
149-
150- expect ( prismaMock . player . updateMany ) . toHaveBeenCalledWith ( {
151- where : { name : 'name1' , clanName : 'clan1' } ,
152- data : { clanName : 'clan2' }
153- } ) ;
154-
155- expect ( prismaMock . clan . update ) . toHaveBeenCalledWith ( {
156- where : { name : 'clan1' } ,
157- data : { activePlayerCount : { increment : - 1 } }
158- } ) ;
159-
160- expect ( prismaMock . clan . update ) . toHaveBeenCalledWith ( {
161- where : { name : 'clan2' } ,
162- data : { activePlayerCount : { increment : 1 } }
163- } ) ;
164- } ) ;
165-
166- test ( 'Clan changes with race condition' , async ( ) => {
167- prismaMock . player . findUnique . mockResolvedValueOnce ( { clanName : 'clan1' } as unknown as Player ) ;
168- prismaMock . player . findUnique . mockResolvedValueOnce ( { clanName : 'clan1-bis' } as unknown as Player ) ;
169- prismaMock . player . updateMany . mockResolvedValueOnce ( { count : 0 } ) ;
170- prismaMock . player . updateMany . mockResolvedValueOnce ( { count : 1 } ) ;
171-
172- await changePlayerClans ( {
173- 'name1' : 'clan2' ,
174- } ) ;
175-
176- expect ( prismaMock . player . updateMany ) . toHaveBeenCalledWith ( {
177- where : { name : 'name1' , clanName : 'clan1' } ,
178- data : { clanName : 'clan2' }
179- } ) ;
180- expect ( prismaMock . player . updateMany ) . toHaveBeenCalledWith ( {
181- where : { name : 'name1' , clanName : 'clan1-bis' } ,
182- data : { clanName : 'clan2' }
183- } ) ;
184-
185- expect ( prismaMock . clan . update ) . toHaveBeenCalledWith ( {
186- where : { name : 'clan1-bis' } ,
187- data : { activePlayerCount : { increment : - 1 } }
188- } ) ;
189- expect ( prismaMock . clan . update ) . toHaveBeenCalledWith ( {
190- where : { name : 'clan2' } ,
191- data : { activePlayerCount : { increment : 1 } }
192- } ) ;
193- } ) ;
194- } ) ;
0 commit comments