88 */
99
1010import etag from 'etag'
11- import fsExtra from 'fs-extra'
11+ import fsExtra , { read } from 'fs-extra'
1212import { join } from 'node:path'
1313import supertest from 'supertest'
1414import { test } from '@japa/runner'
@@ -400,16 +400,27 @@ test.group('Response', (group) => {
400400 assert . equal ( text , 'true' )
401401 } )
402402
403- test ( 'hasLazyBody must return true after download has been called' , async ( { assert } ) => {
403+ test ( 'hasLazyBody and hasFileToStream must return true after download has been called' , async ( {
404+ assert,
405+ } ) => {
404406 const server = createServer ( ( req , res ) => {
405407 const response = new ResponseFactory ( ) . merge ( { req, res, encryption, router } ) . create ( )
406408
407409 response . download ( './foo.html' )
408- res . end ( String ( response . hasLazyBody ) )
410+ res . setHeader ( 'content-type' , 'application/json' )
411+ res . end (
412+ JSON . stringify ( {
413+ hasLazyBody : response . hasLazyBody ,
414+ hasFileToStream : response . hasFileToStream ,
415+ } )
416+ )
409417 } )
410418
411- const { text } = await supertest ( server ) . get ( '/' )
412- assert . equal ( text , 'true' )
419+ const { body } = await supertest ( server ) . get ( '/' )
420+ assert . deepEqual ( body , {
421+ hasLazyBody : true ,
422+ hasFileToStream : true ,
423+ } )
413424 } )
414425
415426 test ( 'hasContent must return false after download has been called' , async ( { assert } ) => {
@@ -424,16 +435,27 @@ test.group('Response', (group) => {
424435 assert . equal ( text , 'false' )
425436 } )
426437
427- test ( 'hasLazyBody must return true after stream has been called' , async ( { assert } ) => {
438+ test ( 'hasLazyBody and hasStream must return true after stream has been called' , async ( {
439+ assert,
440+ } ) => {
428441 const server = createServer ( ( req , res ) => {
429442 const response = new ResponseFactory ( ) . merge ( { req, res, encryption, router } ) . create ( )
430443
431444 response . stream ( new Readable ( ) )
432- res . end ( String ( response . hasLazyBody ) )
445+ res . setHeader ( 'content-type' , 'application/json' )
446+ res . end (
447+ JSON . stringify ( {
448+ hasLazyBody : response . hasLazyBody ,
449+ hasStream : response . hasStream ,
450+ } )
451+ )
433452 } )
434453
435- const { text } = await supertest ( server ) . get ( '/' )
436- assert . equal ( text , 'true' )
454+ const { body } = await supertest ( server ) . get ( '/' )
455+ assert . deepEqual ( body , {
456+ hasLazyBody : true ,
457+ hasStream : true ,
458+ } )
437459 } )
438460
439461 test ( 'hasContent must return false after stream has been called' , async ( { assert } ) => {
@@ -505,8 +527,12 @@ test.group('Response', (group) => {
505527
506528 const server = createServer ( ( req , res ) => {
507529 const response = new ResponseFactory ( ) . merge ( { req, res, encryption, router } ) . create ( )
508- response . stream ( createReadStream ( join ( BASE_PATH , 'hello.txt' ) ) )
530+ const readableStream = createReadStream ( join ( BASE_PATH , 'hello.txt' ) )
531+ response . stream ( readableStream )
532+
509533 assert . isTrue ( response . hasStream )
534+ assert . strictEqual ( response . outgoingStream , readableStream )
535+
510536 response . finish ( )
511537 } )
512538
@@ -626,7 +652,15 @@ test.group('Response', (group) => {
626652 const server = createServer ( ( req , res ) => {
627653 const response = new ResponseFactory ( ) . merge ( { req, res, encryption, router } ) . create ( )
628654 response . download ( join ( BASE_PATH , 'hello.html' ) )
629- assert . isTrue ( response . hasStream )
655+
656+ assert . isFalse ( response . hasStream )
657+ assert . isTrue ( response . hasFileToStream )
658+
659+ assert . deepEqual ( response . fileToStream , {
660+ path : join ( BASE_PATH , 'hello.html' ) ,
661+ generateEtag : false ,
662+ } )
663+
630664 response . finish ( )
631665 } )
632666
0 commit comments