aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/mastodon-notifications-tests.el8
-rw-r--r--test/mastodon-profile-tests.el132
-rw-r--r--test/mastodon-tl-tests.el165
3 files changed, 164 insertions, 141 deletions
diff --git a/test/mastodon-notifications-tests.el b/test/mastodon-notifications-tests.el
index bc70e49..942a7cb 100644
--- a/test/mastodon-notifications-tests.el
+++ b/test/mastodon-notifications-tests.el
@@ -187,11 +187,11 @@
"Ensure get request format for notifictions is accurate."
(let ((mastodon-instance-url "https://instance.url"))
(with-mock
- (mock (mastodon-http--get-json "https://instance.url/api/v1/notifications"))
- (mock (mastodon-profile--fetch-server-account-settings)
- => '(max_toot_chars 1312 privacy "public" display_name "Eugen" discoverable t locked :json-false bot :json-false sensitive :json-false language ""))
+ (mock (mastodon-http--get-json "https://instance.url/api/v1/notifications" nil))
+ (mock (mastodon-profile--fetch-server-account-settings)
+ => '(max_toot_chars 1312 privacy "public" display_name "Eugen" discoverable t locked :json-false bot :json-false sensitive :json-false language ""))
- (mastodon-notifications--get))))
+ (mastodon-notifications-get))))
(defun mastodon-notifications--test-type (fun sample)
"Test notification draw functions.
diff --git a/test/mastodon-profile-tests.el b/test/mastodon-profile-tests.el
index 9d1ec72..1ce9514 100644
--- a/test/mastodon-profile-tests.el
+++ b/test/mastodon-profile-tests.el
@@ -172,7 +172,8 @@ The search will happen as if called without the \"@\"."
(with-mock
(mock (mastodon-http--get-json
- "https://instance.url/api/v1/accounts/search?q=gargron"))
+ "https://instance.url/api/v1/accounts/search"
+ '(("q" . "gargron"))))
(let ((mastodon-instance-url "https://instance.url"))
;; We don't check anything from the return value. We only care
@@ -182,7 +183,9 @@ The search will happen as if called without the \"@\"."
(ert-deftest mastodon-profile--search-account-by-handle--filters-out-false-results ()
"Should ignore results that don't match the searched handle."
(with-mock
- (mock (mastodon-http--get-json *)
+ (mock (mastodon-http--get-json
+ "https://instance.url/api/v1/accounts/search"
+ '(("q" . "Gargron")))
=>
(vector ccc-profile-json gargron-profile-json))
@@ -197,7 +200,9 @@ The search will happen as if called without the \"@\"."
TODO: We need to decide if this is actually desired or not."
(with-mock
- (mock (mastodon-http--get-json *) => (vector gargron-profile-json))
+ (mock (mastodon-http--get-json *
+ '(("q" . "gargron")))
+ => (vector gargron-profile-json))
(let ((mastodon-instance-url "https://instance.url"))
(should
@@ -227,64 +232,69 @@ help identify when things change unexpectedly.
TODO: Consider separating the data retrieval and the actual
content generation in the function under test."
(with-mock
- ;; Don't start any image loading:
- (mock (mastodon-media--inline-images * *) => nil)
- (if (version< emacs-version "27.1")
- (mock (image-type-available-p 'imagemagick) => t)
- (mock (image-transforms-p) => t))
- (mock (mastodon-http--get-json "https://instance.url/api/v1/accounts/1/statuses")
- =>
- gargon-statuses-json)
- (mock (mastodon-profile--get-statuses-pinned *)
- =>
- [])
- (mock (mastodon-profile--relationships-get "1")
- =>
- '(((id . "1") (following . :json-false) (showing_reblogs . :json-false) (notifying . :json-false) (followed_by . :json-false) (blocking . :json-false) (blocked_by . :json-false) (muting . :json-false) (muting_notifications . :json-false) (requested . :json-false) (domain_blocking . :json-false) (endorsed . :json-false) (note . ""))))
- ;; Let's not do formatting as that makes it hard to not rely on
- ;; window width and reflowing the text.
- (mock (shr-render-region * *) => nil)
- ;; Don't perform the actual update call at the end.
- ;;(mock (mastodon-tl--timeline *))
- (mock (mastodon-profile--fetch-server-account-settings)
- => '(max_toot_chars 1312 privacy "public" display_name "Eugen" discoverable t locked :json-false bot :json-false sensitive :json-false language ""))
+ ;; Don't start any image loading:
+ (mock (mastodon-media--inline-images * *) => nil)
+ (if (version< emacs-version "27.1")
+ (mock (image-type-available-p 'imagemagick) => t)
+ (mock (image-transforms-p) => t))
+ (mock (mastodon-http--get-json "https://instance.url/api/v1/accounts/1/statuses" nil)
+ =>
+ gargon-statuses-json)
+ (mock (mastodon-profile--get-statuses-pinned *)
+ =>
+ [])
+ (mock (mastodon-profile--relationships-get "1")
+ =>
+ '(((id . "1") (following . :json-false) (showing_reblogs . :json-false) (notifying . :json-false) (followed_by . :json-false) (blocking . :json-false) (blocked_by . :json-false) (muting . :json-false) (muting_notifications . :json-false) (requested . :json-false) (domain_blocking . :json-false) (endorsed . :json-false) (note . ""))))
+ ;; Let's not do formatting as that makes it hard to not rely on
+ ;; window width and reflowing the text.
+ (mock (shr-render-region * *) => nil)
+ ;; Don't perform the actual update call at the end.
+ ;;(mock (mastodon-tl--timeline *))
+ (mock (mastodon-profile--fetch-server-account-settings)
+ => '(max_toot_chars 1312 privacy "public" display_name "Eugen" discoverable t locked :json-false bot :json-false sensitive :json-false language ""))
- (let ((mastodon-tl--show-avatars t)
- (mastodon-tl--display-media-p t)
- (mastodon-instance-url "https://instance.url"))
- (mastodon-profile--make-author-buffer gargron-profile-json)
+ (mock (mastodon-profile--format-joined-date-string *) => "Joined March 2016")
- (should
- (equal
- (buffer-substring-no-properties (point-min) (point-max))
- (concat
- "\n"
- "[img] [img] \n"
- "Eugen\n"
- "@Gargron\n"
- " ------------\n"
- "<p>Developer of Mastodon and administrator of mastodon.social. I post service announcements, development updates, and personal stuff.</p>\n"
- "_ Patreon __ :: <a href=\"https://www.patreon.com/mastodon\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">patreon.com/mastodon</span><span class=\"invisible\"></span></a>_ Homepage _ :: <a href=\"https://zeonfederated.com\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">zeonfederated.com</span><span class=\"invisible\"></span></a>\n"
- " ------------\n"
- " TOOTS: 70741 | FOLLOWERS: 470905 | FOLLOWING: 451\n"
- " ------------\n"
- "\n"
- " ------------\n"
- " TOOTS \n"
- " ------------\n"
- "\n"
- "<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> \n"
- " Eugen (@Gargron) 2021-11-11 11:11:11\n"
- " ------------\n"
- "\n"
- "\n"
- "<p><span class=\"h-card\"><a href=\"https://social.bau-ha.us/@CCC\" class=\"u-url mention\">@<span>CCC</span></a></span> At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> \n"
- " Eugen (@Gargron) 2021-11-11 00:00:00\n"
- " ------------\n"
- "\n"
- )))
+ (let ((mastodon-tl--show-avatars t)
+ (mastodon-tl--display-media-p t)
+ (mastodon-instance-url "https://instance.url"))
+ (mastodon-profile--make-author-buffer gargron-profile-json)
+
+ (should
+ (equal
+ (buffer-substring-no-properties (point-min) (point-max))
+ (concat
+ "\n"
+ "[img] [img] \n"
+ "Eugen\n"
+ "@Gargron\n"
+ " ------------\n"
+ "<p>Developer of Mastodon and administrator of mastodon.social. I post service announcements, development updates, and personal stuff.</p>\n"
+ "_ Patreon __ :: <a href=\"https://www.patreon.com/mastodon\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">patreon.com/mastodon</span><span class=\"invisible\"></span></a>_ Homepage _ :: <a href=\"https://zeonfederated.com\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">zeonfederated.com</span><span class=\"invisible\"></span></a>"
+ "\n"
+ "Joined March 2016"
+ "\n\n"
+ " ------------\n"
+ " TOOTS: 70741 | FOLLOWERS: 470905 | FOLLOWING: 451\n"
+ " ------------\n"
+ "\n"
+ " ------------\n"
+ " TOOTS \n"
+ " ------------\n"
+ "\n"
+ "<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> \n"
+ " Eugen (@Gargron) 2021-11-11 11:11:11\n"
+ " ------------\n"
+ "\n"
+ "\n"
+ "<p><span class=\"h-card\"><a href=\"https://social.bau-ha.us/@CCC\" class=\"u-url mention\">@<span>CCC</span></a></span> At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> \n"
+ " Eugen (@Gargron) 2021-11-11 00:00:00\n"
+ " ------------\n"
+ "\n"
+ )))
- ;; Until the function gets refactored this creates a non-temp
- ;; buffer with Gargron's statuses which we want to delete (if
- ;; the tests succeed).
- (kill-buffer))))
+ ;; Until the function gets refactored this creates a non-temp
+ ;; buffer with Gargron's statuses which we want to delete (if
+ ;; the tests succeed).
+ (kill-buffer))))
diff --git a/test/mastodon-tl-tests.el b/test/mastodon-tl-tests.el
index 19934dd..1d9355b 100644
--- a/test/mastodon-tl-tests.el
+++ b/test/mastodon-tl-tests.el
@@ -175,27 +175,30 @@ Strict-Transport-Security: max-age=31536000
"Should request toots older than max_id."
(let ((mastodon-instance-url "https://instance.url"))
(with-mock
- (mock (mastodon-http--get-json "https://instance.url/api/v1/timelines/foo?max_id=12345"))
- (mastodon-tl--more-json "timelines/foo" 12345))))
+ (mock (mastodon-http--get-json "https://instance.url/api/v1/timelines/foo"
+ '(("max_id" . "12345"))))
+ (mastodon-tl--more-json "timelines/foo" "12345"))))
(ert-deftest mastodon-tl--more-json-id-string ()
"Should request toots older than max_id.
-`mastodon-tl--more-json' should accept and id that is either
-a string or a numeric."
+ `mastodon-tl--more-json' should accept and id that is either
+ a string or a numeric."
(let ((mastodon-instance-url "https://instance.url"))
(with-mock
- (mock (mastodon-http--get-json "https://instance.url/api/v1/timelines/foo?max_id=12345"))
+ (mock (mastodon-http--get-json "https://instance.url/api/v1/timelines/foo"
+ '(("max_id" . "12345"))))
(mastodon-tl--more-json "timelines/foo" "12345"))))
(ert-deftest mastodon-tl--update-json-id-string ()
"Should request toots more recent than since_id.
-`mastodon-tl--updated-json' should accept and id that is either
-a string or a numeric."
+ `mastodon-tl--updated-json' should accept and id that is either
+ a string or a numeric."
(let ((mastodon-instance-url "https://instance.url"))
(with-mock
- (mock (mastodon-http--get-json "https://instance.url/api/v1/timelines/foo?since_id=12345"))
+ (mock (mastodon-http--get-json "https://instance.url/api/v1/timelines/foo"
+ '(("since_id" . "12345"))))
(mastodon-tl--updated-json "timelines/foo" "12345"))))
(ert-deftest mastodon-tl--relative-time-description ()
@@ -345,14 +348,15 @@ a string or a numeric."
(toot (cons '(reblogged . t) mastodon-tl-test-base-toot))
(timestamp (cdr (assoc 'created_at toot))))
(with-mock
- (mock (date-to-time timestamp) => '(22782 21551))
- (mock (format-time-string mastodon-toot-timestamp-format '(22782 21551)) => "2999-99-99 00:11:22")
-
- (should (string= (substring-no-properties
- (mastodon-tl--byline toot
- 'mastodon-tl--byline-author
- 'mastodon-tl--byline-boosted))
- "(B) Account 42 (@acct42@example.space) 2999-99-99 00:11:22
+ (mock (date-to-time timestamp) => '(22782 21551))
+ (mock (mastodon-tl--symbol 'boost) => "B")
+ (mock (format-time-string mastodon-toot-timestamp-format '(22782 21551)) => "2999-99-99 00:11:22")
+
+ (should (string= (substring-no-properties
+ (mastodon-tl--byline toot
+ 'mastodon-tl--byline-author
+ 'mastodon-tl--byline-boosted))
+ "(B) Account 42 (@acct42@example.space) 2999-99-99 00:11:22
------------
")))))
@@ -362,14 +366,15 @@ a string or a numeric."
(toot (cons '(favourited . t) mastodon-tl-test-base-toot))
(timestamp (cdr (assoc 'created_at toot))))
(with-mock
- (mock (date-to-time timestamp) => '(22782 21551))
- (mock (format-time-string mastodon-toot-timestamp-format '(22782 21551)) => "2999-99-99 00:11:22")
-
- (should (string= (substring-no-properties
- (mastodon-tl--byline toot
- 'mastodon-tl--byline-author
- 'mastodon-tl--byline-boosted))
- "(F) Account 42 (@acct42@example.space) 2999-99-99 00:11:22
+ (mock (mastodon-tl--symbol 'favourite) => "F")
+ (mock (date-to-time timestamp) => '(22782 21551))
+ (mock (format-time-string mastodon-toot-timestamp-format '(22782 21551)) => "2999-99-99 00:11:22")
+
+ (should (string= (substring-no-properties
+ (mastodon-tl--byline toot
+ 'mastodon-tl--byline-author
+ 'mastodon-tl--byline-boosted))
+ "(F) Account 42 (@acct42@example.space) 2999-99-99 00:11:22
------------
")))))
@@ -381,13 +386,17 @@ a string or a numeric."
(timestamp (cdr (assoc 'created_at toot))))
(with-mock
(mock (date-to-time timestamp) => '(22782 21551))
+ ;; FIXME this mock refuses to recognise our different args
+ ;; (mock (mastodon-tl--symbol 'favourite) => "F")
+ ;; (mock (mastodon-tl--symbol 'boost) => "B")
+ (mock (mastodon-tl--symbol *) => "?")
(mock (format-time-string mastodon-toot-timestamp-format '(22782 21551)) => "2999-99-99 00:11:22")
(should (string= (substring-no-properties
(mastodon-tl--byline toot
'mastodon-tl--byline-author
'mastodon-tl--byline-boosted))
- "(B) (F) Account 42 (@acct42@example.space) 2999-99-99 00:11:22
+ "(?) (?) Account 42 (@acct42@example.space) 2999-99-99 00:11:22
------------
")))))
@@ -413,7 +422,7 @@ a string or a numeric."
(handle2-location 65))
(should (string= (substring-no-properties byline)
"Account 42 (@acct42@example.space)
- Boosted Account 43 (@acct43@example.space) original time
+ Boosted Account 43 (@acct43@example.space) original time
------------
"))
(should (eq (get-text-property handle1-location 'mastodon-tab-stop byline)
@@ -446,7 +455,7 @@ a string or a numeric."
'mastodon-tl--byline-author
'mastodon-tl--byline-boosted))
"Account 42 (@acct42@example.space)
- Boosted Account 43 (@acct43@example.space) original time
+ Boosted Account 43 (@acct43@example.space) original time
------------
")))))
@@ -461,6 +470,10 @@ a string or a numeric."
;; We don't expect to use the toot's timestamp but the timestamp of the
;; reblogged toot:
(mock (date-to-time timestamp) => '(1 2))
+ ;; FIXME this mock refuses to recognise our different args
+ ;; (mock (mastodon-tl--symbol 'favourite) => "F")
+ ;; (mock (mastodon-tl--symbol 'boost) => "B")
+ (mock (mastodon-tl--symbol *) => "?")
(mock (format-time-string mastodon-toot-timestamp-format '(1 2)) => "reblogging time")
(mock (date-to-time original-timestamp) => '(3 4))
(mock (format-time-string mastodon-toot-timestamp-format '(3 4)) => "original time")
@@ -469,8 +482,8 @@ a string or a numeric."
(mastodon-tl--byline toot
'mastodon-tl--byline-author
'mastodon-tl--byline-boosted))
- "(B) (F) Account 42 (@acct42@example.space)
- Boosted Account 43 (@acct43@example.space) original time
+ "(?) (?) Account 42 (@acct42@example.space)
+ Boosted Account 43 (@acct43@example.space) original time
------------
")))))
@@ -808,8 +821,8 @@ a string or a numeric."
(defun tl-tests--property-values-at (property ranges)
"Returns a list with property values at the given ranges.
-The property value for PROPERTY within a region is assumed to be
-constant."
+ The property value for PROPERTY within a region is assumed to be
+ constant."
(let (result)
(dolist (range ranges (nreverse result))
(push (get-text-property (car range) property) result))))
@@ -1047,53 +1060,53 @@ correct value for following, as well as notifications enabled or disabled."
(let ((response-buffer-true (current-buffer)))
(insert mastodon-tl--follow-notify-true-response)
(with-mock
- (mock (mastodon-http--post url-follow-only)
- => response-buffer-true)
- (should
- (equal
- (mastodon-tl--do-user-action-function url-follow-only
- user-name
- user-handle
- "follow")
- "User some-user (@some-user@instance.url) followed!"))
- (mock (mastodon-http--post url-mute)
- => response-buffer-true)
- (should
- (equal
- (mastodon-tl--do-user-action-function url-mute
- user-name
- user-handle
- "mute")
- "User some-user (@some-user@instance.url) muted!"))
- (mock (mastodon-http--post url-block)
- => response-buffer-true)
- (should
- (equal
- (mastodon-tl--do-user-action-function url-block
- user-name
- user-handle
- "block")
- "User some-user (@some-user@instance.url) blocked!")))
+ (mock (mastodon-http--post url-follow-only nil)
+ => response-buffer-true)
+ (should
+ (equal
+ (mastodon-tl--do-user-action-function url-follow-only
+ user-name
+ user-handle
+ "follow")
+ "User some-user (@some-user@instance.url) followed!"))
+ (mock (mastodon-http--post url-mute nil)
+ => response-buffer-true)
+ (should
+ (equal
+ (mastodon-tl--do-user-action-function url-mute
+ user-name
+ user-handle
+ "mute")
+ "User some-user (@some-user@instance.url) muted!"))
+ (mock (mastodon-http--post url-block nil)
+ => response-buffer-true)
+ (should
+ (equal
+ (mastodon-tl--do-user-action-function url-block
+ user-name
+ user-handle
+ "block")
+ "User some-user (@some-user@instance.url) blocked!")))
(with-mock
- (mock (mastodon-http--post url-true) => response-buffer-true)
- (should
- (equal
- (mastodon-tl--do-user-action-function url-true
- user-name
- user-handle
- "follow"
- "true")
- "Receiving notifications for user some-user (@some-user@instance.url)!")))))
+ (mock (mastodon-http--post url-true nil) => response-buffer-true)
+ (should
+ (equal
+ (mastodon-tl--do-user-action-function url-true
+ user-name
+ user-handle
+ "follow"
+ "true")
+ "Receiving notifications for user some-user (@some-user@instance.url)!")))))
(with-temp-buffer
(let ((response-buffer-false (current-buffer)))
(insert mastodon-tl--follow-notify-false-response)
(with-mock
- (mock (mastodon-http--post url-false) => response-buffer-false)
- (should
- (equal
- (mastodon-tl--do-user-action-function url-false
- user-name
- user-handle
- "follow"
- "false")
- "Not receiving notifications for user some-user (@some-user@instance.url)!")))))))
+ (mock (mastodon-http--post url-false nil) => response-buffer-false)
+ (should
+ (equal
+ (mastodon-tl--do-user-action-function url-false
+ user-name
+ user-handle
+ "follow"
+ "false")
+ "Not receiving notifications for user some-user (@some-user@instance.url)!")))))))