feat(framework): server testing utils, transaction storage simplify, pathfinding tests (#384)
## Server Testing Utils - Add TestServer, TestClient, MockRoom for unit testing - Export testing utilities from @esengine/server/testing ## Transaction Storage (BREAKING) - Simplify RedisStorage/MongoStorage to factory pattern only - Remove DI client injection option - Add lazy connection and Symbol.asyncDispose support - Add 161 unit tests with full coverage ## Pathfinding Tests - Add 150 unit tests covering all components - BinaryHeap, Heuristics, AStarPathfinder, GridMap, NavMesh, PathSmoother ## Docs - Update storage.md for new factory pattern API
This commit is contained in:
48
.changeset/transaction-storage-simplify.md
Normal file
48
.changeset/transaction-storage-simplify.md
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
"@esengine/transaction": major
|
||||
---
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
### Storage API Simplification
|
||||
|
||||
RedisStorage and MongoStorage now use **factory pattern only** for connection management. The direct client injection option has been removed.
|
||||
|
||||
**Before (removed):**
|
||||
```typescript
|
||||
// Direct client injection - NO LONGER SUPPORTED
|
||||
const storage = new RedisStorage({ client: redisClient });
|
||||
const storage = new MongoStorage({ client: mongoClient, database: 'game' });
|
||||
```
|
||||
|
||||
**After (factory pattern only):**
|
||||
```typescript
|
||||
// RedisStorage
|
||||
const storage = new RedisStorage({
|
||||
factory: () => new Redis('redis://localhost:6379'),
|
||||
prefix: 'tx:',
|
||||
transactionTTL: 86400,
|
||||
});
|
||||
|
||||
// MongoStorage
|
||||
const storage = new MongoStorage({
|
||||
factory: async () => {
|
||||
const client = new MongoClient('mongodb://localhost:27017');
|
||||
await client.connect();
|
||||
return client;
|
||||
},
|
||||
database: 'game',
|
||||
});
|
||||
```
|
||||
|
||||
### New Features
|
||||
|
||||
- **Lazy Connection**: Connection is established on first operation, not at construction time
|
||||
- **Automatic Cleanup**: Support `await using` syntax (TypeScript 5.2+) for automatic resource cleanup
|
||||
- **Explicit Close**: Call `storage.close()` when done, or use `await using` for automatic disposal
|
||||
|
||||
### Migration Guide
|
||||
|
||||
1. Replace `client` option with `factory` function
|
||||
2. Add `storage.close()` call when done, or use `await using`
|
||||
3. For MongoStorage, ensure factory returns a connected client
|
||||
Reference in New Issue
Block a user