@slango/mangusta 2.0.2 → 2.1.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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +13 -13
- package/CHANGELOG.md +6 -0
- package/package.json +15 -4
- package/src/middleware/compactId.spec.ts +1 -1
- package/src/middleware/email.spec.ts +1 -1
- package/src/middleware/owner.spec.ts +1 -1
- package/src/middleware/password.spec.ts +1 -1
- package/src/middleware/reactions.spec.ts +1 -1
- package/src/middleware/tags.spec.ts +1 -1
- package/src/middleware/timestamps.spec.ts +1 -1
- package/src/test-utils/mongooseTestEnvironment.ts +54 -0
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-lint.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
|
|
2
|
-
> @slango/mangusta@2.0
|
|
2
|
+
> @slango/mangusta@2.1.0 test /home/runner/work/slango/slango/packages/mangusta
|
|
3
3
|
> vitest --run
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv4.0.16 [39m[90m/home/runner/work/slango/slango/packages/mangusta[39m
|
|
7
7
|
|
|
8
|
-
[90mstdout[2m | src/middleware/
|
|
8
|
+
[90mstdout[2m | src/middleware/tags.spec.ts
|
|
9
9
|
[22m[39mDownloading MongoDB "8.2.1": 0% (0mb / 122mb)
|
|
10
10
|
|
|
11
|
-
[90mstdout[2m | src/middleware/
|
|
11
|
+
[90mstdout[2m | src/middleware/tags.spec.ts
|
|
12
12
|
[22m[39mDownloading MongoDB "8.2.1": 100% (122mb / 122mb)
|
|
13
13
|
|
|
14
|
-
[90mstdout[2m | src/middleware/
|
|
14
|
+
[90mstdout[2m | src/middleware/tags.spec.ts
|
|
15
15
|
[22m[39mDownloading MongoDB "8.2.1": 100% (0mb / 0mb)
|
|
16
16
|
|
|
17
|
-
[32m✓[39m src/middleware/
|
|
18
|
-
[32m✓[39m src/middleware/email.spec.ts [2m([22m[2m7 tests[22m[2m)[22m[32m
|
|
19
|
-
[32m✓[39m src/middleware/owner.spec.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
20
|
-
[32m✓[39m src/middleware/
|
|
21
|
-
[32m✓[39m src/middleware/reactions.spec.ts [2m([22m[2m7 tests[22m[2m)[22m[33m
|
|
22
|
-
[32m✓[39m src/middleware/password.spec.ts [2m([22m[2m4 tests[22m[2m)[22m[33m
|
|
23
|
-
[32m✓[39m src/middleware/timestamps.spec.ts [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
17
|
+
[32m✓[39m src/middleware/tags.spec.ts [2m([22m[2m8 tests[22m[2m)[22m[33m 4371[2mms[22m[39m
|
|
18
|
+
[32m✓[39m src/middleware/email.spec.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 251[2mms[22m[39m
|
|
19
|
+
[32m✓[39m src/middleware/owner.spec.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 221[2mms[22m[39m
|
|
20
|
+
[32m✓[39m src/middleware/compactId.spec.ts [2m([22m[2m6 tests[22m[2m)[22m[33m 6391[2mms[22m[39m
|
|
21
|
+
[32m✓[39m src/middleware/reactions.spec.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 6374[2mms[22m[39m
|
|
22
|
+
[32m✓[39m src/middleware/password.spec.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 598[2mms[22m[39m
|
|
23
|
+
[32m✓[39m src/middleware/timestamps.spec.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 221[2mms[22m[39m
|
|
24
24
|
|
|
25
25
|
[2m Test Files [22m [1m[32m7 passed[39m[22m[90m (7)[39m
|
|
26
26
|
[2m Tests [22m [1m[32m41 passed[39m[22m[90m (41)[39m
|
|
27
|
-
[2m Start at [22m
|
|
28
|
-
[2m Duration [22m 8.
|
|
27
|
+
[2m Start at [22m 13:49:30
|
|
28
|
+
[2m Duration [22m 8.30s[2m (transform 482ms, setup 0ms, import 3.57s, tests 18.43s, environment 3ms)[22m
|
|
29
29
|
|
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slango/mangusta",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Mongoose middlewares and utilities",
|
|
6
6
|
"type": "module",
|
|
@@ -8,14 +8,25 @@
|
|
|
8
8
|
"./*": {
|
|
9
9
|
"import": "./dist/*.js",
|
|
10
10
|
"types": "./dist/*.d.ts"
|
|
11
|
+
},
|
|
12
|
+
"./test-utils/*": {
|
|
13
|
+
"import": "./dist/test-utils/*.js",
|
|
14
|
+
"types": "./dist/test-utils/*.d.ts"
|
|
11
15
|
}
|
|
12
16
|
},
|
|
13
17
|
"dependencies": {
|
|
14
18
|
"bcrypt": "6.0.0",
|
|
19
|
+
"mongodb-memory-server": "11.0.0",
|
|
15
20
|
"nanoid": "5.1.6"
|
|
16
21
|
},
|
|
17
22
|
"peerDependencies": {
|
|
18
|
-
"mongoose": "^9.0.2"
|
|
23
|
+
"mongoose": "^9.0.2",
|
|
24
|
+
"vitest": "^4.0.0"
|
|
25
|
+
},
|
|
26
|
+
"peerDependenciesMeta": {
|
|
27
|
+
"vitest": {
|
|
28
|
+
"optional": true
|
|
29
|
+
}
|
|
19
30
|
},
|
|
20
31
|
"devDependencies": {
|
|
21
32
|
"@types/bcrypt": "6.0.0",
|
|
@@ -25,9 +36,9 @@
|
|
|
25
36
|
"mongoose": "9.0.2",
|
|
26
37
|
"typescript": "5.9.3",
|
|
27
38
|
"vitest": "4.0.16",
|
|
28
|
-
"@slango.configs/eslint": "1.1.
|
|
39
|
+
"@slango.configs/eslint": "1.1.35",
|
|
29
40
|
"@slango.configs/typescript": "1.0.7",
|
|
30
|
-
"@slango.configs/vitest": "
|
|
41
|
+
"@slango.configs/vitest": "2.0.0"
|
|
31
42
|
},
|
|
32
43
|
"scripts": {
|
|
33
44
|
"build": "tsc -p tsconfig.build.json",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
|
|
2
1
|
import { Document } from 'mongoose';
|
|
3
2
|
import { describe, expect, it } from 'vitest';
|
|
4
3
|
|
|
5
4
|
import { createModelWithPlugin } from '../test-utils/model.js';
|
|
5
|
+
import { setupMongoTestEnvironment } from '../test-utils/mongooseTestEnvironment.js';
|
|
6
6
|
import { PluginFunction } from '../types.js';
|
|
7
7
|
import compactIdMiddleware, { CompactIdMiddlewareOptions, WithCompactId } from './compactId.js';
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
|
|
2
1
|
import mongoose, { Document, model, Schema } from 'mongoose';
|
|
3
2
|
import { describe, expect, it } from 'vitest';
|
|
4
3
|
|
|
4
|
+
import { setupMongoTestEnvironment } from '../test-utils/mongooseTestEnvironment.js';
|
|
5
5
|
import emailMiddleware from './email.js';
|
|
6
6
|
|
|
7
7
|
setupMongoTestEnvironment();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
|
|
2
1
|
import mongoose, { Document, Types } from 'mongoose';
|
|
3
2
|
import { describe, expect, it } from 'vitest';
|
|
4
3
|
|
|
5
4
|
import { createModelWithPlugin } from '../test-utils/model.js';
|
|
5
|
+
import { setupMongoTestEnvironment } from '../test-utils/mongooseTestEnvironment.js';
|
|
6
6
|
import { PluginFunction } from '../types.js';
|
|
7
7
|
import ownerMiddleware, { OwnerMiddlewareOptions, WithOwner } from './owner.js';
|
|
8
8
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
|
|
2
1
|
import mongoose, { Document, model, Schema } from 'mongoose';
|
|
3
2
|
import { describe, expect, it } from 'vitest';
|
|
4
3
|
|
|
5
4
|
import type { PluginFunction } from '../types.js';
|
|
6
5
|
|
|
6
|
+
import { setupMongoTestEnvironment } from '../test-utils/mongooseTestEnvironment.js';
|
|
7
7
|
import passwordMiddleware, { PasswordMiddlewareOptions, WithPassword } from './password.js';
|
|
8
8
|
|
|
9
9
|
setupMongoTestEnvironment();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
|
|
2
1
|
import { Document, Schema, Types } from 'mongoose';
|
|
3
2
|
import { describe, expect, it } from 'vitest';
|
|
4
3
|
|
|
5
4
|
import type { PluginFunction } from '../types.js';
|
|
6
5
|
|
|
7
6
|
import { createModelWithPlugin } from '../test-utils/model.js';
|
|
7
|
+
import { setupMongoTestEnvironment } from '../test-utils/mongooseTestEnvironment.js';
|
|
8
8
|
import reactionsMiddleware, {
|
|
9
9
|
defaultReactionTypes,
|
|
10
10
|
ReactionCountSummary,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
|
|
2
1
|
import mongoose, { Document } from 'mongoose';
|
|
3
2
|
import { describe, expect, it } from 'vitest';
|
|
4
3
|
|
|
5
4
|
import { createModelWithPlugin } from '../test-utils/model.js';
|
|
5
|
+
import { setupMongoTestEnvironment } from '../test-utils/mongooseTestEnvironment.js';
|
|
6
6
|
import { PluginFunction } from '../types.js';
|
|
7
7
|
import tagsMiddleware, { TagsMiddlewareOptions, WithTags } from './tags.js';
|
|
8
8
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
|
|
2
1
|
import { Document } from 'mongoose';
|
|
3
2
|
import { setTimeout as delay } from 'node:timers/promises';
|
|
4
3
|
import { describe, expect, it } from 'vitest';
|
|
5
4
|
|
|
6
5
|
import { createModelWithPlugin } from '../test-utils/model.js';
|
|
6
|
+
import { setupMongoTestEnvironment } from '../test-utils/mongooseTestEnvironment.js';
|
|
7
7
|
import timestampsMiddleware, { TimestampsMiddlewareOptions, WithTimestamps } from './timestamps.js';
|
|
8
8
|
|
|
9
9
|
setupMongoTestEnvironment();
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { MongoMemoryServer } from 'mongodb-memory-server';
|
|
2
|
+
import mongoose from 'mongoose';
|
|
3
|
+
import { afterAll, afterEach, beforeAll } from 'vitest';
|
|
4
|
+
|
|
5
|
+
const ConnectionStates = mongoose.ConnectionStates;
|
|
6
|
+
|
|
7
|
+
type SetupMongoTestEnvironmentOptions = {
|
|
8
|
+
preserveCollections?: string[];
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export function setupMongoTestEnvironment({
|
|
12
|
+
preserveCollections = [],
|
|
13
|
+
}: SetupMongoTestEnvironmentOptions = {}) {
|
|
14
|
+
let mongoServer: MongoMemoryServer;
|
|
15
|
+
|
|
16
|
+
beforeAll(async () => {
|
|
17
|
+
mongoServer = await MongoMemoryServer.create();
|
|
18
|
+
const uri = mongoServer.getUri();
|
|
19
|
+
process.env.MONGO_URI = uri;
|
|
20
|
+
await mongoose.connect(uri, { dbName: 'test-db' });
|
|
21
|
+
|
|
22
|
+
await waitForDatabaseConnection();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
afterAll(async () => {
|
|
26
|
+
await mongoose.disconnect();
|
|
27
|
+
await mongoServer.stop();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
afterEach(async () => {
|
|
31
|
+
if (mongoose.connection.db) {
|
|
32
|
+
const collections = await mongoose.connection.db.collections();
|
|
33
|
+
for (const collection of collections) {
|
|
34
|
+
if (!preserveCollections.includes(collection.collectionName)) {
|
|
35
|
+
await collection.deleteMany({});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async function waitForDatabaseConnection(maxRetries = 5, interval = 1000) {
|
|
43
|
+
let retries = 0;
|
|
44
|
+
|
|
45
|
+
while (mongoose.connection.readyState !== ConnectionStates.connected && retries < maxRetries) {
|
|
46
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
47
|
+
retries++;
|
|
48
|
+
console.log(`Retrying database connection (${retries}/${maxRetries})...`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (mongoose.connection.readyState !== ConnectionStates.connected) {
|
|
52
|
+
throw new Error('Failed to connect to the database within the allowed retries.');
|
|
53
|
+
}
|
|
54
|
+
}
|