@sprucelabs/data-stores 19.3.3 → 20.0.0
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.
- package/build/.spruce/errors/dataStores/indexNotFound.schema.js +6 -0
- package/build/.spruce/errors/errors.types.d.ts +7 -0
- package/build/databases/MongoDatabase.js +10 -6
- package/build/databases/NeDbDatabase.js +6 -2
- package/build/errors/SpruceError.js +3 -0
- package/build/errors/indexNotFound.builder.d.ts +4 -0
- package/build/errors/indexNotFound.builder.js +4 -0
- package/build/esm/.spruce/errors/errors.types.d.ts +7 -0
- package/build/esm/databases/MongoDatabase.js +10 -6
- package/build/esm/databases/NeDbDatabase.js +6 -2
- package/build/esm/errors/SpruceError.js +3 -0
- package/build/esm/errors/indexNotFound.builder.d.ts +4 -0
- package/build/esm/errors/indexNotFound.builder.js +4 -0
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.js +1 -0
- package/build/esm/tests/databaseAssertUtil.d.ts +74 -67
- package/build/esm/tests/databaseAssertUtil.js +620 -244
- package/build/esm/tests/pluckAssertionMethods.d.ts +1 -1
- package/build/esm/types/database.types.d.ts +6 -0
- package/build/esm/types/query.types.d.ts +5 -4
- package/build/index.d.ts +1 -0
- package/build/index.js +3 -1
- package/build/tests/databaseAssertUtil.d.ts +74 -67
- package/build/tests/databaseAssertUtil.js +599 -243
- package/build/tests/pluckAssertionMethods.d.ts +1 -1
- package/build/types/database.types.d.ts +6 -0
- package/build/types/query.types.d.ts +5 -4
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import databaseAssertUtil from './databaseAssertUtil';
|
|
2
|
-
export default function pluckAssertionMethods(util: typeof databaseAssertUtil): ("collectionName" | "
|
|
2
|
+
export default function pluckAssertionMethods(util: typeof databaseAssertUtil): ("collectionName" | "assertThrowsWithInvalidConnectionString" | "assertThrowsWhenCantConnect" | "assertThrowsWithBadDatabaseName" | "assertEmptyDatabaseReturnsEmptyArray" | "assertKnowsIfConnectionClosed" | "assertFindOneOnEmptyDatabaseReturnsNull" | "assertCanSortDesc" | "assertCanSortAsc" | "assertCanSortById" | "assertCanQueryWithOr" | "generateIdDifferentEachTime" | "assertInsertingGeneratesId" | "assertCanCreateMany" | "assertCanLimitResults" | "assertCanCreateWithObjectField" | "assertCanCountOnId" | "assertCanCount" | "assertThrowsWhenUpdatingRecordNotFound" | "assertCanUpdate" | "assertCanUpdateMany" | "assertCanPushOntoArrayValue" | "canUpdateWithObjectField" | "canUpdateFieldInObjectFieldWithTargettedWhere" | "assertCanSaveAndGetNullAndUndefined" | "assertCanUpsertOne" | "assertCanUpsertNull" | "assertCanPushToArrayOnUpsert" | "assertCanLimitResultsToZero" | "assertCanFindWithBooleanField" | "assertCanQueryByGtLtGteLte" | "assertCanQueryPathWithDotSyntax" | "assertCanReturnOnlySelectFields" | "assertCanSearchByRegex" | "assertCanFindWithNe" | "assertCanFindWithIn" | "assertCanDeleteRecord" | "assertCanDeleteOne" | "assertHasNoUniqueIndexToStart" | "assertCanCreateUniqueIndex" | "assertCanCreateMultiFieldUniqueIndex" | "assertCantCreateUniqueIndexTwice" | "assertCanDropUniqueIndex" | "assertCanDropCompoundUniqueIndex" | "assertCantDropUniqueIndexThatDoesntExist" | "assertCantDropIndexWhenNoIndexExists" | "assertCantDropCompoundUniqueIndexThatDoesntExist" | "assertSyncingUniqueIndexsAddsMissingIndexes" | "assertSyncingUniqueIndexsSkipsExistingIndexs" | "assertSyncingUniqueIndexesRemovesExtraIndexes" | "assertSyncingUniqueIndexesIsRaceProof" | "assertSyncingIndexesDoesNotAddAndRemove" | "assertUniqueIndexBlocksDuplicates" | "assertDuplicateKeyThrowsOnInsert" | "assertSettingUniqueIndexViolationThrowsSpruceError" | "assertCanCreateUniqueIndexOnNestedField" | "assertUpsertWithUniqueIndex" | "assertNestedFieldIndexUpdates" | "assertHasNoIndexToStart" | "assertCanCreateIndex" | "assertCantCreateSameIndexTwice" | "assertCanCreateMultiFieldIndex" | "assertCanDropIndex" | "assertCanDropCompoundIndex" | "assertCantDropCompoundIndexThatDoesNotExist" | "assertSyncIndexesSkipsExisting" | "assertSyncIndexesRemovesExtraIndexes" | "assertSyncIndexesHandlesRaceConditions" | "assertSyncIndexesDoesNotRemoveExisting" | "assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected" | "runSuite" | "_getFilteredIndexes" | "_filterIdIndex" | "_assertUpdateUpdatedRightNumberOfRecords" | "shutdown" | "_assertThrowsExpectedNotFoundOnUpdateOne" | "_assert$orReturnsExpectedTotalRecords" | "_assertCanCreateMultiFieldIndex")[];
|
|
@@ -32,3 +32,9 @@ export interface DatabaseOptions {
|
|
|
32
32
|
dbName?: string;
|
|
33
33
|
log?: Log;
|
|
34
34
|
}
|
|
35
|
+
export type TestConnect = (connectionString?: string, dbName?: string) => Promise<{
|
|
36
|
+
db: Database;
|
|
37
|
+
scheme: string;
|
|
38
|
+
connectionStringWithRandomBadDatabaseName: string;
|
|
39
|
+
badDatabaseName: string;
|
|
40
|
+
}>;
|
|
@@ -6,13 +6,14 @@ export type QueryBuilder<Query> = {
|
|
|
6
6
|
} & {
|
|
7
7
|
id?: string | QuerySelector<string>;
|
|
8
8
|
};
|
|
9
|
+
export interface QuerySortField {
|
|
10
|
+
field: string;
|
|
11
|
+
direction: 'asc' | 'desc';
|
|
12
|
+
}
|
|
9
13
|
export interface QueryOptions {
|
|
10
14
|
skip?: number;
|
|
11
15
|
limit?: number;
|
|
12
|
-
sort?:
|
|
13
|
-
field: string;
|
|
14
|
-
direction: 'asc' | 'desc';
|
|
15
|
-
}[];
|
|
16
|
+
sort?: QuerySortField[];
|
|
16
17
|
includeFields?: string[];
|
|
17
18
|
}
|
|
18
19
|
export type FlattenAndPathKeys<O extends Obj, T extends Obj = PathKeys<O>> = Flatten<T>;
|
package/build/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './types/database.types';
|
|
|
14
14
|
export * from './types/query.types';
|
|
15
15
|
export * from './types/stores.types';
|
|
16
16
|
export * from './constants';
|
|
17
|
+
export { default as DataStoresError } from './errors/SpruceError';
|
|
17
18
|
export { default as generateId } from './utilities/generateIdDeprecated';
|
|
18
19
|
export { default as CursorPager } from './cursors/CursorPager';
|
|
19
20
|
export * from './cursors/CursorPager';
|
package/build/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.databaseAssertUtil = exports.CursorPagerFaker = exports.CursorPager = exports.generateId = exports.mongoUtil = exports.NeDbDatabase = exports.MongoDatabase = exports.StoreLoader = exports.DatabaseFactory = exports.StoreFactory = exports.AbstractStore = exports.DatabaseFixture = exports.AbstractDatabaseTest = void 0;
|
|
20
|
+
exports.databaseAssertUtil = exports.CursorPagerFaker = exports.CursorPager = exports.generateId = exports.DataStoresError = exports.mongoUtil = exports.NeDbDatabase = exports.MongoDatabase = exports.StoreLoader = exports.DatabaseFactory = exports.StoreFactory = exports.AbstractStore = exports.DatabaseFixture = exports.AbstractDatabaseTest = void 0;
|
|
21
21
|
var AbstractDatabaseTest_1 = require("./tests/AbstractDatabaseTest");
|
|
22
22
|
Object.defineProperty(exports, "AbstractDatabaseTest", { enumerable: true, get: function () { return __importDefault(AbstractDatabaseTest_1).default; } });
|
|
23
23
|
var DatabaseFixture_1 = require("./fixtures/DatabaseFixture");
|
|
@@ -43,6 +43,8 @@ __exportStar(require("./types/database.types"), exports);
|
|
|
43
43
|
__exportStar(require("./types/query.types"), exports);
|
|
44
44
|
__exportStar(require("./types/stores.types"), exports);
|
|
45
45
|
__exportStar(require("./constants"), exports);
|
|
46
|
+
var SpruceError_1 = require("./errors/SpruceError");
|
|
47
|
+
Object.defineProperty(exports, "DataStoresError", { enumerable: true, get: function () { return __importDefault(SpruceError_1).default; } });
|
|
46
48
|
var generateIdDeprecated_1 = require("./utilities/generateIdDeprecated");
|
|
47
49
|
Object.defineProperty(exports, "generateId", { enumerable: true, get: function () { return __importDefault(generateIdDeprecated_1).default; } });
|
|
48
50
|
var CursorPager_1 = require("./cursors/CursorPager");
|
|
@@ -1,75 +1,82 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Database, Index, UniqueIndex } from '../types/database.types';
|
|
1
|
+
import { Database, Index, TestConnect, UniqueIndex } from '../types/database.types';
|
|
3
2
|
declare const databaseAssertUtil: {
|
|
4
3
|
collectionName: string;
|
|
5
|
-
runSuite(connect:
|
|
4
|
+
runSuite(connect: TestConnect, tests?: string[]): Promise<void>;
|
|
6
5
|
_getFilteredIndexes(db: Database): Promise<UniqueIndex[] | Index[]>;
|
|
7
6
|
_filterIdIndex(allIndexes: UniqueIndex[] | Index[]): UniqueIndex[] | Index[];
|
|
8
7
|
_assertUpdateUpdatedRightNumberOfRecords(db: Database, search: Record<string, any>, updates: Record<string, any>, expectedUpdateCount: number): Promise<void>;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
generateIdDifferentEachTime(connect: TestConnect): Promise<void>;
|
|
9
|
+
assertCanSortDesc(connect: TestConnect): Promise<void>;
|
|
10
|
+
assertCanSortAsc(connect: TestConnect): Promise<void>;
|
|
11
|
+
assertInsertingGeneratesId(connect: TestConnect): Promise<void>;
|
|
12
|
+
assertThrowsWhenUpdatingRecordNotFound(connect: TestConnect): Promise<void>;
|
|
13
13
|
shutdown(db: Database): Promise<void>;
|
|
14
|
-
assertCanCreateUniqueIndex(connect:
|
|
15
|
-
assertHasNoUniqueIndexToStart(connect:
|
|
16
|
-
|
|
17
|
-
assertCanDeleteOne(connect:
|
|
18
|
-
assertCanDeleteRecord(connect:
|
|
19
|
-
assertCanLimitResultsToZero(connect:
|
|
20
|
-
assertCanLimitResults(connect:
|
|
21
|
-
assertFindOneOnEmptyDatabaseReturnsNull(connect:
|
|
22
|
-
assertEmptyDatabaseReturnsEmptyArray(connect:
|
|
23
|
-
assertCanPushOntoArrayValue(connect:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
14
|
+
assertCanCreateUniqueIndex(connect: TestConnect): Promise<void>;
|
|
15
|
+
assertHasNoUniqueIndexToStart(connect: TestConnect): Promise<void>;
|
|
16
|
+
assertCanUpsertOne(connect: TestConnect): Promise<void>;
|
|
17
|
+
assertCanDeleteOne(connect: TestConnect): Promise<void>;
|
|
18
|
+
assertCanDeleteRecord(connect: TestConnect): Promise<void>;
|
|
19
|
+
assertCanLimitResultsToZero(connect: TestConnect): Promise<void>;
|
|
20
|
+
assertCanLimitResults(connect: TestConnect): Promise<void>;
|
|
21
|
+
assertFindOneOnEmptyDatabaseReturnsNull(connect: TestConnect): Promise<void>;
|
|
22
|
+
assertEmptyDatabaseReturnsEmptyArray(connect: TestConnect): Promise<void>;
|
|
23
|
+
assertCanPushOntoArrayValue(connect: TestConnect): Promise<void>;
|
|
24
|
+
assertCanCreateWithObjectField(connect: TestConnect): Promise<void>;
|
|
25
|
+
canUpdateWithObjectField(connect: TestConnect): Promise<void>;
|
|
26
|
+
canUpdateFieldInObjectFieldWithTargettedWhere(connect: TestConnect): Promise<void>;
|
|
27
|
+
assertCanCreateMany(connect: TestConnect): Promise<void>;
|
|
28
|
+
assertCanUpdateMany(connect: TestConnect): Promise<void>;
|
|
29
|
+
assertCanQueryWithOr(connect: TestConnect): Promise<void>;
|
|
30
|
+
assertCanUpdate(connect: TestConnect): Promise<void>;
|
|
31
|
+
assertCanSortById(connect: TestConnect): Promise<void>;
|
|
32
|
+
assertCanCreateMultiFieldUniqueIndex(connect: TestConnect): Promise<void>;
|
|
33
|
+
assertSettingUniqueIndexViolationThrowsSpruceError(connect: TestConnect): Promise<void>;
|
|
34
|
+
assertDuplicateKeyThrowsOnInsert(connect: TestConnect): Promise<void>;
|
|
35
|
+
assertSyncingIndexesDoesNotAddAndRemove(connect: TestConnect): Promise<void>;
|
|
36
|
+
assertSyncingUniqueIndexesRemovesExtraIndexes(connect: TestConnect): Promise<void>;
|
|
37
|
+
assertSyncingUniqueIndexsSkipsExistingIndexs(connect: TestConnect): Promise<void>;
|
|
38
|
+
assertSyncingUniqueIndexsAddsMissingIndexes(connect: TestConnect): Promise<void>;
|
|
39
|
+
assertCantDropCompoundUniqueIndexThatDoesntExist(connect: TestConnect): Promise<void>;
|
|
40
|
+
assertCantDropIndexWhenNoIndexExists(connect: TestConnect): Promise<void>;
|
|
41
|
+
assertCantDropUniqueIndexThatDoesntExist(connect: TestConnect): Promise<void>;
|
|
42
|
+
assertCanDropCompoundUniqueIndex(connect: TestConnect): Promise<void>;
|
|
43
|
+
assertCanDropUniqueIndex(connect: TestConnect): Promise<void>;
|
|
44
|
+
assertCantCreateUniqueIndexTwice(connect: TestConnect): Promise<void>;
|
|
45
|
+
assertSyncingUniqueIndexesIsRaceProof(connect: TestConnect): Promise<void>;
|
|
46
|
+
assertUniqueIndexBlocksDuplicates(connect: TestConnect): Promise<void>;
|
|
47
|
+
assertCanCreateUniqueIndexOnNestedField(connect: TestConnect): Promise<void>;
|
|
48
|
+
assertCanPushToArrayOnUpsert(connect: TestConnect): Promise<void>;
|
|
49
|
+
assertCanSearchByRegex(connect: TestConnect): Promise<void>;
|
|
50
|
+
assertCanReturnOnlySelectFields(connect: TestConnect): Promise<void>;
|
|
51
|
+
assertThrowsWithBadDatabaseName(connect: TestConnect): Promise<void>;
|
|
52
|
+
assertThrowsWhenCantConnect(connect: TestConnect): Promise<void>;
|
|
53
|
+
assertThrowsWithInvalidConnectionString(connect: TestConnect): Promise<void>;
|
|
54
|
+
assertKnowsIfConnectionClosed(connect: TestConnect): Promise<void>;
|
|
55
|
+
assertCanQueryPathWithDotSyntax(connect: TestConnect): Promise<void>;
|
|
56
|
+
assertCanQueryByGtLtGteLte(connect: TestConnect): Promise<void>;
|
|
57
|
+
assertCanFindWithNe(connect: TestConnect): Promise<void>;
|
|
58
|
+
assertCanFindWithIn(connect: TestConnect): Promise<void>;
|
|
59
|
+
assertCanFindWithBooleanField(connect: TestConnect): Promise<void>;
|
|
60
|
+
assertCanCountOnId(connect: TestConnect): Promise<void>;
|
|
61
|
+
assertCanCount(connect: TestConnect): Promise<void>;
|
|
62
|
+
assertCanUpsertNull(connect: TestConnect): Promise<void>;
|
|
63
|
+
assertCanSaveAndGetNullAndUndefined(connect: TestConnect): Promise<void>;
|
|
64
|
+
assertSyncIndexesDoesNotRemoveExisting(connect: TestConnect): Promise<void>;
|
|
65
|
+
assertSyncIndexesRemovesExtraIndexes(connect: TestConnect): Promise<void>;
|
|
66
|
+
assertSyncIndexesSkipsExisting(connect: TestConnect): Promise<void>;
|
|
67
|
+
assertCantDropCompoundIndexThatDoesNotExist(connect: TestConnect): Promise<void>;
|
|
68
|
+
assertCanDropCompoundIndex(connect: TestConnect): Promise<void>;
|
|
69
|
+
assertCanDropIndex(connect: TestConnect): Promise<void>;
|
|
70
|
+
assertCanCreateMultiFieldIndex(connect: TestConnect): Promise<void>;
|
|
71
|
+
assertCantCreateSameIndexTwice(connect: TestConnect): Promise<void>;
|
|
72
|
+
assertCanCreateIndex(connect: TestConnect): Promise<void>;
|
|
73
|
+
assertHasNoIndexToStart(connect: TestConnect): Promise<void>;
|
|
74
|
+
assertNestedFieldIndexUpdates(connect: TestConnect): Promise<void>;
|
|
75
|
+
assertUpsertWithUniqueIndex(connect: TestConnect): Promise<void>;
|
|
76
|
+
assertSyncIndexesHandlesRaceConditions(connect: TestConnect): Promise<void>;
|
|
77
|
+
assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected(connect: TestConnect): Promise<void>;
|
|
78
|
+
_assertThrowsExpectedNotFoundOnUpdateOne(db: Database, query: Record<string, any>): Promise<void>;
|
|
79
|
+
_assert$orReturnsExpectedTotalRecords(db: Database, $or: Record<string, any>[], expected: number): Promise<void>;
|
|
80
|
+
_assertCanCreateMultiFieldIndex(connect: TestConnect, fields: string[]): Promise<void>;
|
|
74
81
|
};
|
|
75
82
|
export default databaseAssertUtil;
|