|  | 
|  | 1 | +import { handleEventStreamResponse } from '../src/event-stream/handleEventStreamResponse'; | 
|  | 2 | +import { TextEncoder } from 'util'; | 
|  | 3 | + | 
|  | 4 | +describe('handleEventStreamResponse', () => { | 
|  | 5 | +  describe('ReadableStream', () => { | 
|  | 6 | +    if (parseInt(process.versions.node.split('.')[0]) < 16) { | 
|  | 7 | +      it('dummy', () => { }); | 
|  | 8 | +    } | 
|  | 9 | +    const { TransformStream } = require('stream/web'); | 
|  | 10 | +    it('should handle an event with data', async () => { | 
|  | 11 | +      const { readable, writable } = new TransformStream(); | 
|  | 12 | +      const encoder = new TextEncoder(); | 
|  | 13 | +      const stream = writable.getWriter(); | 
|  | 14 | + | 
|  | 15 | +      const generator = await handleEventStreamResponse(readable); | 
|  | 16 | + | 
|  | 17 | +      // stream.write(encoder.encode(':\n\n')); | 
|  | 18 | +      stream.write(encoder.encode('event: complete\n')); | 
|  | 19 | +      stream.write(encoder.encode('data: { "foo": "bar" }\n')); | 
|  | 20 | +      stream.write(encoder.encode('\n')); | 
|  | 21 | + | 
|  | 22 | +      expect((await generator.next()).value).toMatchInlineSnapshot(` | 
|  | 23 | +          Object { | 
|  | 24 | +            "foo": "bar", | 
|  | 25 | +          } | 
|  | 26 | +      `); | 
|  | 27 | +    }); | 
|  | 28 | + | 
|  | 29 | +    it('should ignore server pings', async () => { | 
|  | 30 | +      const { readable, writable } = new TransformStream(); | 
|  | 31 | +      const encoder = new TextEncoder(); | 
|  | 32 | +      const stream = writable.getWriter(); | 
|  | 33 | + | 
|  | 34 | +      const readStream = async () => { | 
|  | 35 | +        const generator = await handleEventStreamResponse(readable); | 
|  | 36 | + | 
|  | 37 | +        stream.write(encoder.encode(':\n\n')); | 
|  | 38 | +        stream.write(encoder.encode('event: next\n')); | 
|  | 39 | +        stream.write(encoder.encode('data: { "foo": "bar" }\n\n')); | 
|  | 40 | + | 
|  | 41 | +        return generator.next(); | 
|  | 42 | +      }; | 
|  | 43 | + | 
|  | 44 | +      await expect(await readStream()).resolves.toMatchInlineSnapshot(` | 
|  | 45 | +      Object { | 
|  | 46 | +        "done": false, | 
|  | 47 | +        "value": Object { | 
|  | 48 | +          "foo": "bar", | 
|  | 49 | +        }, | 
|  | 50 | +      } | 
|  | 51 | +    `); | 
|  | 52 | +    }); | 
|  | 53 | +  }); | 
|  | 54 | + | 
|  | 55 | +}) | 
0 commit comments