drg-adaptive/mysql-insert-csv

View on GitHub
src/StreamCleaner.test.ts

Summary

Maintainability
A
3 hrs
Test Coverage
import { Readable } from "stream";
import StreamCleaner, { MATCH_NON_PRINTABLE } from "./StreamCleaner";

describe("StreamCleaner", () => {
  test("remove non-printable characters", async () => {
    const source = new Readable();

    const transform = new StreamCleaner(MATCH_NON_PRINTABLE);

    let result = new Promise(resolve => {
      source
        .pipe(transform)
        .on("data", (chunk: Buffer) => expect(chunk).toHaveLength(1))
        .on("end", resolve);
    });

    for (let i = 0; i <= 31; i++) {
      const chr = String.fromCharCode(i);
      source.push(chr + "A" + chr);
    }
    source.push(null);

    await result;
  });

  test("keep printable characters", async () => {
    const source = new Readable();

    const transform = new StreamCleaner(MATCH_NON_PRINTABLE);

    let result = new Promise(resolve => {
      source
        .pipe(transform)
        .on("data", (chunk: Buffer) => expect(chunk).toHaveLength(1))
        .on("end", resolve);
    });

    for (let i = 32; i <= 126; i++) {
      source.push(String.fromCharCode(i));
    }
    source.push(null);

    await result;
  });
});