@@ -29,6 +29,7 @@ describe('SequelizeFileVersionRepository', () => {
2929
3030 const result = await repository . create ( {
3131 fileId : version . fileId ,
32+ userId : version . userId ,
3233 networkFileId : version . networkFileId ,
3334 size : version . size ,
3435 status : version . status ,
@@ -37,6 +38,7 @@ describe('SequelizeFileVersionRepository', () => {
3738 expect ( result ) . toBeInstanceOf ( FileVersion ) ;
3839 expect ( fileVersionModel . create ) . toHaveBeenCalledWith ( {
3940 fileId : version . fileId ,
41+ userId : version . userId ,
4042 networkFileId : version . networkFileId ,
4143 size : version . size ,
4244 status : version . status ,
@@ -53,6 +55,7 @@ describe('SequelizeFileVersionRepository', () => {
5355
5456 await repository . create ( {
5557 fileId : version . fileId ,
58+ userId : version . userId ,
5659 networkFileId : version . networkFileId ,
5760 size : version . size ,
5861 } as any ) ;
@@ -76,6 +79,7 @@ describe('SequelizeFileVersionRepository', () => {
7679
7780 const result = await repository . create ( {
7881 fileId : version . fileId ,
82+ userId : version . userId ,
7983 networkFileId : version . networkFileId ,
8084 size : version . size ,
8185 status : version . status ,
@@ -95,6 +99,7 @@ describe('SequelizeFileVersionRepository', () => {
9599
96100 const result = await repository . create ( {
97101 fileId : version . fileId ,
102+ userId : version . userId ,
98103 networkFileId : version . networkFileId ,
99104 size : version . size ,
100105 status : version . status ,
@@ -208,6 +213,7 @@ describe('SequelizeFileVersionRepository', () => {
208213
209214 const result = await repository . upsert ( {
210215 fileId : version . fileId ,
216+ userId : version . userId ,
211217 networkFileId : version . networkFileId ,
212218 size : version . size ,
213219 status : version . status ,
@@ -217,6 +223,7 @@ describe('SequelizeFileVersionRepository', () => {
217223 expect ( fileVersionModel . upsert ) . toHaveBeenCalledWith (
218224 expect . objectContaining ( {
219225 fileId : version . fileId ,
226+ userId : version . userId ,
220227 networkFileId : version . networkFileId ,
221228 size : version . size ,
222229 status : version . status ,
@@ -235,6 +242,7 @@ describe('SequelizeFileVersionRepository', () => {
235242
236243 await repository . upsert ( {
237244 fileId : version . fileId ,
245+ userId : version . userId ,
238246 networkFileId : version . networkFileId ,
239247 size : version . size ,
240248 } as any ) ;
@@ -403,4 +411,69 @@ describe('SequelizeFileVersionRepository', () => {
403411 ) ;
404412 } ) ;
405413 } ) ;
414+
415+ describe ( 'sumExistingSizesByUser' , ( ) => {
416+ it ( 'When user has versions, then it returns the sum of sizes' , async ( ) => {
417+ const userId = 123 ;
418+ const mockResult = [ { total : '1500' } ] ;
419+
420+ jest
421+ . spyOn ( fileVersionModel , 'findAll' )
422+ . mockResolvedValue ( mockResult as any ) ;
423+
424+ const result = await repository . sumExistingSizesByUser ( userId ) ;
425+
426+ expect ( result ) . toBe ( 1500 ) ;
427+ expect ( fileVersionModel . findAll ) . toHaveBeenCalledWith ( {
428+ attributes : expect . any ( Array ) ,
429+ where : {
430+ userId,
431+ status : FileVersionStatus . EXISTS ,
432+ } ,
433+ raw : true ,
434+ } ) ;
435+ } ) ;
436+
437+ it ( 'When user has no versions, then it returns 0' , async ( ) => {
438+ const userId = 456 ;
439+ const mockResult = [ { total : null } ] ;
440+
441+ jest
442+ . spyOn ( fileVersionModel , 'findAll' )
443+ . mockResolvedValue ( mockResult as any ) ;
444+
445+ const result = await repository . sumExistingSizesByUser ( userId ) ;
446+
447+ expect ( result ) . toBe ( 0 ) ;
448+ } ) ;
449+
450+ it ( 'When query returns empty array, then it returns 0' , async ( ) => {
451+ const userId = 789 ;
452+
453+ jest . spyOn ( fileVersionModel , 'findAll' ) . mockResolvedValue ( [ ] as any ) ;
454+
455+ const result = await repository . sumExistingSizesByUser ( userId ) ;
456+
457+ expect ( result ) . toBe ( 0 ) ;
458+ } ) ;
459+
460+ it ( 'When summing sizes, then it only counts EXISTS status versions' , async ( ) => {
461+ const userId = 111 ;
462+ const mockResult = [ { total : '5000' } ] ;
463+
464+ jest
465+ . spyOn ( fileVersionModel , 'findAll' )
466+ . mockResolvedValue ( mockResult as any ) ;
467+
468+ await repository . sumExistingSizesByUser ( userId ) ;
469+
470+ expect ( fileVersionModel . findAll ) . toHaveBeenCalledWith (
471+ expect . objectContaining ( {
472+ where : expect . objectContaining ( {
473+ status : FileVersionStatus . EXISTS ,
474+ } ) ,
475+ } ) ,
476+ ) ;
477+ } ) ;
478+ } ) ;
406479} ) ;
0 commit comments