Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Tips] How to test downloaded Excel file from response #2777

Open
pleymor opened this issue Aug 29, 2022 · 2 comments
Open

[Tips] How to test downloaded Excel file from response #2777

pleymor opened this issue Aug 29, 2022 · 2 comments

Comments

@pleymor
Copy link

pleymor commented Aug 29, 2022

Gist to test the content of an Excel File in a controller (e2e) test, with a lib like supertest:

  function binaryParser(res, callback) {
    res.setEncoding('binary')
    res.data = ''
    res.on('data', function (chunk) {
      res.data += chunk
    })
    res.on('end', function () {
      callback(null, new Buffer(res.data, 'binary'))
    })
  }

  describe('exports/:id (GET)', () => {
    it('should return an excel File', async () => {
      const res = await request(app.getHttpServer())
        .get('/exports/xxx')
        .expect('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8')
        .buffer()
        .parse(binaryParser)

      assert.ok(Buffer.isBuffer(res.body))

      const workbook = XLSX.read(res.body, { type: 'buffer' })
      const sheet = workbook.Sheets[workbook.SheetNames[0]]
      const json = XLSX.utils.sheet_to_json(sheet, { header: 1 })

      expect(json).toEqual([
        ['My first Row', 'My second Row'],
        ['val 1', 50],
        ['val 2', 10]
      ])
    })
  })
@SheetJSDev
Copy link
Contributor

Very cool, thanks for sharing! Server demos like the express example currently recommend opening the page with a browser (or using curl to upload data manually)

Is there a reason why the content type is text/xlsx rather than the typical application/vnd.ms-excel or application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ?

@pleymor
Copy link
Author

pleymor commented Aug 29, 2022

The content type is a mistake of mine, I fix it right now. Thank you 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants