diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/mastodon-tl-tests.el | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/test/mastodon-tl-tests.el b/test/mastodon-tl-tests.el index 4e284a3..189916d 100644 --- a/test/mastodon-tl-tests.el +++ b/test/mastodon-tl-tests.el @@ -8,7 +8,7 @@ (in_reply_to_id) (in_reply_to_account_id) (sensitive . :json-false) - (spoiler_text . "Spoiler text") + (spoiler_text . "") (visibility . "public") (account (id . 42) (username . "acct42") @@ -25,6 +25,7 @@ (tags . []) (uri . "tag:example.space,2017-04-24:objectId=654321:objectType=Status") (url . "https://example.space/users/acct42/updates/123456789") + (content . "<p>Just some text</p>") (reblogs_count . 0) (favourites_count . 0) (reblog)) @@ -36,7 +37,7 @@ (in_reply_to_id) (in_reply_to_account_id) (sensitive . :json-false) - (spoiler_text . "Spoiler text") + (spoiler_text . "") (visibility . "public") (account (id . 42) (username . "acct42") @@ -763,3 +764,60 @@ constant." (tl-tests--all-regions-with-property 'timestamp)))) (should (null (marker-position (nth 9 markers))))))))) +(ert-deftest mastodon-tl--has-spoiler () + "Should be able to detect toots with spoiler text as expected" + (let* ((normal-toot mastodon-tl-test-base-toot) + (normal-toot-with-spoiler (cons '(spoiler_text . "spoiler") normal-toot)) + (boosted-toot mastodon-tl-test-base-boosted-toot) + (boosted-toot-with-spoiler (cons (cons 'reblog normal-toot-with-spoiler) + boosted-toot))) + (should (null (mastodon-tl--has-spoiler normal-toot))) + (should-not (null (mastodon-tl--has-spoiler normal-toot-with-spoiler))) + (should (null (mastodon-tl--has-spoiler boosted-toot))) + (should-not (null (mastodon-tl--has-spoiler boosted-toot-with-spoiler))))) + +(ert-deftest mastodon-tl--spoiler () + "Should render a toot with spoiler properly, with link that toggles the body." + (let ((normal-toot-with-spoiler (cons '(spoiler_text . "This is the spoiler warning text") + mastodon-tl-test-base-toot)) + toot-start + toot-end + link-region + body-position) + (with-temp-buffer + (insert "some text before\n") + (setq toot-start (point)) + (with-mock + (stub create-image => '(image "fake data")) + (stub shr-render-region => nil) ;; Travis's Emacs doesn't have libxml + (insert + (mastodon-tl--spoiler normal-toot-with-spoiler))) + (setq toot-end (point)) + (insert "\nsome more text.") + + (goto-char toot-start) + (should (eq t (looking-at "This is the spoiler warning text"))) + + (setq link-region (mastodon-tl--find-next-or-previous-property-range + 'mastodon-tab-stop toot-start nil)) + ;; There should be a link following the text: + (should-not (null link-region)) + (goto-char (car link-region)) + (should (eq t (looking-at "Content Warning"))) + + (setq body-position (+ 25 (cdr link-region))) ;; 25 is enough to skip the "\n--------------...." + + ;; The text a bit after the link should be invisible: + (should (eq t (get-text-property body-position 'invisible))) + + ;; Click the link: + (mastodon-tl--do-link-action-at-point (car link-region)) + + ;; The body is now visible: + (should (eq nil (get-text-property body-position 'invisible))) + + ;; Click the link once more: + (mastodon-tl--do-link-action-at-point (car link-region)) + + ;; The body is invisible again: + (should (eq t (get-text-property body-position 'invisible)))))) |