[ { "msg": "Simple message", "title": "Talk:A", "user": "X", "html": "
Foo bar\n
", "expected": false }, { "msg": "Simple message [with heading]", "title": "Talk:A", "user": "X", "html": "bar\n
", "expected": false }, { "msg": "Simple message [with empty heading]", "title": "Talk:A", "user": "X", "html": "bar\n
", "expected": false }, { "msg": "Simple message [indented]", "title": "Talk:A", "user": "X", "html": "Foo bar X (talk) 00:01, 1 January 2020 (UTC)\n
", "expected": true }, { "msg": "Already signed [with heading]", "title": "Talk:A", "user": "X", "html": "bar X (talk) 00:01, 1 January 2020 (UTC)\n
", "expected": true }, { "msg": "Already signed [indented]", "title": "Talk:A", "user": "X", "html": "Foo bar --X (talk) 00:01, 1 January 2020 (UTC)\n
", "expected": true }, { "msg": "Already signed without space", "title": "Talk:A", "user": "X", "html": "Foo barX (talk) 00:01, 1 January 2020 (UTC)\n
", "expected": true }, { "msg": "Signed with 5 tildes", "title": "Talk:A", "user": "X", "html": "Foo bar 00:01, 1 January 2020 (UTC)\n
", "expected": false }, { "msg": "Signed with 3 tildes", "title": "Talk:A", "user": "X", "html": "", "expected": false }, { "msg": "Already signed by the wrong user", "title": "Talk:A", "user": "Y", "html": "Foo bar X (talk) 00:01, 1 January 2020 (UTC)\n
", "expected": false }, { "msg": "Already signed (self-link on user talk page)", "title": "User talk:X", "user": "X", "html": "Foo bar X 00:01, 1 January 2020 (UTC)\n
", "expected": true }, { "msg": "Already signed (not at the end, parentheses)", "title": "Talk:A", "user": "X", "html": "(Foo bar X (talk) 00:01, 1 January 2020 (UTC))\n
", "expected": true }, { "msg": "Already signed (not at the end, )", "title": "Talk:A", "user": "X", "html": "Foo bar X (talk) 00:01, 1 January 2020 (UTC)\n
", "expected": true }, { "msg": "Already signed (not at the end, ) [indented]", "title": "Talk:A", "user": "X", "html": "Foo bar X (talk) 00:01, 1 January 2020 (UTC)\n |
Foo\n
bar\n
X (talk) 00:01, 1 January 2020 (UTC)\n
", "expected": true }, { "msg": "Already signed (multi-line) [indented]", "title": "Talk:A", "user": "X", "html": "Foo\n
X (talk) 00:01, 1 January 2020 (UTC)\n
bar\n
", "expected": false }, { "msg": "Already signed (not at the end, multiline) [indented]", "title": "Talk:A", "user": "X", "html": "