@openora/core 0.4.1-canary.152 → 0.4.1-canary.154

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/admin-console/__tests__/backoffice.service.int.test.js +20 -3
  3. package/dist/admin-console/__tests__/backoffice.service.int.test.js.map +1 -1
  4. package/dist/audit/__tests__/map-event.test.js +46 -0
  5. package/dist/audit/__tests__/map-event.test.js.map +1 -1
  6. package/dist/audit/plugin.d.ts.map +1 -1
  7. package/dist/audit/plugin.js +74 -1
  8. package/dist/audit/plugin.js.map +1 -1
  9. package/dist/audit/service/audit.service.d.ts.map +1 -1
  10. package/dist/audit/service/audit.service.js +1 -6
  11. package/dist/audit/service/audit.service.js.map +1 -1
  12. package/dist/casino/gaming/__tests__/admin-reporting.int.test.js +20 -3
  13. package/dist/casino/gaming/__tests__/admin-reporting.int.test.js.map +1 -1
  14. package/dist/casino/gaming/__tests__/game-category.service.int.test.d.ts +2 -0
  15. package/dist/casino/gaming/__tests__/game-category.service.int.test.d.ts.map +1 -0
  16. package/dist/casino/gaming/__tests__/game-category.service.int.test.js +134 -0
  17. package/dist/casino/gaming/__tests__/game-category.service.int.test.js.map +1 -0
  18. package/dist/casino/gaming/__tests__/game-provider.service.int.test.d.ts +2 -0
  19. package/dist/casino/gaming/__tests__/game-provider.service.int.test.d.ts.map +1 -0
  20. package/dist/casino/gaming/__tests__/game-provider.service.int.test.js +274 -0
  21. package/dist/casino/gaming/__tests__/game-provider.service.int.test.js.map +1 -0
  22. package/dist/casino/gaming/__tests__/gaming-catalog-admin.router.int.test.d.ts +2 -0
  23. package/dist/casino/gaming/__tests__/gaming-catalog-admin.router.int.test.d.ts.map +1 -0
  24. package/dist/casino/gaming/__tests__/gaming-catalog-admin.router.int.test.js +174 -0
  25. package/dist/casino/gaming/__tests__/gaming-catalog-admin.router.int.test.js.map +1 -0
  26. package/dist/casino/gaming/__tests__/gaming-migration.int.test.d.ts +2 -0
  27. package/dist/casino/gaming/__tests__/gaming-migration.int.test.d.ts.map +1 -0
  28. package/dist/casino/gaming/__tests__/gaming-migration.int.test.js +171 -0
  29. package/dist/casino/gaming/__tests__/gaming-migration.int.test.js.map +1 -0
  30. package/dist/casino/gaming/__tests__/gaming.service.int.test.js +274 -13
  31. package/dist/casino/gaming/__tests__/gaming.service.int.test.js.map +1 -1
  32. package/dist/casino/gaming/contract/index.d.ts +520 -18
  33. package/dist/casino/gaming/contract/index.d.ts.map +1 -1
  34. package/dist/casino/gaming/contract/index.js +167 -4
  35. package/dist/casino/gaming/contract/index.js.map +1 -1
  36. package/dist/casino/gaming/drizzle/migrations/0005_natural_thunderbolt_ross.sql +223 -0
  37. package/dist/casino/gaming/drizzle/migrations/meta/0005_snapshot.json +680 -0
  38. package/dist/casino/gaming/drizzle/migrations/meta/_journal.json +7 -0
  39. package/dist/casino/gaming/plugin.d.ts.map +1 -1
  40. package/dist/casino/gaming/plugin.js +9 -2
  41. package/dist/casino/gaming/plugin.js.map +1 -1
  42. package/dist/casino/gaming/router/index.d.ts +372 -18
  43. package/dist/casino/gaming/router/index.d.ts.map +1 -1
  44. package/dist/casino/gaming/router/index.js +62 -6
  45. package/dist/casino/gaming/router/index.js.map +1 -1
  46. package/dist/casino/gaming/schema/index.d.ts +499 -4
  47. package/dist/casino/gaming/schema/index.d.ts.map +1 -1
  48. package/dist/casino/gaming/schema/index.js +72 -6
  49. package/dist/casino/gaming/schema/index.js.map +1 -1
  50. package/dist/casino/gaming/service/game-category.service.d.ts +109 -0
  51. package/dist/casino/gaming/service/game-category.service.d.ts.map +1 -0
  52. package/dist/casino/gaming/service/game-category.service.js +176 -0
  53. package/dist/casino/gaming/service/game-category.service.js.map +1 -0
  54. package/dist/casino/gaming/service/game-provider.service.d.ts +118 -0
  55. package/dist/casino/gaming/service/game-provider.service.d.ts.map +1 -0
  56. package/dist/casino/gaming/service/game-provider.service.js +251 -0
  57. package/dist/casino/gaming/service/game-provider.service.js.map +1 -0
  58. package/dist/casino/gaming/service/gaming.service.d.ts +122 -14
  59. package/dist/casino/gaming/service/gaming.service.d.ts.map +1 -1
  60. package/dist/casino/gaming/service/gaming.service.js +189 -23
  61. package/dist/casino/gaming/service/gaming.service.js.map +1 -1
  62. package/dist/casino/lobby/__tests__/lobby.cache.int.test.js +137 -4
  63. package/dist/casino/lobby/__tests__/lobby.cache.int.test.js.map +1 -1
  64. package/dist/casino/lobby/contract/index.d.ts +68 -8
  65. package/dist/casino/lobby/contract/index.d.ts.map +1 -1
  66. package/dist/casino/lobby/contract/index.js +4 -3
  67. package/dist/casino/lobby/contract/index.js.map +1 -1
  68. package/dist/casino/lobby/router/index.d.ts +34 -4
  69. package/dist/casino/lobby/router/index.d.ts.map +1 -1
  70. package/dist/casino/lobby/service/lobby.service.d.ts +34 -4
  71. package/dist/casino/lobby/service/lobby.service.d.ts.map +1 -1
  72. package/dist/casino/lobby/service/lobby.service.js +60 -26
  73. package/dist/casino/lobby/service/lobby.service.js.map +1 -1
  74. package/dist/casino/shared/game-catalog.d.ts +32 -0
  75. package/dist/casino/shared/game-catalog.d.ts.map +1 -0
  76. package/dist/casino/shared/game-catalog.js +67 -0
  77. package/dist/casino/shared/game-catalog.js.map +1 -0
  78. package/dist/compliance/__tests__/compliance.service.int.test.js +248 -25
  79. package/dist/compliance/__tests__/compliance.service.int.test.js.map +1 -1
  80. package/dist/compliance/__tests__/regulatory-overview.router.int.test.d.ts +2 -0
  81. package/dist/compliance/__tests__/regulatory-overview.router.int.test.d.ts.map +1 -0
  82. package/dist/compliance/__tests__/regulatory-overview.router.int.test.js +102 -0
  83. package/dist/compliance/__tests__/regulatory-overview.router.int.test.js.map +1 -0
  84. package/dist/compliance/__tests__/rg-monitoring.service.int.test.js +17 -3
  85. package/dist/compliance/__tests__/rg-monitoring.service.int.test.js.map +1 -1
  86. package/dist/compliance/__tests__/rg-self-service.int.test.js +2 -2
  87. package/dist/compliance/__tests__/rg-self-service.int.test.js.map +1 -1
  88. package/dist/compliance/contract/index.d.ts +77 -2
  89. package/dist/compliance/contract/index.d.ts.map +1 -1
  90. package/dist/compliance/contract/index.js +50 -1
  91. package/dist/compliance/contract/index.js.map +1 -1
  92. package/dist/compliance/drizzle/migrations/0008_omniscient_northstar.sql +14 -0
  93. package/dist/compliance/drizzle/migrations/meta/0008_snapshot.json +870 -0
  94. package/dist/compliance/drizzle/migrations/meta/_journal.json +7 -0
  95. package/dist/compliance/plugin.d.ts.map +1 -1
  96. package/dist/compliance/plugin.js +2 -2
  97. package/dist/compliance/plugin.js.map +1 -1
  98. package/dist/compliance/router/index.d.ts +43 -1
  99. package/dist/compliance/router/index.d.ts.map +1 -1
  100. package/dist/compliance/router/index.js +32 -4
  101. package/dist/compliance/router/index.js.map +1 -1
  102. package/dist/compliance/schema/index.d.ts +181 -2
  103. package/dist/compliance/schema/index.d.ts.map +1 -1
  104. package/dist/compliance/schema/index.js +15 -2
  105. package/dist/compliance/schema/index.js.map +1 -1
  106. package/dist/compliance/server.d.ts +1 -1
  107. package/dist/compliance/server.d.ts.map +1 -1
  108. package/dist/compliance/server.js +1 -1
  109. package/dist/compliance/server.js.map +1 -1
  110. package/dist/compliance/service/compliance.service.d.ts +61 -14
  111. package/dist/compliance/service/compliance.service.d.ts.map +1 -1
  112. package/dist/compliance/service/compliance.service.js +226 -30
  113. package/dist/compliance/service/compliance.service.js.map +1 -1
  114. package/dist/contracts/__tests__/kit.test.js +21 -1
  115. package/dist/contracts/__tests__/kit.test.js.map +1 -1
  116. package/dist/contracts/adapters/audit.d.ts +1 -1
  117. package/dist/contracts/adapters/audit.d.ts.map +1 -1
  118. package/dist/contracts/adapters/audit.js.map +1 -1
  119. package/dist/contracts/kit.d.ts +3 -0
  120. package/dist/contracts/kit.d.ts.map +1 -1
  121. package/dist/contracts/kit.js +8 -0
  122. package/dist/contracts/kit.js.map +1 -1
  123. package/dist/contracts/schemas/__tests__/events.test.js +7 -0
  124. package/dist/contracts/schemas/__tests__/events.test.js.map +1 -1
  125. package/dist/contracts/schemas/__tests__/game-schemas.test.d.ts +2 -0
  126. package/dist/contracts/schemas/__tests__/game-schemas.test.d.ts.map +1 -0
  127. package/dist/contracts/schemas/__tests__/game-schemas.test.js +43 -0
  128. package/dist/contracts/schemas/__tests__/game-schemas.test.js.map +1 -0
  129. package/dist/contracts/schemas/events.d.ts +109 -0
  130. package/dist/contracts/schemas/events.d.ts.map +1 -1
  131. package/dist/contracts/schemas/events.js +87 -3
  132. package/dist/contracts/schemas/events.js.map +1 -1
  133. package/dist/contracts/schemas/game.d.ts +39 -0
  134. package/dist/contracts/schemas/game.d.ts.map +1 -1
  135. package/dist/contracts/schemas/game.js +32 -0
  136. package/dist/contracts/schemas/game.js.map +1 -1
  137. package/dist/contracts/schemas/iam.d.ts +2 -1
  138. package/dist/contracts/schemas/iam.d.ts.map +1 -1
  139. package/dist/contracts/schemas/iam.js +2 -1
  140. package/dist/contracts/schemas/iam.js.map +1 -1
  141. package/dist/iam/seed/data/default-admin-roles.d.ts.map +1 -1
  142. package/dist/iam/seed/data/default-admin-roles.js +1 -0
  143. package/dist/iam/seed/data/default-admin-roles.js.map +1 -1
  144. package/dist/iam/service/iam.service.d.ts +1 -1
  145. package/dist/react/client.d.ts +2 -1
  146. package/dist/react/client.d.ts.map +1 -1
  147. package/dist/react/client.js +2 -1
  148. package/dist/react/client.js.map +1 -1
  149. package/dist/server/auth/permissions.d.ts +24 -12
  150. package/dist/server/auth/permissions.d.ts.map +1 -1
  151. package/dist/server/auth/permissions.js +2 -1
  152. package/dist/server/auth/permissions.js.map +1 -1
  153. package/dist/server/db/__tests__/query-helpers.test.js +47 -1
  154. package/dist/server/db/__tests__/query-helpers.test.js.map +1 -1
  155. package/dist/server/db/index.d.ts +1 -1
  156. package/dist/server/db/index.d.ts.map +1 -1
  157. package/dist/server/db/index.js +1 -1
  158. package/dist/server/db/index.js.map +1 -1
  159. package/dist/server/db/query-helpers.d.ts +5 -0
  160. package/dist/server/db/query-helpers.d.ts.map +1 -1
  161. package/dist/server/db/query-helpers.js +37 -0
  162. package/dist/server/db/query-helpers.js.map +1 -1
  163. package/package.json +1 -1
