dolphin-server-modules 1.5.5 → 1.5.7

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 (33) hide show
  1. package/DOLPHIN_MASTER_GUIDE_NEPALI.md +491 -210
  2. package/README.md +197 -125
  3. package/dist/adapters/mongoose/index.d.ts +4 -1
  4. package/dist/adapters/mongoose/index.js +54 -6
  5. package/dist/adapters/mongoose/index.js.map +1 -1
  6. package/dist/adapters/mongoose/index.test.js +60 -16
  7. package/dist/adapters/mongoose/index.test.js.map +1 -1
  8. package/dist/adapters/mongoose/integration.test.d.ts +5 -0
  9. package/dist/adapters/mongoose/integration.test.js +252 -0
  10. package/dist/adapters/mongoose/integration.test.js.map +1 -0
  11. package/dist/curd/crud.test.js +58 -187
  12. package/dist/curd/crud.test.js.map +1 -1
  13. package/dist/demo-server.d.ts +1 -0
  14. package/dist/demo-server.js +221 -0
  15. package/dist/demo-server.js.map +1 -0
  16. package/dist/djson/djson.test.d.ts +1 -0
  17. package/dist/djson/djson.test.js +235 -0
  18. package/dist/djson/djson.test.js.map +1 -0
  19. package/dist/realtime/core.d.ts +143 -2
  20. package/dist/realtime/core.js +511 -115
  21. package/dist/realtime/core.js.map +1 -1
  22. package/dist/realtime/devicemanager.d.ts +0 -0
  23. package/dist/realtime/devicemanager.js +2 -0
  24. package/dist/realtime/devicemanager.js.map +1 -0
  25. package/dist/realtime/realtime.test.js +436 -49
  26. package/dist/realtime/realtime.test.js.map +1 -1
  27. package/dist/router/router.test.d.ts +1 -0
  28. package/dist/router/router.test.js +47 -0
  29. package/dist/router/router.test.js.map +1 -0
  30. package/dist/swagger/swagger.test.d.ts +1 -0
  31. package/dist/swagger/swagger.test.js +40 -0
  32. package/dist/swagger/swagger.test.js.map +1 -0
  33. package/package.json +72 -70
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../adapters/mongoose/index.test.ts"],"names":[],"mappings":";;AAAA,mCAAgD;AAEhD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAY,CAAC;IACjB,IAAI,SAAc,CAAC;IAEnB,UAAU,CAAC,GAAG,EAAE;QACd,iEAAiE;QACjE,MAAM,SAAS,GAAG,CAAU,MAAU,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;gBAChC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;gBAChC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;gBACjC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;gBAClC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACzC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACzC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;aAC1C,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,SAAS,GAAG;YACV,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAClC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5C,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7C,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACtD,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACtD,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACrD,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACrD,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;YACpB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;SAC/C,CAAC;QAEF,OAAO,GAAG,IAAA,6BAAqB,EAAC;YAC9B,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3B,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;YACzB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACzC,MAAM,CAAC,gBAAgB,CAAC;YACtB,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;SACxC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SAChE,CAAC;QAEF,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC7C,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEpD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpD,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAE3E,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CACrD,EAAE,GAAG,EAAE,KAAK,EAAE,EACd,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CACvC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YACvD,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAC3B,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACzC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAE3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../adapters/mongoose/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Real Mongoose Integration Tests
3
+ * mongodb-memory-server प्रयोग गरेर real MongoDB engine सँग test
4
+ */
5
+ export {};
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ /**
3
+ * Real Mongoose Integration Tests
4
+ * mongodb-memory-server प्रयोग गरेर real MongoDB engine सँग test
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const mongoose_1 = __importStar(require("mongoose"));
41
+ const mongodb_memory_server_1 = require("mongodb-memory-server");
42
+ const index_1 = require("./index");
43
+ const crud_1 = require("../../curd/crud");
44
+ // ===== Schemas =====
45
+ const ProductSchema = new mongoose_1.Schema({
46
+ id: String,
47
+ name: { type: String, required: true },
48
+ price: Number,
49
+ category: String,
50
+ stock: Number,
51
+ userId: String,
52
+ createdAt: String,
53
+ updatedAt: String,
54
+ deletedAt: { type: String, default: null },
55
+ }, { timestamps: false });
56
+ const UserSchema = new mongoose_1.Schema({ email: String, password: String });
57
+ const RefreshTokenSchema = new mongoose_1.Schema({ token: String, userId: String });
58
+ let mongod;
59
+ let Product;
60
+ let User;
61
+ let RefreshToken;
62
+ let adapter;
63
+ let crud;
64
+ // ===== Setup / Teardown =====
65
+ beforeAll(async () => {
66
+ mongod = await mongodb_memory_server_1.MongoMemoryServer.create();
67
+ await mongoose_1.default.connect(mongod.getUri());
68
+ Product = mongoose_1.default.model('IProduct', ProductSchema);
69
+ User = mongoose_1.default.model('IUser', UserSchema);
70
+ RefreshToken = mongoose_1.default.model('IRefreshToken', RefreshTokenSchema);
71
+ adapter = (0, index_1.createMongooseAdapter)({
72
+ User,
73
+ RefreshToken,
74
+ models: { Product },
75
+ leanByDefault: true,
76
+ softDelete: false,
77
+ });
78
+ crud = (0, crud_1.createCRUD)(adapter, { enforceOwnership: false });
79
+ });
80
+ afterAll(async () => {
81
+ await mongoose_1.default.disconnect();
82
+ await mongod.stop();
83
+ });
84
+ beforeEach(async () => {
85
+ await Product.deleteMany({});
86
+ });
87
+ // ===================================================================
88
+ // 1. ADAPTER LEVEL TESTS
89
+ // ===================================================================
90
+ describe('Mongoose Adapter — Direct', () => {
91
+ test('create() — document DB मा save हुन्छ', async () => {
92
+ const doc = await adapter.create('Product', {
93
+ id: 'p1', name: 'Laptop', price: 1200, category: 'Electronics',
94
+ createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(),
95
+ });
96
+ expect(doc.name).toBe('Laptop');
97
+ expect(doc.price).toBe(1200);
98
+ expect(doc._id).toBeUndefined(); // _id hidden हुन्छ
99
+ expect(doc.id).toBeDefined(); // id exposed हुन्छ
100
+ });
101
+ test('read() — सबै documents ल्याउँछ', async () => {
102
+ await adapter.create('Product', { id: 'p1', name: 'A', price: 100, createdAt: '', updatedAt: '' });
103
+ await adapter.create('Product', { id: 'p2', name: 'B', price: 200, createdAt: '', updatedAt: '' });
104
+ const docs = await adapter.read('Product', {});
105
+ expect(docs).toHaveLength(2);
106
+ });
107
+ test('read() — id बाट filter गर्छ', async () => {
108
+ const created = await adapter.create('Product', { id: 'p1', name: 'Mouse', price: 25, createdAt: '', updatedAt: '' });
109
+ await adapter.create('Product', { id: 'p2', name: 'Keyboard', price: 75, createdAt: '', updatedAt: '' });
110
+ const results = await adapter.read('Product', { id: created.id });
111
+ expect(results).toHaveLength(1);
112
+ expect(results[0].name).toBe('Mouse');
113
+ });
114
+ test('read() — $like query काम गर्छ', async () => {
115
+ await adapter.create('Product', { id: 'p1', name: 'Laptop Pro', price: 1500, createdAt: '', updatedAt: '' });
116
+ await adapter.create('Product', { id: 'p2', name: 'Laptop Air', price: 1200, createdAt: '', updatedAt: '' });
117
+ await adapter.create('Product', { id: 'p3', name: 'Mouse', price: 25, createdAt: '', updatedAt: '' });
118
+ const results = await adapter.read('Product', { name: { $like: 'Laptop' } });
119
+ expect(results).toHaveLength(2);
120
+ expect(results.every((r) => r.name.includes('Laptop'))).toBe(true);
121
+ });
122
+ test('readOne() — ID बाट सही document ल्याउँछ', async () => {
123
+ const created = await adapter.create('Product', { id: 'p1', name: 'Headphones', price: 300, createdAt: '', updatedAt: '' });
124
+ const result = await adapter.readOne('Product', created.id);
125
+ expect(result).not.toBeNull();
126
+ expect(result.name).toBe('Headphones');
127
+ });
128
+ test('readOne() — नभएको ID मा null फर्काउँछ', async () => {
129
+ const result = await adapter.readOne('Product', new mongoose_1.default.Types.ObjectId().toString());
130
+ expect(result).toBeNull();
131
+ });
132
+ test('updateOne() — field update हुन्छ', async () => {
133
+ const created = await adapter.create('Product', { id: 'p1', name: 'Phone', price: 800, createdAt: '', updatedAt: '' });
134
+ const updated = await adapter.updateOne('Product', created.id, { price: 750 });
135
+ expect(updated.price).toBe(750);
136
+ expect(updated.name).toBe('Phone'); // अरू fields unchanged
137
+ expect(updated.updatedAt).toBeDefined();
138
+ });
139
+ test('deleteOne() — document मेटिन्छ', async () => {
140
+ const created = await adapter.create('Product', { id: 'p1', name: 'Tablet', price: 600, createdAt: '', updatedAt: '' });
141
+ await adapter.deleteOne('Product', created.id);
142
+ const result = await adapter.readOne('Product', created.id);
143
+ expect(result).toBeNull();
144
+ });
145
+ test('advancedRead() — sort काम गर्छ', async () => {
146
+ await adapter.create('Product', { id: 'p1', name: 'C', price: 300, createdAt: '', updatedAt: '' });
147
+ await adapter.create('Product', { id: 'p2', name: 'A', price: 100, createdAt: '', updatedAt: '' });
148
+ await adapter.create('Product', { id: 'p3', name: 'B', price: 200, createdAt: '', updatedAt: '' });
149
+ const results = await adapter.advancedRead('Product', {}, { sort: { price: 'asc' } });
150
+ expect(results[0].price).toBe(100);
151
+ expect(results[2].price).toBe(300);
152
+ });
153
+ test('advancedRead() — limit र offset काम गर्छ', async () => {
154
+ for (let i = 1; i <= 5; i++) {
155
+ await adapter.create('Product', { id: `p${i}`, name: `P${i}`, price: i * 100, createdAt: '', updatedAt: '' });
156
+ }
157
+ const results = await adapter.advancedRead('Product', {}, { limit: 2, offset: 1 });
158
+ expect(results).toHaveLength(2);
159
+ });
160
+ test('count() — सही count दिन्छ', async () => {
161
+ await adapter.create('Product', { id: 'p1', name: 'A', price: 100, createdAt: '', updatedAt: '' });
162
+ await adapter.create('Product', { id: 'p2', name: 'B', price: 200, createdAt: '', updatedAt: '' });
163
+ const count = await adapter.count('Product');
164
+ expect(count).toBe(2);
165
+ });
166
+ test('paginate() — page र totalPages सही छ', async () => {
167
+ for (let i = 1; i <= 7; i++) {
168
+ await adapter.create('Product', { id: `p${i}`, name: `P${i}`, price: i * 10, createdAt: '', updatedAt: '' });
169
+ }
170
+ const page = await adapter.paginate('Product', {}, 2, 3);
171
+ expect(page.items).toHaveLength(3);
172
+ expect(page.total).toBe(7);
173
+ expect(page.totalPages).toBe(3);
174
+ expect(page.hasNext).toBe(true);
175
+ expect(page.hasPrev).toBe(true);
176
+ });
177
+ });
178
+ // ===================================================================
179
+ // 2. CRUD SERVICE (enforceOwnership: false) — Route-level tests
180
+ // ===================================================================
181
+ describe('createCRUD + Mongoose — Route Simulation', () => {
182
+ test('create → getAll — POST, GET all', async () => {
183
+ await crud.create('Product', { name: 'Laptop', price: 1200 });
184
+ await crud.create('Product', { name: 'Mouse', price: 25 });
185
+ const all = await crud.read('Product');
186
+ expect(all).toHaveLength(2);
187
+ });
188
+ test('create → readOne — POST, GET :id', async () => {
189
+ const created = await crud.create('Product', { name: 'Monitor', price: 400 });
190
+ const found = await crud.readOne('Product', created.id);
191
+ expect(found).not.toBeNull();
192
+ expect(found.name).toBe('Monitor');
193
+ });
194
+ test('create → updateOne — POST, PUT :id', async () => {
195
+ const created = await crud.create('Product', { name: 'Keyboard', price: 80 });
196
+ const updated = await crud.updateOne('Product', created.id, { price: 65 });
197
+ expect(updated.price).toBe(65);
198
+ expect(updated.name).toBe('Keyboard');
199
+ });
200
+ test('create → deleteOne — POST, DELETE :id', async () => {
201
+ const created = await crud.create('Product', { name: 'Speaker', price: 150 });
202
+ await crud.deleteOne('Product', created.id);
203
+ const found = await crud.readOne('Product', created.id);
204
+ expect(found).toBeNull();
205
+ });
206
+ test('readOne — नभएको ID → null', async () => {
207
+ const result = await crud.readOne('Product', new mongoose_1.default.Types.ObjectId().toString());
208
+ expect(result).toBeNull();
209
+ });
210
+ test('updateOne — नभएको ID → null', async () => {
211
+ const result = await crud.updateOne('Product', new mongoose_1.default.Types.ObjectId().toString(), { price: 999 });
212
+ expect(result).toBeNull();
213
+ });
214
+ test('deleteOne — नभएको ID → null', async () => {
215
+ const result = await crud.deleteOne('Product', new mongoose_1.default.Types.ObjectId().toString());
216
+ expect(result).toBeNull();
217
+ });
218
+ test('read with filter — category ले filter हुन्छ', async () => {
219
+ await crud.create('Product', { name: 'Laptop', price: 1200, category: 'Electronics' });
220
+ await crud.create('Product', { name: 'Chair', price: 200, category: 'Furniture' });
221
+ await crud.create('Product', { name: 'Phone', price: 800, category: 'Electronics' });
222
+ const electronics = await crud.read('Product', { category: 'Electronics' });
223
+ expect(electronics).toHaveLength(2);
224
+ expect(electronics.every(p => p.category === 'Electronics')).toBe(true);
225
+ });
226
+ test('paginate — correct pagination', async () => {
227
+ for (let i = 1; i <= 10; i++) {
228
+ await crud.create('Product', { name: `P${i}`, price: i * 100 });
229
+ }
230
+ const page = await crud.paginate('Product', {}, 1, 3);
231
+ expect(page.items).toHaveLength(3);
232
+ expect(page.total).toBe(10);
233
+ expect(page.totalPages).toBe(4);
234
+ });
235
+ test('exists() — document भएको confirm गर्छ', async () => {
236
+ await crud.create('Product', { name: 'Watch', price: 500, category: 'Accessories' });
237
+ const yes = await crud.exists('Product', { category: 'Accessories' });
238
+ const no = await crud.exists('Product', { category: 'NonExistent' });
239
+ expect(yes).toBe(true);
240
+ expect(no).toBe(false);
241
+ });
242
+ test('createMany — multiple documents एकै पटक', async () => {
243
+ await crud.createMany('Product', [
244
+ { name: 'A', price: 10 },
245
+ { name: 'B', price: 20 },
246
+ { name: 'C', price: 30 },
247
+ ]);
248
+ const count = await crud.count('Product');
249
+ expect(count).toBe(3);
250
+ });
251
+ });
252
+ //# sourceMappingURL=integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../adapters/mongoose/integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ // curd/crud.test.ts
3
4
  const crud_1 = require("./crud");
4
- class MockDB {
5
+ // Simple in-memory adapter for testing
6
+ class TestAdapter {
5
7
  data = {};
6
- async createUser() { return {}; }
7
- async findUserByEmail() { return {}; }
8
- async findUserById() { return {}; }
9
- async updateUser() { return {}; }
10
- async saveRefreshToken() { }
11
- async findRefreshToken() { }
12
- async deleteRefreshToken() { }
13
8
  async create(collection, doc) {
14
9
  if (!this.data[collection])
15
10
  this.data[collection] = [];
@@ -18,218 +13,94 @@ class MockDB {
18
13
  }
19
14
  async read(collection, query) {
20
15
  const items = this.data[collection] || [];
21
- if (!query || Object.keys(query).length === 0) {
16
+ if (!query || Object.keys(query).length === 0)
22
17
  return items;
23
- }
24
- return items.filter(item => {
18
+ return items.filter((item) => {
25
19
  for (const [key, val] of Object.entries(query)) {
26
- // Handle id field
27
20
  if (key === 'id' && item.id !== val)
28
21
  return false;
29
22
  if (key === '_id' && item.id !== val)
30
23
  return false;
31
- if (key === 'userId' && item.userId !== val)
32
- return false;
33
- if (key === 'title' && item.title !== val)
24
+ if (item[key] !== val)
34
25
  return false;
35
- // Handle deletedAt field with operators
36
- if (key === 'deletedAt') {
37
- if (val === null) {
38
- // Query for non-deleted items
39
- if (item.deletedAt !== null && item.deletedAt !== undefined)
40
- return false;
41
- }
42
- else if (val && typeof val === 'object') {
43
- const condition = val;
44
- // Handle $ne operator
45
- if ('$ne' in condition) {
46
- if (condition.$ne === null) {
47
- // $ne: null means find items that are NOT deleted
48
- if (item.deletedAt === null || item.deletedAt === undefined)
49
- return false;
50
- }
51
- else {
52
- if (item.deletedAt === condition.$ne)
53
- return false;
54
- }
55
- }
56
- }
57
- else {
58
- // Direct value comparison
59
- if (item.deletedAt !== val)
60
- return false;
61
- }
62
- }
63
- // Handle other nested operators like $in, $gt, etc.
64
- if (val && typeof val === 'object' && !Array.isArray(val)) {
65
- const op = val;
66
- if ('$in' in op && !op.$in.includes(item[key]))
67
- return false;
68
- if ('$gt' in op && item[key] <= op.$gt)
69
- return false;
70
- if ('$gte' in op && item[key] < op.$gte)
71
- return false;
72
- if ('$lt' in op && item[key] >= op.$lt)
73
- return false;
74
- if ('$lte' in op && item[key] > op.$lte)
75
- return false;
76
- }
77
26
  }
78
27
  return true;
79
28
  });
80
29
  }
81
30
  async update(collection, query, data) {
82
- if (!this.data[collection])
83
- return null;
84
- for (let i = 0; i < this.data[collection].length; i++) {
85
- let match = false;
86
- if (query.id && this.data[collection][i].id === query.id)
87
- match = true;
88
- if (query._id && this.data[collection][i].id === query._id)
89
- match = true;
90
- if (!query.id && !query._id && Object.keys(query).length === 0)
91
- match = true;
92
- // Handle deletedAt query
93
- if (query.deletedAt && typeof query.deletedAt === 'object') {
94
- const condition = query.deletedAt;
95
- if ('$ne' in condition && condition.$ne === null) {
96
- if (this.data[collection][i].deletedAt !== null && this.data[collection][i].deletedAt !== undefined)
97
- match = true;
98
- }
31
+ const items = this.data[collection] || [];
32
+ for (let i = 0; i < items.length; i++) {
33
+ if (query.id && items[i].id === query.id) {
34
+ this.data[collection][i] = { ...items[i], ...data };
35
+ return this.data[collection][i];
99
36
  }
100
- if (match) {
101
- this.data[collection][i] = { ...this.data[collection][i], ...data };
37
+ if (query._id && items[i].id === query._id) {
38
+ this.data[collection][i] = { ...items[i], ...data };
39
+ return this.data[collection][i];
102
40
  }
103
41
  }
104
- return data;
42
+ return null;
105
43
  }
106
44
  async delete(collection, query) {
107
45
  if (!this.data[collection])
108
46
  return null;
109
47
  if (query.id) {
110
- this.data[collection] = this.data[collection].filter(d => d.id !== query.id);
48
+ this.data[collection] = this.data[collection].filter((d) => d.id !== query.id);
49
+ return { deleted: true };
111
50
  }
112
- else if (query._id) {
113
- this.data[collection] = this.data[collection].filter(d => d.id !== query._id);
51
+ if (query._id) {
52
+ this.data[collection] = this.data[collection].filter((d) => d.id !== query._id);
53
+ return { deleted: true };
114
54
  }
115
- else {
55
+ if (Object.keys(query).length === 0) {
116
56
  this.data[collection] = [];
57
+ return { deleted: true };
117
58
  }
118
- return true;
59
+ return null;
119
60
  }
61
+ // Required methods for DatabaseAdapter interface
62
+ async createUser() { return {}; }
63
+ async findUserByEmail() { return null; }
64
+ async findUserById() { return null; }
65
+ async updateUser() { return {}; }
66
+ async saveRefreshToken() { }
67
+ async findRefreshToken() { return null; }
68
+ async deleteRefreshToken() { }
120
69
  }
121
- describe('CRUD Factory', () => {
70
+ describe('CRUD Tests', () => {
71
+ let crud;
122
72
  let db;
123
73
  beforeEach(() => {
124
- db = new MockDB();
125
- });
126
- it('creates and reads documents with softdelete enabled', async () => {
127
- const crud = (0, crud_1.createCRUD)(db, { softDelete: true, enforceOwnership: false });
128
- const user = 'user_1';
129
- const doc1 = await crud.create('posts', { title: 'Hello', rating: 5 }, user);
130
- expect(doc1.title).toBe('Hello');
131
- expect(doc1.userId).toBe(user);
132
- const doc2 = await crud.create('posts', { title: 'World', rating: 4 }, user);
133
- let list = await crud.read('posts');
134
- expect(list.length).toBe(2);
135
- // Soft delete one
136
- await crud.deleteOne('posts', doc1.id);
137
- list = await crud.read('posts');
138
- expect(list.length).toBe(1);
139
- // Restore
140
- await crud.restore('posts', doc1.id);
141
- list = await crud.read('posts');
142
- expect(list.length).toBe(2);
143
- });
144
- it('applies complex filters correctly', async () => {
145
- const crud = (0, crud_1.createCRUD)(db, { enforceOwnership: false });
146
- await crud.createMany('items', [
147
- { category: 'A', price: 10 },
148
- { category: 'A', price: 20 },
149
- { category: 'B', price: 15 },
150
- { category: 'B', price: 5 }
151
- ]);
152
- const res1 = await crud.read('items', { category: { $in: ['A'] } });
153
- expect(res1.length).toBe(2);
154
- const res2 = await crud.read('items', { price: { $gt: 10 } });
155
- expect(res2.length).toBe(2);
156
- const res3 = await crud.read('items', {
157
- $or: [
158
- { price: { $lte: 5 } },
159
- { category: 'A' }
160
- ]
161
- });
162
- expect(res3.length).toBe(3);
163
- });
164
- it('supports pagination and sorting', async () => {
165
- const crud = (0, crud_1.createCRUD)(db, { enforceOwnership: false });
166
- await crud.createMany('scores', [
167
- { p: 10 }, { p: 50 }, { p: 20 }, { p: 30 }
168
- ]);
169
- const page1 = await crud.paginate('scores', {}, 1, 2);
170
- expect(page1.items.length).toBe(2);
171
- expect(page1.total).toBe(4);
172
- expect(page1.totalPages).toBe(2);
173
- expect(page1.hasNext).toBe(true);
174
- const sorted = await crud.read('scores', {}, { sort: { p: 'desc' } });
175
- expect(sorted[0].p).toBe(50);
176
- expect(sorted[3].p).toBe(10);
177
- });
178
- });
179
- describe('CRUD Controller', () => {
180
- let db;
181
- beforeEach(() => {
182
- db = new MockDB();
183
- });
184
- const mockCtx = (overrides = {}) => ({
185
- query: {},
186
- params: {},
187
- body: {},
188
- req: { user: { id: 'user_1' } },
189
- json: jest.fn(),
190
- status: jest.fn().mockReturnThis(),
191
- ...overrides
74
+ db = new TestAdapter();
75
+ crud = (0, crud_1.createCRUD)(db, { softDelete: false, enforceOwnership: false });
192
76
  });
193
- it('handles getAll with query filters', async () => {
194
- await db.create('posts', { id: '1', title: 'A', userId: 'user_1' });
195
- await db.create('posts', { id: '2', title: 'B', userId: 'user_1' });
196
- const controller = (0, crud_1.createCrudController)(db, 'posts');
197
- const ctx = mockCtx({ query: { title: 'A' } });
198
- await controller.getAll(ctx);
199
- expect(ctx.json).toHaveBeenCalled();
200
- const calledArg = ctx.json.mock.calls[0][0];
201
- expect(calledArg.length).toBe(1);
202
- expect(calledArg[0].title).toBe('A');
77
+ it('should create item', async () => {
78
+ const item = await crud.create('products', { name: 'Test', price: 100 });
79
+ expect(item.id).toBeDefined();
80
+ expect(item.name).toBe('Test');
203
81
  });
204
- it('handles create and returns 201', async () => {
205
- const controller = (0, crud_1.createCrudController)(db, 'items');
206
- const ctx = mockCtx({ body: { name: 'New Item' } });
207
- await controller.create(ctx);
208
- expect(ctx.status).toHaveBeenCalledWith(201);
209
- expect(ctx.json).toHaveBeenCalledWith(expect.objectContaining({ name: 'New Item', userId: 'user_1' }));
82
+ it('should read items', async () => {
83
+ await crud.create('products', { name: 'Product 1' });
84
+ await crud.create('products', { name: 'Product 2' });
85
+ const items = await crud.read('products');
86
+ expect(items).toHaveLength(2);
210
87
  });
211
- it('handles getOne and returns 404 if not found', async () => {
212
- const controller = (0, crud_1.createCrudController)(db, 'items');
213
- const ctx = mockCtx({ params: { id: 'nonexistent' } });
214
- await controller.getOne(ctx);
215
- expect(ctx.status).toHaveBeenCalledWith(404);
216
- expect(ctx.json).toHaveBeenCalledWith({ error: 'Not Found' });
88
+ it('should update item', async () => {
89
+ const created = await crud.create('products', { name: 'Old' });
90
+ const updated = await crud.updateOne('products', created.id, { name: 'New' });
91
+ expect(updated?.name).toBe('New');
217
92
  });
218
- it('handles delete and returns success', async () => {
219
- await db.create('items', { id: '123', name: 'Test', userId: 'user_1' });
220
- const controller = (0, crud_1.createCrudController)(db, 'items');
221
- const ctx = mockCtx({ params: { id: '123' } });
222
- await controller.delete(ctx);
223
- expect(ctx.json).toHaveBeenCalledWith(expect.objectContaining({ success: true }));
224
- const remaining = await db.read('items', { id: '123' });
225
- expect(remaining.length).toBe(0);
93
+ it('should delete item', async () => {
94
+ const created = await crud.create('products', { name: 'Delete Me' });
95
+ await crud.deleteOne('products', created.id);
96
+ const items = await crud.read('products');
97
+ expect(items).toHaveLength(0);
226
98
  });
227
- it('handles update and returns updated document', async () => {
228
- await db.create('items', { id: '456', name: 'Old', userId: 'user_1' });
229
- const controller = (0, crud_1.createCrudController)(db, 'items');
230
- const ctx = mockCtx({ params: { id: '456' }, body: { name: 'Updated' } });
231
- await controller.update(ctx);
232
- expect(ctx.json).toHaveBeenCalledWith(expect.objectContaining({ name: 'Updated' }));
99
+ it('should read one item by id', async () => {
100
+ const created = await crud.create('products', { name: 'Find Me' });
101
+ const found = await crud.readOne('products', created.id);
102
+ expect(found).toBeDefined();
103
+ expect(found.name).toBe('Find Me');
233
104
  });
234
105
  });
235
106
  //# sourceMappingURL=crud.test.js.map