Merge pull request #7146 from Budibase/fix/charset-encoding

Fix CSV charset encoding
This commit is contained in:
Michael Drury 2022-11-29 17:10:36 +00:00 committed by GitHub
commit b2c2934703
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 6 deletions

View File

@ -347,7 +347,7 @@ describe("/views", () => {
const setupExport = async () => { const setupExport = async () => {
const table = await config.createTable() const table = await config.createTable()
await config.createRow({ name: "test-name", description: "test-desc" }) await config.createRow({ name: "test-name", description: "ùúûü" })
return table return table
} }
@ -362,11 +362,11 @@ describe("/views", () => {
const rows = JSON.parse(res.text) const rows = JSON.parse(res.text)
expect(rows.length).toBe(1) expect(rows.length).toBe(1)
expect(rows[0].name).toBe("test-name") expect(rows[0].name).toBe("test-name")
expect(rows[0].description).toBe("test-desc") expect(rows[0].description).toBe("ùúûü")
} }
const assertCSVExport = (res) => { const assertCSVExport = (res) => {
expect(res.text).toBe("\"name\",\"description\"\n\"test-name\",\"test-desc\"") expect(res.text).toBe(`"name","description"\n"test-name","ùúûü"`)
} }
it("should be able to export a table as JSON", async () => { it("should be able to export a table as JSON", async () => {

View File

@ -80,12 +80,16 @@ export function loadHandlebarsFile(path: string) {
* When return a file from the API need to write the file to the system temporarily so we * When return a file from the API need to write the file to the system temporarily so we
* can create a read stream to send. * can create a read stream to send.
* @param {string} contents the contents of the file which is to be returned from the API. * @param {string} contents the contents of the file which is to be returned from the API.
* @param {string} encoding the encoding of the file to return (utf8 default)
* @return {Object} the read stream which can be put into the koa context body. * @return {Object} the read stream which can be put into the koa context body.
*/ */
export function apiFileReturn(contents: string) { export function apiFileReturn(
contents: string,
encoding: BufferEncoding = "utf8"
) {
const path = join(budibaseTempDir(), uuid()) const path = join(budibaseTempDir(), uuid())
fs.writeFileSync(path, contents) fs.writeFileSync(path, contents, { encoding })
return fs.createReadStream(path) return fs.createReadStream(path, { encoding })
} }
export function streamFile(path: string) { export function streamFile(path: string) {