diff options
Diffstat (limited to 'comments_test.go')
| -rw-r--r-- | comments_test.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/comments_test.go b/comments_test.go new file mode 100644 index 0000000..a6c5a47 --- /dev/null +++ b/comments_test.go @@ -0,0 +1,51 @@ +package devianter + +import "testing" + +// Regression: flattenComment's shape check used to read m[0] and m[len(m)-1] +// without a length check, so a comment with an empty markup body panicked with +// index out of range and killed the caller's process. +func TestFlattenCommentEmptyMarkup(t *testing.T) { + if got := flattenComment(""); got != "" { + t.Errorf("want an empty comment for empty markup, got %q", got) + } +} + +func TestFlattenComment(t *testing.T) { + // A newer, Draft.js-encoded body is flattened to its text. + draft := `{"blocks":[{"text":"hello there"}]}` + if got := flattenComment(draft); got != "hello there" { + t.Errorf("want the Draft.js block text, got %q", got) + } + + // An older, plain-HTML body passes through untouched. + html := "<b>hello</b> there" + if got := flattenComment(html); got != html { + t.Errorf("want plain HTML passed through, got %q", got) + } + + // Regression: the block loop used to assign rather than accumulate, so every + // block but the last was silently dropped and a multi-paragraph comment came + // back as its closing line only. + multi := `{"blocks":[{"text":"first"},{"text":"second"},{"text":"third"}]}` + if got, want := flattenComment(multi), "first\nsecond\nthird"; got != want { + t.Errorf("want every block, one per line:\n got %q\nwant %q", got, want) + } + + // An empty block is a blank line in the comment, not something to skip. + blank := `{"blocks":[{"text":"first"},{"text":""},{"text":"third"}]}` + if got, want := flattenComment(blank), "first\n\nthird"; got != want { + t.Errorf("want an empty block preserved as a blank line:\n got %q\nwant %q", got, want) + } + + // Brace-shaped markup that isn't a Draft.js document falls back to itself + // rather than to an empty string. + if got := flattenComment("{}"); got != "{}" { + t.Errorf("want the original markup when there are no blocks, got %q", got) + } + + // A single brace satisfies neither end of the shape check. + if got := flattenComment("{"); got != "{" { + t.Errorf("want a lone brace passed through, got %q", got) + } +} |
