UNPKG

csv-to-markdown-table

Version:

JavaScript/Node.js Csv to Markdown Table Converter

90 lines (73 loc) 4.16 kB
var assert = require('assert'); var csvToMarkdown = require('../lib/CsvToMarkdown'); describe('csvToMarkdown', function () { it('should return headers and blank row when no csv data is passed and all other values, using default header setting and default tab delimeter', function () { var result = csvToMarkdown(""); assert.strictEqual(result, "| | \n|--| \n| | \n"); }); it('should return a table with blank headers, using default header setting and default tab delimeter', function () { var result = csvToMarkdown("a\tb\tc"); assert.strictEqual(result, "| | | | \n|---|---|---| \n| a | b | c | \n"); }); it('should handle windows newlines gracefully', function () { var result = csvToMarkdown("a\tb\r\nc\td\r\ne\tf\r\n", "\t", true); assert.strictEqual(result, "| a | b | \n|---|---| \n| c | d | \n| e | f | \n| | | \n"); }); it('should return a table with no headers', function () { var result = csvToMarkdown("a\tb\tc", "\t", false); assert.strictEqual(result, "| | | | \n|---|---|---| \n| a | b | c | \n"); }); it('should return a table with headers and no data', function () { var result = csvToMarkdown("a\tb\tc", "\t", true); assert.strictEqual(result, "| a | b | c | \n|---|---|---| \n"); }); it('should return a table with blank headers with various separators', function () { var cases = [["a\tb\tc", "\t"], ["a,b,c", ","], ["a;b;c", ";"]]; cases.forEach(function (entry) { var result = csvToMarkdown(entry[0], entry[1], false); assert.strictEqual(result, "| | | | \n|---|---|---| \n| a | b | c | \n"); }) }); it('should contain the separtor when it is wrapped in quotes', function () { var cases = [["a\t\"b\tc\"\td", "\t"], ["a,\"b,c\",d", ","], ["a;\"b;c\";d", ";"]]; cases.forEach(function (entry) { var result = csvToMarkdown(entry[0], entry[1], false); assert.strictEqual(result, "| | | | \n|---|-------|---| \n| a | \"b"+entry[1]+"c\" | d | \n"); }) }); it('should return a table with headers and no data', function () { var result = csvToMarkdown("a\tb\tc", "\t", true); assert.strictEqual(result, "| a | b | c | \n|---|---|---| \n"); }); it('should convert tabs to 4 spaces to work on github', function () { var result = csvToMarkdown("a\tb\tc", ";", false); assert.strictEqual(result, "| | \n|-------------| \n| a b c | \n"); }) it('should format correctly with semicolons and long values', function () { var result = csvToMarkdown("a;b;c;long value\nd;e;f", ";", false); assert.strictEqual(result, "| | | | | \n|---|---|---|------------| \n| a | b | c | long value | \n| d | e | f | | \n"); }); it('should skip delimiters wrapped by quotes', function () { var result = csvToMarkdown('"a, b, c, d",e', ",", false); assert.strictEqual(result, '| | | \n|--------------|---| \n| "a, b, c, d" | e | \n'); }) it('should escape pipes and back slashes', function(){ var result = csvToMarkdown('"a|b|c|d",e\\f\\g', ",", false); assert.strictEqual(result, '| | | \n|--------------|---------| \n| "a\\|b\\|c\\|d" | e\\\\f\\\\g | \n'); }); it('should handle single values ending in the delimiter', function(){ var result = csvToMarkdown('"assd;"', ";", false); assert.strictEqual(result, '| | \n|---------| \n| "assd;" | \n'); }); it('should handle items that begin with word boundaries', function(){ var result = csvToMarkdown('"foo";"bar";"baz"\n"1";"2";"[foo -;- bar baz]"', ";", true); assert.strictEqual(result, '| "foo" | "bar" | "baz" | \n|-------|-------|---------------------| \n| "1" | "2" | "[foo -;- bar baz]" | \n'); }); it('should handle delimiters that are regex special characters', function () { var delimiters = ['[', ']', '\\', '/', '^', '$', '.', '|', '?', '*', '+', '(', ')', '{', '}', '-']; delimiters.forEach(function (delimiter) { var result = csvToMarkdown('a' + delimiter + 'b' + delimiter + 'c', delimiter, false); assert.strictEqual(result, '| | | | \n|---|---|---| \n| a | b | c | \n', 'Failed for delimiter: "' + delimiter + '"'); }); }); });