1- import request from 'supertest'
2- import app from '../../app.js'
31import { jest } from '@jest/globals'
2+ import express from 'express'
3+ import request from 'supertest'
4+ import controller from '../../db-controller.js'
45
5- // Mock the database and auth modules
6- const mockOverwrite = jest . fn ( )
7- const mockFindOne = jest . fn ( )
8- const mockReplaceOne = jest . fn ( )
9- const mockCheckJwt = jest . fn ( ( req , res , next ) => {
10- req . user = { sub : 'test-user' }
11- next ( )
12- } )
13-
14- jest . mock ( '../../db-controller.js' , ( ) => ( {
15- default : {
16- overwrite : mockOverwrite ,
17- findOne : mockFindOne ,
18- replaceOne : mockReplaceOne ,
19- id : jest . fn ( )
6+ // Mock the database module
7+ jest . mock ( '../../database/index.js' , ( ) => ( {
8+ db : {
9+ findOne : jest . fn ( ) ,
10+ replaceOne : jest . fn ( )
2011 }
2112} ) )
2213
23- jest . mock ( '../../auth/index.js' , ( ) => ( {
24- default : {
25- checkJwt : mockCheckJwt
26- }
27- } ) )
14+ // Import the mocked db after mocking
15+ import { db } from '../../database/index.js'
16+
17+ // Helper to add auth to requests
18+ const addAuth = ( req , res , next ) => {
19+ req . user = { "http://store.rerum.io/agent" : "test-user" }
20+ next ( )
21+ }
22+
23+ // Create a test Express app
24+ const routeTester = express ( )
25+ routeTester . use ( express . json ( ) )
26+ routeTester . use ( express . urlencoded ( { extended : false } ) )
27+
28+ // Mount our routes
29+ routeTester . use ( '/overwrite' , [ addAuth , controller . overwrite ] )
30+ routeTester . use ( '/id/:_id' , controller . id )
2831
2932describe ( 'Overwrite Optimistic Locking' , ( ) => {
3033 beforeEach ( ( ) => {
31- // Reset mocks
3234 jest . clearAllMocks ( )
3335 } )
3436
@@ -44,10 +46,10 @@ describe('Overwrite Optimistic Locking', () => {
4446 data : 'original-data'
4547 }
4648
47- mockFindOne . mockResolvedValue ( mockObject )
48- mockReplaceOne . mockResolvedValue ( { modifiedCount : 1 } )
49+ db . findOne . mockResolvedValue ( mockObject )
50+ db . replaceOne . mockResolvedValue ( { modifiedCount : 1 } )
4951
50- const response = await request ( app )
52+ const response = await request ( routeTester )
5153 . put ( '/overwrite' )
5254 . send ( {
5355 '@id' : 'http://example.com/test-id' ,
@@ -70,10 +72,10 @@ describe('Overwrite Optimistic Locking', () => {
7072 data : 'original-data'
7173 }
7274
73- mockFindOne . mockResolvedValue ( mockObject )
74- mockReplaceOne . mockResolvedValue ( { modifiedCount : 1 } )
75+ db . findOne . mockResolvedValue ( mockObject )
76+ db . replaceOne . mockResolvedValue ( { modifiedCount : 1 } )
7577
76- const response = await request ( app )
78+ const response = await request ( routeTester )
7779 . put ( '/overwrite' )
7880 . set ( 'If-Overwritten-Version' , '2025-06-24T10:00:00' )
7981 . send ( {
@@ -97,9 +99,9 @@ describe('Overwrite Optimistic Locking', () => {
9799 data : 'original-data'
98100 }
99101
100- mockFindOne . mockResolvedValue ( mockObject )
102+ db . findOne . mockResolvedValue ( mockObject )
101103
102- const response = await request ( app )
104+ const response = await request ( routeTester )
103105 . put ( '/overwrite' )
104106 . set ( 'If-Overwritten-Version' , '2025-06-24T10:00:00' )
105107 . send ( {
@@ -124,10 +126,10 @@ describe('Overwrite Optimistic Locking', () => {
124126 data : 'original-data'
125127 }
126128
127- mockFindOne . mockResolvedValue ( mockObject )
128- mockReplaceOne . mockResolvedValue ( { modifiedCount : 1 } )
129+ db . findOne . mockResolvedValue ( mockObject )
130+ db . replaceOne . mockResolvedValue ( { modifiedCount : 1 } )
129131
130- const response = await request ( app )
132+ const response = await request ( routeTester )
131133 . put ( '/overwrite' )
132134 . send ( {
133135 '@id' : 'http://example.com/test-id' ,
@@ -154,9 +156,9 @@ describe('ID endpoint includes version header', () => {
154156 data : 'some-data'
155157 }
156158
157- mockFindOne . mockResolvedValue ( mockObject )
159+ db . findOne . mockResolvedValue ( mockObject )
158160
159- const response = await request ( app )
161+ const response = await request ( routeTester )
160162 . get ( '/id/test-id' )
161163
162164 expect ( response . status ) . toBe ( 200 )
@@ -173,9 +175,9 @@ describe('ID endpoint includes version header', () => {
173175 data : 'some-data'
174176 }
175177
176- mockFindOne . mockResolvedValue ( mockObject )
178+ db . findOne . mockResolvedValue ( mockObject )
177179
178- const response = await request ( app )
180+ const response = await request ( routeTester )
179181 . get ( '/id/test-id' )
180182
181183 expect ( response . status ) . toBe ( 200 )
0 commit comments