@@ -1,13 +1,17 @@
1
1
  import { describe, it, expect, vi, beforeAll, afterAll, beforeEach } from 'vitest';
2
+ import { randomUUID } from 'node:crypto';
2
3
  import { eq, sql } from 'drizzle-orm';
3
4
  import { createTestDb } from '@openora/core/testing';
4
5
  import { migrate as migrateProfile } from '@openora/core/pam/migrate/profile';
5
- import { mock, makeEventBus, makeIdentityReader } from '../../../testing/mock.js';
6
+ import { mock, makeEventBus, makeIdentityReader, NO_CLIENT_META } from '../../../testing/mock.js';
6
7
  import { migrate } from '../migrate.js';
7
- import { game, gameRound } from '../schema/index.js';
8
- import { GamingService, GameNotFoundError, RgRestrictedError, InsufficientBalanceError, WinCreditFailedError, ExternalRoundOwnerMismatchError, } from '../service/gaming.service.js';
8
+ import { game, gameCategory, gameCategoryGame, gameProvider, gameProviderAggregatorMapping, gameRound, } from '../schema/index.js';
9
+ import { GamingService, GameAggregatorNotMappedError, GameNotFoundError, GameSlugTakenError, RgRestrictedError, InsufficientBalanceError, WinCreditFailedError, ExternalRoundOwnerMismatchError, } from '../service/gaming.service.js';
10
+ import { GameProviderNotFoundError } from '../service/game-provider.service.js';
11
+ import { GameCategoryNotFoundError } from '../service/game-category.service.js';
9
12
  let db;
