Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
getInMemoryDatabase,
inMemoryProjector,
inMemorySingleStreamProjection,
type DocumentsCollection,
type InMemoryDocumentsCollection,
type ReadEvent,
} from '@event-driven-io/emmett';
import {
Expand All @@ -28,7 +28,7 @@ void describe('EventStoreDB event store started consumer', () => {
let eventStoreDB: StartedEventStoreDBContainer;
let connectionString: string;
let eventStore: EventStoreDBEventStore;
let summaries: DocumentsCollection<ShoppingCartSummary>;
let summaries: InMemoryDocumentsCollection<ShoppingCartSummary>;
const productItem = { price: 10, productId: uuid(), quantity: 10 };
const confirmedAt = new Date();
const database = getInMemoryDatabase();
Expand Down Expand Up @@ -84,7 +84,7 @@ void describe('EventStoreDB event store started consumer', () => {
try {
await consumer.start();

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -146,7 +146,7 @@ void describe('EventStoreDB event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -212,7 +212,7 @@ void describe('EventStoreDB event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -279,7 +279,7 @@ void describe('EventStoreDB event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -352,7 +352,7 @@ void describe('EventStoreDB event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -433,7 +433,7 @@ void describe('EventStoreDB event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
getInMemoryDatabase,
inMemoryProjector,
inMemorySingleStreamProjection,
type DocumentsCollection,
type InMemoryDocumentsCollection,
type ReadEvent,
} from '@event-driven-io/emmett';
import {
Expand All @@ -28,7 +28,7 @@ void describe('PostgreSQL event store started consumer', () => {
let postgres: StartedPostgreSqlContainer;
let connectionString: string;
let eventStore: PostgresEventStore;
let summaries: DocumentsCollection<ShoppingCartSummary>;
let summaries: InMemoryDocumentsCollection<ShoppingCartSummary>;
const productItem = { price: 10, productId: uuid(), quantity: 10 };
const confirmedAt = new Date();
const database = getInMemoryDatabase();
Expand Down Expand Up @@ -87,7 +87,7 @@ void describe('PostgreSQL event store started consumer', () => {
try {
await consumer.start();

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -150,7 +150,7 @@ void describe('PostgreSQL event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -217,7 +217,7 @@ void describe('PostgreSQL event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -285,7 +285,7 @@ void describe('PostgreSQL event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -359,7 +359,7 @@ void describe('PostgreSQL event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down Expand Up @@ -441,7 +441,7 @@ void describe('PostgreSQL event store started consumer', () => {

await consumerPromise;

const summary = summaries.findOne((d) => d._id === streamName);
const summary = await summaries.findOne((d) => d._id === streamName);

assertMatches(summary, {
_id: streamName,
Expand Down
73 changes: 40 additions & 33 deletions src/packages/emmett/src/database/handle.unit.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { equal, ok, deepStrictEqual } from 'node:assert/strict';
import { deepStrictEqual, equal, ok } from 'node:assert/strict';
import { beforeEach, describe, it } from 'node:test';
import {
type DocumentsCollection,
type InMemoryDocumentsCollection,
getInMemoryDatabase,
} from './inMemoryDatabase';

Expand All @@ -23,45 +23,52 @@ type User = {
};

void describe('InMemoryDatabase Handle Operations', () => {
let users: DocumentsCollection<User>;
let users: InMemoryDocumentsCollection<User>;

beforeEach(() => {
const db = getInMemoryDatabase();
users = db.collection<User>('users');
});
void it('should NOT insert a new document if it does not exist and expected DOCUMENT_EXISTS', () => {

void it('should NOT insert a new document if it does not exist and expected DOCUMENT_EXISTS', async () => {
const nonExistingId = 'test';
const newDoc: User = { name: 'John', age: 25 };
const handle = (_existing: User | null) => newDoc;
const resultInMemoryDatabase = users.handle(nonExistingId, handle, {
const resultInMemoryDatabase = await users.handle(nonExistingId, handle, {
expectedVersion: 'DOCUMENT_EXISTS',
});
equal(resultInMemoryDatabase.successful, false);
equal(resultInMemoryDatabase.document, null);
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === nonExistingId,
);
equal(inMemoryDatabaseDoc, null);
});
void it('should NOT insert a new document if it does not exist and expected is numeric value', () => {

void it('should NOT insert a new document if it does not exist and expected is numeric value', async () => {
const nonExistingId = 'test';
const newDoc: User = { name: 'John', age: 25 };
const handle = (_existing: User | null) => newDoc;
const resultInMemoryDatabase = users.handle(nonExistingId, handle, {

const resultInMemoryDatabase = await users.handle(nonExistingId, handle, {
expectedVersion: 1n,
});

equal(resultInMemoryDatabase.successful, false);
equal(resultInMemoryDatabase.document, null);
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === nonExistingId,
);
equal(inMemoryDatabaseDoc, null);
});
void it('should replace an existing document when expected version matches', () => {

void it('should replace an existing document when expected version matches', async () => {
const existingDoc: User = { _id: 'existingId', name: 'John', age: 25 };
const updatedDoc: User = { _id: existingDoc._id!, name: 'John', age: 30 };
const inMemoryDatabaseInsertResult = users.insertOne(existingDoc);
const inMemoryDatabaseInsertResult = await users.insertOne(existingDoc);
const handle = (_existing: User | null) => updatedDoc;
const resultInMemoryDatabase = users.handle(

const resultInMemoryDatabase = await users.handle(
inMemoryDatabaseInsertResult.insertedId!,
handle,
);
Expand All @@ -71,20 +78,20 @@ void describe('InMemoryDatabase Handle Operations', () => {
...updatedDoc,
_version: 2n,
});
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === inMemoryDatabaseInsertResult.insertedId,
);
deepStrictEqual(inMemoryDatabaseDoc, {
...updatedDoc,
_version: 2n,
});
});
void it('should NOT replace an existing document when expected DOCUMENT_DOES_NOT_EXIST', () => {
void it('should NOT replace an existing document when expected DOCUMENT_DOES_NOT_EXIST', async () => {
const existingDoc: User = { _id: 'test', name: 'John', age: 25 };
const updatedDoc: User = { _id: existingDoc._id!, name: 'John', age: 30 };
const inMemoryDatabaseInsertResult = users.insertOne(existingDoc);
const inMemoryDatabaseInsertResult = await users.insertOne(existingDoc);
const handle = (_existing: User | null) => updatedDoc;
const resultInMemoryDatabase = users.handle(
const resultInMemoryDatabase = await users.handle(
inMemoryDatabaseInsertResult.insertedId!,
handle,
{
Expand All @@ -96,20 +103,20 @@ void describe('InMemoryDatabase Handle Operations', () => {
...existingDoc,
_version: 1n,
});
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === inMemoryDatabaseInsertResult.insertedId,
);
deepStrictEqual(inMemoryDatabaseDoc, {
...existingDoc,
_version: 1n,
});
});
void it('should NOT replace an existing document when expected version is mismatched ', () => {
void it('should NOT replace an existing document when expected version is mismatched ', async () => {
const existingDoc: User = { _id: 'test', name: 'John', age: 25 };
const updatedDoc: User = { _id: existingDoc._id!, name: 'John', age: 30 };
const inMemoryDatabaseInsertResult = users.insertOne(existingDoc);
const inMemoryDatabaseInsertResult = await users.insertOne(existingDoc);
const handle = (_existing: User | null) => updatedDoc;
const resultInMemoryDatabase = users.handle(
const resultInMemoryDatabase = await users.handle(
inMemoryDatabaseInsertResult.insertedId!,
handle,
{
Expand All @@ -121,19 +128,19 @@ void describe('InMemoryDatabase Handle Operations', () => {
...existingDoc,
_version: 1n,
});
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === inMemoryDatabaseInsertResult.insertedId,
);
deepStrictEqual(inMemoryDatabaseDoc, {
...existingDoc,
_version: 1n,
});
});
void it('should delete an existing document when expected version matches', () => {
void it('should delete an existing document when expected version matches', async () => {
const existingDoc: User = { name: 'John', age: 25 };
const inMemoryDatabaseInsertResult = users.insertOne(existingDoc);
const inMemoryDatabaseInsertResult = await users.insertOne(existingDoc);
const handle = (_existing: User | null) => null;
const resultInMemoryDatabase = users.handle(
const resultInMemoryDatabase = await users.handle(
inMemoryDatabaseInsertResult.insertedId!,
handle,
{
Expand All @@ -142,16 +149,16 @@ void describe('InMemoryDatabase Handle Operations', () => {
);
ok(resultInMemoryDatabase.successful);
equal(resultInMemoryDatabase.document, null);
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === inMemoryDatabaseInsertResult.insertedId,
);
equal(inMemoryDatabaseDoc, null);
});
void it('should NOT delete an existing document when expected DOCUMENT_DOES_NOT_EXIST', () => {
void it('should NOT delete an existing document when expected DOCUMENT_DOES_NOT_EXIST', async () => {
const existingDoc: User = { name: 'John', age: 25 };
const inMemoryDatabaseInsertResult = users.insertOne(existingDoc);
const inMemoryDatabaseInsertResult = await users.insertOne(existingDoc);
const handle = (_existing: User | null) => null;
const resultInMemoryDatabase = users.handle(
const resultInMemoryDatabase = await users.handle(
inMemoryDatabaseInsertResult.insertedId!,
handle,
{
Expand All @@ -164,7 +171,7 @@ void describe('InMemoryDatabase Handle Operations', () => {
_id: inMemoryDatabaseInsertResult.insertedId!,
_version: 1n,
});
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === inMemoryDatabaseInsertResult.insertedId,
);
deepStrictEqual(inMemoryDatabaseDoc, {
Expand All @@ -173,11 +180,11 @@ void describe('InMemoryDatabase Handle Operations', () => {
_version: 1n,
});
});
void it('should NOT delete an existing document when expected version is mismatched', () => {
void it('should NOT delete an existing document when expected version is mismatched', async () => {
const existingDoc: User = { name: 'John', age: 25 };
const inMemoryDatabaseInsertResult = users.insertOne(existingDoc);
const inMemoryDatabaseInsertResult = await users.insertOne(existingDoc);
const handle = (_existing: User | null) => null;
const resultInMemoryDatabase = users.handle(
const resultInMemoryDatabase = await users.handle(
inMemoryDatabaseInsertResult.insertedId!,
handle,
{
Expand All @@ -190,7 +197,7 @@ void describe('InMemoryDatabase Handle Operations', () => {
_id: inMemoryDatabaseInsertResult.insertedId!,
_version: 1n,
});
const inMemoryDatabaseDoc = users.findOne(
const inMemoryDatabaseDoc = await users.findOne(
({ _id }) => _id === inMemoryDatabaseInsertResult.insertedId,
);
deepStrictEqual(inMemoryDatabaseDoc, {
Expand Down
Loading