@@ -107,24 +107,45 @@ describe('LocalCaCertificateRepository', () => {
107
107
} ) ;
108
108
109
109
describe ( 'delete' , ( ) => {
110
- it ( 'should delete ca certificate' , async ( ) => {
111
- const result = await service . delete ( mockCaCertificate . id ) ;
112
-
113
- expect ( result ) . toEqual ( undefined ) ;
110
+ it ( 'should delete ca certificate and return affected databases' , async ( ) => {
111
+ const mockId = 'mock-ca-cert-id' ;
112
+ const mockAffectedDatabases = [ 'db1' , 'db2' ] ;
113
+
114
+ // Mock findOneBy to return a certificate
115
+ repository . findOneBy . mockResolvedValue ( mockCaCertificate ) ;
116
+
117
+ // Mock getMany to return affected databases
118
+ const mockQueryBuilder = {
119
+ leftJoinAndSelect : jest . fn ( ) . mockReturnThis ( ) ,
120
+ where : jest . fn ( ) . mockReturnThis ( ) ,
121
+ select : jest . fn ( ) . mockReturnThis ( ) ,
122
+ getMany : jest . fn ( ) . mockResolvedValue ( mockAffectedDatabases . map ( ( id ) => ( { id } ) ) ) ,
123
+ } ;
124
+ jest . spyOn ( service [ 'databaseRepository' ] , 'createQueryBuilder' ) . mockReturnValue ( mockQueryBuilder as any ) ;
125
+
126
+ // Mock delete operation
127
+ repository . delete . mockResolvedValue ( undefined ) ;
128
+
129
+ const result = await service . delete ( mockId ) ;
130
+
131
+ expect ( result ) . toEqual ( { affectedDatabases : mockAffectedDatabases } ) ;
132
+ expect ( repository . findOneBy ) . toHaveBeenCalledWith ( { id : mockId } ) ;
133
+ expect ( service [ 'databaseRepository' ] . createQueryBuilder ) . toHaveBeenCalledWith ( 'd' ) ;
134
+ expect ( mockQueryBuilder . leftJoinAndSelect ) . toHaveBeenCalledWith ( 'd.caCert' , 'c' ) ;
135
+ expect ( mockQueryBuilder . where ) . toHaveBeenCalledWith ( { caCert : mockId } ) ;
136
+ expect ( mockQueryBuilder . select ) . toHaveBeenCalledWith ( [ 'd.id' ] ) ;
137
+ expect ( repository . delete ) . toHaveBeenCalledWith ( mockId ) ;
114
138
} ) ;
115
139
116
- it ( 'should throw an error when trying to delete non-existing ca certificate' , async ( ) => {
117
- repository . findOneBy . mockResolvedValueOnce ( null ) ;
140
+ it ( 'should throw NotFoundException when trying to delete non-existing ca certificate' , async ( ) => {
141
+ const mockId = 'non-existent-id' ;
118
142
119
- try {
120
- await service . delete ( mockCaCertificate . id ) ;
121
- fail ( ) ;
122
- } catch ( e ) {
123
- expect ( e ) . toBeInstanceOf ( NotFoundException ) ;
124
- // todo: why such message?
125
- expect ( e . message ) . toEqual ( 'Not Found' ) ;
126
- expect ( repository . delete ) . not . toHaveBeenCalled ( ) ;
127
- }
143
+ // Mock findOneBy to return null (certificate not found)
144
+ repository . findOneBy . mockResolvedValue ( null ) ;
145
+
146
+ await expect ( service . delete ( mockId ) ) . rejects . toThrow ( NotFoundException ) ;
147
+ expect ( repository . findOneBy ) . toHaveBeenCalledWith ( { id : mockId } ) ;
148
+ expect ( repository . delete ) . not . toHaveBeenCalled ( ) ;
128
149
} ) ;
129
150
} ) ;
130
151
} ) ;
0 commit comments