10
13
  const noopEvents = makeEventBus();
14
+ const ACTOR = { actorId: '00000000-0000-4000-8000-000000000001', ...NO_CLIENT_META };
11
15
  const eligibility = (isRestricted) => mock({ isRestricted: vi.fn().mockResolvedValue(isRestricted) });
12
16
  const unrestricted = eligibility(false);
13
17
  function makeWalletCommands(debitResult, creditResult = { ok: true, newBalance: '0' }) {
@@ -19,14 +23,43 @@ function makeWalletCommands(debitResult, creditResult = { ok: true, newBalance:
19
23
  function makeService({ provider = mock({
20
24
  launchGame: vi.fn().mockResolvedValue({ launchUrl: 'https://mock/play', token: 'tok' }),
21
25
  endRound: vi.fn(),
22
- }), playEligibility = unrestricted, walletCommands = makeWalletCommands({ ok: true, newBalance: '0', currency: 'USD' }), rgLimits, } = {}) {
23
- return new GamingService(db.drizzle, noopEvents, provider, playEligibility, walletCommands, makeIdentityReader(), rgLimits);
26
+ }), playEligibility = unrestricted, walletCommands = makeWalletCommands({ ok: true, newBalance: '0', currency: 'USD' }), rgLimits, events = noopEvents, } = {}) {
27
+ return new GamingService(db.drizzle, events, provider, playEligibility, walletCommands, makeIdentityReader(), rgLimits);
24
28
  }
25
- async function seedGame(overrides = {}) {
29
+ async function seedProvider(overrides = {}) {
30
+ const [row] = await db.drizzle.db
31
+ .insert(gameProvider)
32
+ .values({ slug: `studio-${randomUUID()}`, name: 'Studio', isActive: true, ...overrides })
33
+ .returning();
34
+ await db.drizzle.db
35
+ .insert(gameProviderAggregatorMapping)
36
+ .values({ providerId: row.id, aggregator: 'direct', vendorId: row.slug });
37
+ return row;
38
+ }
39
+ async function seedCategory(overrides = {}) {
40
+ const [row] = await db.drizzle.db
41
+ .insert(gameCategory)
42
+ .values({ slug: `category-${randomUUID()}`, name: 'Slots', ...overrides })
43
+ .returning();
44
+ return row;
45
+ }
46
+ async function seedGame(overrides = {}, categoryIds) {
47
+ const provider = await seedProvider({ name: 'Mock Studio' });
48
+ const ids = categoryIds ?? [(await seedCategory()).id];
26
49
  const [row] = await db.drizzle.db
27
50
  .insert(game)
28
- .values({ name: 'Game', provider: 'mock', category: 'slots', ...overrides })
51
+ .values({
52
+ name: 'Game',
53
+ slug: `game-${randomUUID()}`,
54
+ providerId: provider.id,
55
+ aggregator: 'direct',
56
+ isActive: true,
57
+ ...overrides,
58
+ })
29
59
  .returning();
60
+ await db.drizzle.db
61
+ .insert(gameCategoryGame)
62
+ .values(ids.map((categoryId) => ({ gameId: row.id, categoryId })));
30
63
  return row;
31
64
  }
32
65
  beforeAll(async () => {
@@ -36,22 +69,87 @@ afterAll(async () => {
36
69
  await db.drop();
37
70
  });
38
71
  beforeEach(async () => {
39
- await db.drizzle.db.execute(sql `TRUNCATE ${gameRound}, ${game} RESTART IDENTITY CASCADE`);
72
+ await db.drizzle.db.execute(sql `TRUNCATE ${gameRound}, ${gameCategoryGame}, ${game}, ${gameProvider}, ${gameCategory} RESTART IDENTITY CASCADE`);
40
73
  });
41
74
  describe('GamingService lobby (real PG)', () => {
42
- it('listGames returns only active games, ordered by name', async () => {
75
+ it('listGamesPublic paginates playable games ordered by name', async () => {
43
76
  await seedGame({ name: 'Baccarat', isActive: true });
44
77
  await seedGame({ name: 'Aces', isActive: true });
45
78
  await seedGame({ name: 'Retired', isActive: false });
46
- const games = await makeService().listGames();
47
- expect(games.map((g) => g.name)).toEqual(['Aces', 'Baccarat']);
79
+ const page = await makeService().listGamesPublic({ page: 1, limit: 10 });
80
+ expect(page.total).toBe(2);
81
+ expect(page.items.map((g) => g.name)).toEqual(['Aces', 'Baccarat']);
82
+ });
83
+ it('listGamesPublic searches and filters by provider and category', async () => {
84
+ const p1 = await seedProvider({ slug: 'studio-one', name: 'One' });
85
+ const p2 = await seedProvider({ slug: 'studio-two', name: 'Two' });
86
+ const slots = await seedCategory({ slug: 'slots', name: 'Slots' });
87
+ const live = await seedCategory({ slug: 'live', name: 'Live' });
88
+ await seedGame({ name: 'Gates of Olympus', slug: 'gates-of-olympus', providerId: p1.id, isActive: true }, [slots.id]);
89
+ await seedGame({ name: 'Sweet Bonanza', slug: 'sweet-bonanza', providerId: p1.id, isActive: true }, [slots.id]);
90
+ await seedGame({ name: 'Crazy Time', slug: 'crazy-time', providerId: p2.id, isActive: true }, [
91
+ live.id,
92
+ slots.id,
93
+ ]);
94
+ const svc = makeService();
95
+ expect((await svc.listGamesPublic({ page: 1, limit: 10, q: 'bonanza' })).total).toBe(1);
96
+ expect((await svc.listGamesPublic({ page: 1, limit: 10, providerId: p1.id })).items.map((g) => g.slug)).toEqual(['gates-of-olympus', 'sweet-bonanza']);
97
+ expect((await svc.listGamesPublic({ page: 1, limit: 10, categoryId: live.id })).total).toBe(1);
98
+ expect((await svc.listGamesPublic({ page: 1, limit: 10, categoryId: slots.id })).total).toBe(3);
99
+ });
100
+ it('hides an inactive category from public filtering while retaining admin filtering', async () => {
101
+ const inactive = await seedCategory({ name: 'Hidden', isActive: false });
102
+ const linked = await seedGame({ name: 'Linked Game' }, [inactive.id]);
103
+ const svc = makeService();
104
+ const publicResult = await svc.listGamesPublic({
105
+ page: 1,
106
+ limit: 10,
107
+ categoryId: inactive.id,
108
+ });
109
+ expect(publicResult).toMatchObject({ items: [], total: 0 });
110
+ const adminResult = await svc.listGamesAdmin({
111
+ page: 1,
112
+ limit: 10,
113
+ categoryId: inactive.id,
114
+ isActive: true,
115
+ });
116
+ expect(adminResult.items.map((item) => item.id)).toEqual([linked.id]);
117
+ expect(adminResult.total).toBe(1);
48
118
  });
49
119
  it('getGame returns the row for a known id and 404s an unknown one', async () => {
50
- const created = await seedGame({ name: 'Roulette', category: 'table' });
120
+ const table = await seedCategory({
121
+ slug: 'table-games',
122
+ name: 'Table Games',
123
+ translations: { de: { name: 'Tischspiele' } },
124
+ });
125
+ const blackjack = await seedCategory({ slug: 'blackjack', name: 'Blackjack', isActive: false });
126
+ const created = await seedGame({ name: 'Roulette' }, [table.id, blackjack.id]);
51
127
  const svc = makeService();
52
- expect(await svc.getGame(created.id)).toMatchObject({ name: 'Roulette', category: 'table' });
128
+ expect(await svc.getGame(created.id)).toMatchObject({
129
+ name: 'Roulette',
130
+ categories: [
131
+ { slug: 'blackjack', translations: {} },
132
+ { slug: 'table-games', translations: { de: { name: 'Tischspiele' } } },
133
+ ],
134
+ });
135
+ await expect(svc.getGame(created.id, { activeOnly: true })).resolves.toMatchObject({
136
+ categories: [{ slug: 'table-games' }],
137
+ });
53
138
  await expect(svc.getGame('00000000-0000-0000-0000-000000000000')).rejects.toBeInstanceOf(GameNotFoundError);
54
139
  });
140
+ it('getGame hides inactive games and deactivated providers only behind activeOnly', async () => {
141
+ const dark = await seedGame({ name: 'Dark', isActive: false });
142
+ const orphaned = await seedGame({ name: 'Orphaned' });
143
+ await db.drizzle.db
144
+ .update(gameProvider)
145
+ .set({ isActive: false })
146
+ .where(eq(gameProvider.id, orphaned.providerId));
147
+ const svc = makeService();
148
+ await expect(svc.getGame(dark.id, { activeOnly: true })).rejects.toBeInstanceOf(GameNotFoundError);
149
+ await expect(svc.getGame(orphaned.id, { activeOnly: true })).rejects.toBeInstanceOf(GameNotFoundError);
150
+ await expect(svc.getGame(dark.id)).resolves.toMatchObject({ name: 'Dark', isActive: false });
151
+ await expect(svc.getGame(orphaned.id)).resolves.toMatchObject({ name: 'Orphaned' });
152
+ });
55
153
  });
56
154
  const refusingLimits = () => mock({
57
155
  checkDeposit: vi.fn(),
@@ -101,6 +199,36 @@ describe('GamingService.startRound (real PG)', () => {
101
199
  await expect(svc.startRound('00000000-0000-0000-0000-000000000111', '00000000-0000-0000-0000-000000000222', 'EUR', '10')).rejects.toBeInstanceOf(GameNotFoundError);
102
200
  expect(launchGame).not.toHaveBeenCalled();
103
201
  });
202
+ it('404s an inactive game without touching the wallet or provider', async () => {
203
+ const created = await seedGame({ name: 'Dark', isActive: false });
204
+ const walletCommands = makeWalletCommands({ ok: true, newBalance: '90', currency: 'USD' });
205
+ const launchGame = vi.fn();
206
+ const svc = makeService({
207
+ provider: mock({ launchGame, endRound: vi.fn() }),
208
+ walletCommands,
209
+ });
210
+ await expect(svc.startRound('00000000-0000-0000-0000-000000000311', created.id, 'USD', '10')).rejects.toBeInstanceOf(GameNotFoundError);
211
+ expect(walletCommands.debit).not.toHaveBeenCalled();
212
+ expect(launchGame).not.toHaveBeenCalled();
213
+ expect(await db.drizzle.db.select().from(gameRound)).toHaveLength(0);
214
+ });
215
+ it('404s a game on a deactivated provider without touching the wallet or provider', async () => {
216
+ const created = await seedGame({ name: 'Orphaned' });
217
+ await db.drizzle.db
218
+ .update(gameProvider)
219
+ .set({ isActive: false })
220
+ .where(eq(gameProvider.id, created.providerId));
221
+ const walletCommands = makeWalletCommands({ ok: true, newBalance: '90', currency: 'USD' });
222
+ const launchGame = vi.fn();
223
+ const svc = makeService({
224
+ provider: mock({ launchGame, endRound: vi.fn() }),
225
+ walletCommands,
226
+ });
227
+ await expect(svc.startRound('00000000-0000-0000-0000-000000000312', created.id, 'USD', '10')).rejects.toBeInstanceOf(GameNotFoundError);
228
+ expect(walletCommands.debit).not.toHaveBeenCalled();
229
+ expect(launchGame).not.toHaveBeenCalled();
230
+ expect(await db.drizzle.db.select().from(gameRound)).toHaveLength(0);
231
+ });
104
232
  it('debits the stake and persists the round on sufficient balance', async () => {
105
233
  const created = await seedGame({ id: '00000000-0000-0000-0000-0000000000a1', name: 'Aces' });
106
234
  const walletCommands = makeWalletCommands({ ok: true, newBalance: '90', currency: 'USD' });
@@ -141,6 +269,47 @@ describe('GamingService.startRound (real PG)', () => {
141
269
  expect(await db.drizzle.db.select().from(gameRound)).toHaveLength(0);
142
270
  });
143
271
  });
272
+ describe('GamingService listGames provider gate (real PG)', () => {
273
+ it('separates the public playable gate from the admin game-active filter', async () => {
274
+ const live = await seedGame({ name: 'Live Game' });
275
+ const hidden = await seedGame({ name: 'Hidden Game' });
276
+ await db.drizzle.db
277
+ .update(gameProvider)
278
+ .set({ isActive: false })
279
+ .where(eq(gameProvider.id, hidden.providerId));
280
+ const svc = makeService();
281
+ const pub = await svc.listGamesPublic({ page: 1, limit: 10 });
282
+ expect(pub.items.map((g) => g.id)).toEqual([live.id]);
283
+ expect(pub.total).toBe(1);
284
+ const admin = await svc.listGamesAdmin({ page: 1, limit: 10, isActive: true });
285
+ expect(admin.total).toBe(2);
286
+ });
287
+ it('listGamesAdmin includes non-playable games and sorts by provider and game fields', async () => {
288
+ const alphaZulu = await seedProvider({ name: 'Alpha', slug: 'zulu' });
289
+ const alphaAlpha = await seedProvider({ name: 'Alpha', slug: 'alpha' });
290
+ const betaAlpha = await seedProvider({ name: 'Beta', slug: 'beta-alpha', isActive: false });
291
+ await seedGame({
292
+ id: '00000000-0000-4000-8000-000000000002',
293
+ name: 'Same',
294
+ providerId: alphaZulu.id,
295
+ });
296
+ await seedGame({
297
+ id: '00000000-0000-4000-8000-000000000001',
298
+ name: 'Same',
299
+ providerId: alphaZulu.id,
300
+ });
301
+ await seedGame({ name: 'Zulu', providerId: alphaAlpha.id });
302
+ await seedGame({ name: 'Aardvark', providerId: betaAlpha.id });
303
+ const result = await makeService().listGamesAdmin({ page: 1, limit: 10 });
304
+ expect(result.items.map((item) => [item.provider.name, item.provider.slug, item.name, item.id])).toEqual([
305
+ ['Alpha', 'alpha', 'Zulu', expect.any(String)],
306
+ ['Alpha', 'zulu', 'Same', '00000000-0000-4000-8000-000000000001'],
307
+ ['Alpha', 'zulu', 'Same', '00000000-0000-4000-8000-000000000002'],
308
+ ['Beta', 'beta-alpha', 'Aardvark', expect.any(String)],
309
+ ]);
310
+ expect(result.total).toBe(4);
311
+ });
312
+ });
144
313
  describe('GamingService.startRound bonus rollover completion (real PG)', () => {
145
314
  it('emits wallet.bonus_rollover.completed once per credit the bet just completed', async () => {
146
315
  const created = await seedGame({ id: '00000000-0000-0000-0000-0000000000a3', name: 'Aces' });
@@ -209,6 +378,98 @@ describe('GamingService.startRound bonus rollover completion (real PG)', () => {
209
378
  expect(events.emit).not.toHaveBeenCalledWith('wallet.bonus_rollover.completed', expect.anything());
210
379
  });
211
380
  });
381
+ describe('GamingService updateGame (real PG)', () => {
382
+ const emittedTopics = (events) => events.emit.mock.calls.map(([topic]) => topic);
383
+ it('patches scalar fields and emits an event', async () => {
384
+ const created = await seedGame({ name: 'Roulette' });
385
+ const events = makeEventBus();
386
+ const svc = makeService({ events });
387
+ const updated = await svc.updateGame({
388
+ id: created.id,
389
+ name: 'Roulette Gold',
390
+ isActive: false,
391
+ ...ACTOR,
392
+ });
393
+ expect(updated).toMatchObject({ name: 'Roulette Gold', isActive: false });
394
+ expect(emittedTopics(events)).toContain('gaming.game.updated');
395
+ });
396
+ it('replaces the category set, including clearing it with an empty array', async () => {
397
+ const table = await seedCategory({ slug: 'table-games', name: 'Table Games' });
398
+ const blackjack = await seedCategory({ slug: 'blackjack', name: 'Blackjack' });
399
+ const created = await seedGame({}, [table.id, blackjack.id]);
400
+ const svc = makeService();
401
+ const replaced = await svc.updateGame({
402
+ id: created.id,
403
+ categoryIds: [blackjack.id],
404
+ ...ACTOR,
405
+ });
406
+ expect(replaced.categories.map((c) => c.slug)).toEqual(['blackjack']);
407
+ const cleared = await svc.updateGame({ id: created.id, categoryIds: [], ...ACTOR });
408
+ expect(cleared.categories).toEqual([]);
409
+ });
410
+ it('leaves links untouched when categoryIds is omitted', async () => {
411
+ const table = await seedCategory({ slug: 'table-games', name: 'Table Games' });
412
+ const created = await seedGame({}, [table.id]);
413
+ const svc = makeService();
414
+ const updated = await svc.updateGame({ id: created.id, name: 'Renamed', ...ACTOR });
415
+ expect(updated.categories.map((c) => c.slug)).toEqual(['table-games']);
416
+ });
417
+ it('reassigns the provider and validates all references', async () => {
418
+ const created = await seedGame();
419
+ const other = await seedProvider({ slug: 'other-studio', name: 'Other' });
420
+ const svc = makeService();
421
+ const updated = await svc.updateGame({
422
+ id: created.id,
423
+ providerId: other.id,
424
+ ...ACTOR,
425
+ });
426
+ expect(updated.provider).toMatchObject({ slug: 'other-studio' });
427
+ await expect(svc.updateGame({
428
+ id: created.id,
429
+ providerId: '00000000-0000-4000-8000-000000000000',
430
+ ...ACTOR,
431
+ })).rejects.toBeInstanceOf(GameProviderNotFoundError);
432
+ await expect(svc.updateGame({
433
+ id: created.id,
434
+ categoryIds: ['00000000-0000-4000-8000-000000000000'],
435
+ ...ACTOR,
436
+ })).rejects.toBeInstanceOf(GameCategoryNotFoundError);
437
+ await expect(svc.updateGame({
438
+ id: '00000000-0000-4000-8000-000000000000',
439
+ name: 'X',
440
+ ...ACTOR,
441
+ })).rejects.toBeInstanceOf(GameNotFoundError);
442
+ });
443
+ it('rejects an aggregator the target provider is not mapped on', async () => {
444
+ const created = await seedGame();
445
+ const unmapped = await seedProvider({ slug: 'unmapped-studio', name: 'Unmapped' });
446
+ await db.drizzle.db
447
+ .delete(gameProviderAggregatorMapping)
448
+ .where(eq(gameProviderAggregatorMapping.providerId, unmapped.id));
449
+ const svc = makeService();
450
+ await expect(svc.updateGame({ id: created.id, providerId: unmapped.id, ...ACTOR })).rejects.toBeInstanceOf(GameAggregatorNotMappedError);
451
+ await expect(svc.updateGame({ id: created.id, aggregator: 'everymatrix', ...ACTOR })).rejects.toBeInstanceOf(GameAggregatorNotMappedError);
452
+ await db.drizzle.db
453
+ .insert(gameProviderAggregatorMapping)
454
+ .values({ providerId: unmapped.id, aggregator: 'everymatrix', vendorId: 'vendor-unmapped' });
455
+ const moved = await svc.updateGame({
456
+ id: created.id,
457
+ providerId: unmapped.id,
458
+ aggregator: 'everymatrix',
459
+ ...ACTOR,
460
+ });
461
+ expect(moved).toMatchObject({
462
+ provider: { slug: 'unmapped-studio' },
463
+ aggregator: 'everymatrix',
464
+ });
465
+ });
466
+ it('rejects a taken game slug', async () => {
467
+ const created = await seedGame({ slug: 'game-one' });
468
+ await seedGame({ slug: 'game-two' });
469
+ const svc = makeService();
470
+ await expect(svc.updateGame({ id: created.id, slug: 'game-two', ...ACTOR })).rejects.toBeInstanceOf(GameSlugTakenError);
471
+ });
472
+ });
212
473
  async function seedRound(gameId, userId) {
213
474
  const [row] = await db.drizzle.db
214
475
  .insert(gameRound)
@@ -1 +1 @@
1
- {"version":3,"file":"gaming.service.int.test.js","sourceRoot":"","sources":["../../../../src/casino/gaming/__tests__/gaming.service.int.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gaming.service.int.test.js","sourceRoot":"","sources":["../../../../src/casino/gaming/__tests__/gaming.service.int.test.ts"],"names":[],"mappings":"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"}