diff options
| -rw-r--r-- | test/mastodon-auth-test.el | 59 | ||||
| -rw-r--r-- | test/mastodon-auth-tests.el | 59 | ||||
| -rw-r--r-- | test/mastodon-client-tests.el | 26 | ||||
| -rw-r--r-- | test/mastodon-http-tests.el | 13 | ||||
| -rw-r--r-- | test/mastodon-media-tests.el | 20 | ||||
| -rw-r--r-- | test/mastodon-notifications-test.el | 14 | ||||
| -rw-r--r-- | test/mastodon-search-tests.el | 18 | ||||
| -rw-r--r-- | test/mastodon-tl-tests.el | 27 | ||||
| -rw-r--r-- | test/mastodon-toot-tests.el | 25 | 
9 files changed, 134 insertions, 127 deletions
diff --git a/test/mastodon-auth-test.el b/test/mastodon-auth-test.el deleted file mode 100644 index 4372047..0000000 --- a/test/mastodon-auth-test.el +++ /dev/null @@ -1,59 +0,0 @@ -;;; mastodon-auth--test.el --- Tests for mastodon-auth  -*- lexical-binding: t; -*- - -;; Copyright (C) 2020  Ian Eure - -;; Author: Ian Eure <ian@retrospec.tv> -;; Version: 0.9.1 -;; Homepage: https://github.com/jdenen/mastodon.el -;; Package-Requires: ((emacs "26.1")) - -;; This file is not part of GNU Emacs. - -;; This file is part of mastodon.el. - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program.  If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: - -;; mastodon-auth--test.el provides ERT tests for mastodon-auth.el - -;;; Code: - -(require 'ert) - -(ert-deftest mastodon-auth--handle-token-response--good () -  (should (string= "foo" (mastodon-auth--handle-token-response '(:access_token "foo" :token_type "Bearer" :scope "read write follow" :created_at 0))))) - -(ert-deftest mastodon-auth--handle-token-response--unknown () -  (should -   (equal -    '(error "Unknown response from mastodon-auth--get-token!") -    (condition-case error -        (progn -          (mastodon-auth--handle-token-response '(:herp "derp")) -          nil) -      (t error))))) - -(ert-deftest mastodon-auth--handle-token-response--failure () -  (let ((error-message "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.")) -    (should -     (equal -      `(error ,(format "Mastodon-auth--access-token: invalid_grant: %s" error-message)) -      (condition-case error -          (mastodon-auth--handle-token-response -           `(:error "invalid_grant" :error_description ,error-message)) -        (t error)))))) - -(provide 'mastodon-auth--test) -;;; mastodon-auth--test.el ends here diff --git a/test/mastodon-auth-tests.el b/test/mastodon-auth-tests.el index fda04eb..6a090b7 100644 --- a/test/mastodon-auth-tests.el +++ b/test/mastodon-auth-tests.el @@ -1,6 +1,38 @@ +;;; mastodon-auth-test.el --- Tests for mastodon-auth.el  -*- lexical-binding: nil -*- +  (require 'el-mock) -(ert-deftest generate-token--no-storing-credentials () +(ert-deftest mastodon-auth--handle-token-response--good () +  "Should extract the access token from a good response." +  (should +   (string= +    "foo" +    (mastodon-auth--handle-token-response +     '(:access_token "foo" :token_type "Bearer" :scope "read write follow" :created_at 0))))) + +(ert-deftest mastodon-auth--handle-token-response--unknown () +  "Should throw an error when the response is unparsable." +  (should +   (equal +    '(error "Unknown response from mastodon-auth--get-token!") +    (condition-case error +        (progn +          (mastodon-auth--handle-token-response '(:herp "derp")) +          nil) +      (t error))))) + +(ert-deftest mastodon-auth--handle-token-response--failure () +  "Should throw an error when the response indicates an error." +  (let ((error-message "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.")) +    (should +     (equal +      `(error ,(format "Mastodon-auth--access-token: invalid_grant: %s" error-message)) +      (condition-case error +          (mastodon-auth--handle-token-response +           `(:error "invalid_grant" :error_description ,error-message)) +        (t error)))))) + +(ert-deftest mastodon-auth--generate-token--no-storing-credentials ()    "Should make `mastdon-http--post' request to generate auth token."    (with-mock      (let ((mastodon-auth-source-file "") @@ -19,7 +51,7 @@                                   :unauthenticated))        (mastodon-auth--generate-token)))) -(ert-deftest generate-token--storing-credentials () +(ert-deftest mastodon-auth--generate-token--storing-credentials ()    "Should make `mastdon-http--post' request to generate auth token."    (with-mock      (let ((mastodon-auth-source-file "~/.authinfo") @@ -41,26 +73,33 @@  				 :unauthenticated))        (mastodon-auth--generate-token)))) -(ert-deftest get-token () +(ert-deftest mastodon-auth--get-token ()    "Should generate token and return JSON response."    (with-temp-buffer      (with-mock        (mock (mastodon-auth--generate-token) => (progn                                                   (insert "\n\n{\"access_token\":\"abcdefg\"}")                                                   (current-buffer))) -      (should (equal (mastodon-auth--get-token) '(:access_token "abcdefg")))))) +      (should +       (equal (mastodon-auth--get-token) +              '(:access_token "abcdefg")))))) -(ert-deftest access-token-found () +(ert-deftest mastodon-auth--access-token-found ()    "Should return value in `mastodon-auth--token-alist' if found."    (let ((mastodon-instance-url "https://instance.url")          (mastodon-auth--token-alist '(("https://instance.url" . "foobar")) )) -    (should (string= (mastodon-auth--access-token) "foobar")))) +    (should +     (string= (mastodon-auth--access-token) "foobar")))) -(ert-deftest access-token-2 () +(ert-deftest mastodon-auth--access-token-not-found ()    "Should set and return `mastodon-auth--token' if nil."    (let ((mastodon-instance-url "https://instance.url") -        (mastodon-auth--token nil)) +        (mastodon-auth--token-alist nil))      (with-mock        (mock (mastodon-auth--get-token) => '(:access_token "foobaz")) -      (should (string= (mastodon-auth--access-token) "foobaz")) -      (should (equal mastodon-auth--token-alist '(("https://instance.url" . "foobaz"))))))) +      (should +       (string= (mastodon-auth--access-token) +                "foobaz")) +      (should +       (equal mastodon-auth--token-alist +              '(("https://instance.url" . "foobaz"))))))) diff --git a/test/mastodon-client-tests.el b/test/mastodon-client-tests.el index 12d2350..b112729 100644 --- a/test/mastodon-client-tests.el +++ b/test/mastodon-client-tests.el @@ -1,6 +1,8 @@ +;;; mastodon-client-test.el --- Tests for mastodon-client.el  -*- lexical-binding: nil -*- +  (require 'el-mock) -(ert-deftest register () +(ert-deftest mastodon-client--register ()    "Should POST to /apps."    (with-mock      (mock (mastodon-http--api "apps") => "https://instance.url/api/v1/apps") @@ -13,7 +15,7 @@                                 :unauthenticated))      (mastodon-client--register))) -(ert-deftest fetch () +(ert-deftest mastodon-client--fetch ()    "Should return client registration JSON."    (with-temp-buffer      (with-mock @@ -22,7 +24,7 @@                                               (current-buffer)))        (should (equal (mastodon-client--fetch) '(:foo "bar")))))) -(ert-deftest store-1 () +(ert-deftest mastodon-client--store-1 ()    "Should return the client plist."    (let ((mastodon-instance-url "http://mastodon.example")          (plist '(:client_id "id" :client_secret "secret"))) @@ -33,8 +35,8 @@               (client (cdr (plstore-get plstore "mastodon-http://mastodon.example"))))          (should (equal (mastodon-client--store) plist)))))) -(ert-deftest store-2 () -  "Should store client in `mastodon-client--token-file'." +(ert-deftest mastodon-client--store-2 () + "Should store client in `mastodon-client--token-file'."    (let* ((mastodon-instance-url "http://mastodon.example")           (plstore (plstore-open "stubfile.plstore"))           (client (cdr (plstore-get plstore "mastodon-http://mastodon.example")))) @@ -42,7 +44,7 @@      (should (string= (plist-get client :client_id) "id"))      (should (string= (plist-get client :client_secret) "secret")))) -(ert-deftest read-finds-match () +(ert-deftest mastodon-client--read-finds-match ()    "Should return mastodon client from `mastodon-token-file' if it exists."    (let ((mastodon-instance-url "http://mastodon.example"))      (with-mock @@ -50,27 +52,27 @@        (should (equal (mastodon-client--read)                       '(:client_id "id2" :client_secret "secret2")))))) -(ert-deftest read-finds-no-match () +(ert-deftest mastodon-client--read-finds-no-match ()    "Should return mastodon client from `mastodon-token-file' if it exists."    (let ((mastodon-instance-url "http://mastodon.social"))      (with-mock        (mock (mastodon-client--token-file) => "fixture/client.plstore")        (should (equal (mastodon-client--read) nil))))) -(ert-deftest read-empty-store () +(ert-deftest mastodon-client--read-empty-store ()    "Should return nil if mastodon client is not present in the plstore."    (with-mock      (mock (mastodon-client--token-file) => "fixture/empty.plstore")      (should (equal (mastodon-client--read) nil)))) -(ert-deftest client-set-and-matching () +(ert-deftest mastodon-client--client-set-and-matching ()    "Should return `mastondon-client' if `mastodon-client--client-details-alist' is non-nil and instance url is included."    (let ((mastodon-instance-url "http://mastodon.example")          (mastodon-client--client-details-alist '(("https://other.example" . :no-match)                                                   ("http://mastodon.example" . :matches))))      (should (eq (mastodon-client) :matches)))) -(ert-deftest client-set-but-not-matching () +(ert-deftest mastodon-client--client-set-but-not-matching ()    "Should read from `mastodon-token-file' if wrong data is cached."    (let ((mastodon-instance-url "http://mastodon.example")          (mastodon-client--client-details-alist '(("http://other.example" :wrong)))) @@ -81,7 +83,7 @@                       '(("http://mastodon.example" :client_id "foo" :client_secret "bar")                         ("http://other.example" :wrong))))))) -(ert-deftest client-unset () +(ert-deftest mastodon-client--client-unset ()    "Should read from `mastodon-token-file' if available."    (let ((mastodon-instance-url "http://mastodon.example")          (mastodon-client--client-details-alist nil)) @@ -91,7 +93,7 @@        (should (equal mastodon-client--client-details-alist                       '(("http://mastodon.example" :client_id "foo" :client_secret "bar"))))))) -(ert-deftest client-unset-and-not-in-storage () +(ert-deftest mastodon-client--client-unset-and-not-in-storage ()    "Should store client data in plstore if it can't be read."    (let ((mastodon-instance-url "http://mastodon.example")          (mastodon-client--client-details-alist nil)) diff --git a/test/mastodon-http-tests.el b/test/mastodon-http-tests.el index d0f715e..00e1f41 100644 --- a/test/mastodon-http-tests.el +++ b/test/mastodon-http-tests.el @@ -1,9 +1,10 @@ +;;; mastodon-http-test.el --- Tests for mastodon-http.el  -*- lexical-binding: nil -*- +  (require 'el-mock) -(ert-deftest mastodon-http:get:retrieves-endpoint () +(ert-deftest mastodon-http--get-retrieves-endpoint ()    "Should make a `url-retrieve' of the given URL." -  (let ((callback-double (lambda () "double"))) -    (with-mock -      (mock (mastodon-http--url-retrieve-synchronously "https://foo.bar/baz")) -      (mock (mastodon-auth--access-token) => "test-token") -      (mastodon-http--get "https://foo.bar/baz")))) +  (with-mock +    (mock (mastodon-http--url-retrieve-synchronously "https://foo.bar/baz")) +    (mock (mastodon-auth--access-token) => "test-token") +    (mastodon-http--get "https://foo.bar/baz"))) diff --git a/test/mastodon-media-tests.el b/test/mastodon-media-tests.el index 3345e74..886c7b0 100644 --- a/test/mastodon-media-tests.el +++ b/test/mastodon-media-tests.el @@ -1,6 +1,8 @@ +;;; mastodon-media-test.el --- Tests for mastodon-media.el  -*- lexical-binding: nil -*- +  (require 'el-mock) -(ert-deftest mastodon-media:get-avatar-rendering () +(ert-deftest mastodon-media--get-avatar-rendering ()    "Should return text with all expected properties."    (with-mock      (mock (image-type-available-p 'imagemagick) => t) @@ -16,7 +18,7 @@        (should (eq 'avatar (plist-get properties 'media-type)))        (should (eq :mock-image (plist-get properties 'display)))))) -(ert-deftest mastodon-media:get-media-link-rendering () +(ert-deftest mastodon-media--get-media-link-rendering ()    "Should return text with all expected properties."    (with-mock      (mock (create-image * nil t) => :mock-image) @@ -39,7 +41,7 @@        (should (string= "RET/i: load full image (prefix: copy URL), +/-: zoom, r: rotate, o: save preview"                         (plist-get properties 'help-echo)))))) -(ert-deftest mastodon-media:load-image-from-url:avatar-with-imagemagic () +(ert-deftest mastodon-media--load-image-from-url-avatar-with-imagemagic ()    "Should make the right call to url-retrieve."    (let ((url "http://example.org/image.png")          (mastodon-media--avatar-height 123)) @@ -63,7 +65,7 @@          (should (eq :called-as-expected (mastodon-media--load-image-from-url url 'avatar 7 1))))))) -(ert-deftest mastodon-media:load-image-from-url:avatar-without-imagemagic () +(ert-deftest mastodon-media--load-image-from-url-avatar-without-imagemagic ()    "Should make the right call to url-retrieve."    (let ((url "http://example.org/image.png"))      (with-mock @@ -83,7 +85,7 @@          (should (eq :called-as-expected (mastodon-media--load-image-from-url url 'avatar 7 1))))))) -(ert-deftest mastodon-media:load-image-from-url:media-link-with-imagemagic () +(ert-deftest mastodon-media--load-image-from-url-media-link-with-imagemagic ()    "Should make the right call to url-retrieve."    (let ((url "http://example.org/image.png"))      (with-mock @@ -102,7 +104,7 @@          (let ((mastodon-media--preview-max-height 321))            (should (eq :called-as-expected (mastodon-media--load-image-from-url url 'media-link 7 5)))))))) -(ert-deftest mastodon-media:load-image-from-url:media-link-without-imagemagic () +(ert-deftest mastodon-media--load-image-from-url-media-link-without-imagemagic ()    "Should make the right call to url-retrieve."    (let ((url "http://example.org/image.png"))      (with-mock @@ -122,7 +124,7 @@          (let ((mastodon-media--preview-max-height 321))            (should (eq :called-as-expected (mastodon-media--load-image-from-url url 'media-link 7 5)))))))) -(ert-deftest mastodon-media:load-image-from-url:url-fetching-fails () +(ert-deftest mastodon-media--load-image-from-url-url-fetching-fails ()    "Should cope with failures in url-retrieve."    (let ((url "http://example.org/image.png")          (mastodon-media--avatar-height 123)) @@ -143,7 +145,7 @@          ;; the media state was updated so we won't load this again:           (should (eq 'loading-failed (get-text-property 7 'media-state))))))) -(ert-deftest mastodon-media:process-image-response () +(ert-deftest mastodon-media--process-image-response ()    "Should process the HTTP response and adjust the source buffer."    (with-temp-buffer      (with-mock @@ -180,7 +182,7 @@            (should (eq 'loaded (get-text-property saved-marker 'media-state source-buffer)))            (should (eq ':fake-image (get-text-property saved-marker 'display source-buffer)))))))) -(ert-deftest mastodon-media:inline-images () +(ert-deftest mastodon-media--inline-images ()    "Should process all media in buffer."    (with-mock      ;; Stub needed for the test setup: diff --git a/test/mastodon-notifications-test.el b/test/mastodon-notifications-test.el index 778d350..ee6748a 100644 --- a/test/mastodon-notifications-test.el +++ b/test/mastodon-notifications-test.el @@ -1,8 +1,10 @@ +;;; mastodon-notifications-test.el --- Tests for mastodon-notifications.el  -*- lexical-binding: nil -*- +  (require 'cl-lib)  (require 'cl-macs)  (require 'el-mock) -(defconst mastodon-notifications-test-base-mentioned +(defconst mastodon-notifications--test-base-mentioned    '((id . "1234")      (type . "mention")      (created_at . "2018-03-06T04:27:21.288Z" ) @@ -43,7 +45,7 @@              (favourites_count . 0)              (reblog)))) -(defconst mastodon-notifications-test-base-favourite +(defconst mastodon-notifications--test-base-favourite    '((id . "1234")      (type . "favourite")      (created_at . "2018-03-06T04:27:21.288Z" ) @@ -84,7 +86,7 @@              (favourites_count . 0)              (reblog)))) -(defconst mastodon-notifications-test-base-boosted +(defconst mastodon-notifications--test-base-boosted    '((id . "1234")      (type . "reblog")      (created_at . "2018-03-06T04:27:21.288Z" ) @@ -125,7 +127,7 @@              (favourites_count . 0)              (reblog)))) -(defconst mastodon-notifications-test-base-followed +(defconst mastodon-notifications--test-base-followed    '((id . "1234")      (type . "follow")      (created_at . "2018-03-06T04:27:21.288Z" ) @@ -166,7 +168,7 @@              (favourites_count . 0)              (reblog)))) -(defconst mastodon-notifications-test-base-favourite +(defconst mastodon-notifications--test-base-favourite    '((id . "1234")      (type . "mention")      (created_at . "2018-03-06T04:27:21.288Z" ) @@ -181,7 +183,7 @@               (statuses_count . 101)               (note . "E")))) -(ert-deftest notification-get () +(ert-deftest mastodon-notifications--notification-get ()    "Ensure get request format for notifictions is accurate."    (let ((mastodon-instance-url "https://instance.url"))      (with-mock diff --git a/test/mastodon-search-tests.el b/test/mastodon-search-tests.el index 552f467..996f786 100644 --- a/test/mastodon-search-tests.el +++ b/test/mastodon-search-tests.el @@ -1,4 +1,4 @@ - +;;; mastodon-search-test.el --- Tests for mastodon-search.el  -*- lexical-binding: nil -*-  (defconst mastodon-search--single-account-query    '((id . "242971") @@ -37,7 +37,7 @@                (verified_at))]))    "A sample mastodon account search result (parsed json)") -(defconst mastodon-search-test-single-tag +(defconst mastodon-search--test-single-tag    '((name . "TeamBringBackVisibleScrollbars")      (url . "https://todon.nl/tags/TeamBringBackVisibleScrollbars")      (history . [((day . "1636156800") (uses . "0") (accounts . "0")) @@ -48,7 +48,7 @@                  ((day . "1635724800") (uses . "0") (accounts . "0"))                  ((day . "1635638400") (uses . "0") (accounts . "0"))]))) -(defconst mastodon-search-test-single-status +(defconst mastodon-search--test-single-status    '((id . "107230316503209282")      (created_at . "2021-11-06T13:19:40.628Z")      (in_reply_to_id) @@ -114,33 +114,33 @@      (card)      (poll))) -(ert-deftest mastodon-search-test-get-user-info-@ () +(ert-deftest mastodon-search--get-user-info-@ ()    "Should build a list from a single account for company completion."    (should     (equal      (mastodon-search--get-user-info-@ mastodon-search--single-account-query)      '(": ( ) { : | : & } ; :" "@mousebot" "https://todon.nl/@mousebot")))) -(ert-deftest mastodon-search-test-get-user-info () +(ert-deftest mastodon-search--get-user-info ()    "Should build a list from a single account for company completion."    (should     (equal      (mastodon-search--get-user-info mastodon-search--single-account-query)      '(": ( ) { : | : & } ; :" "mousebot" "https://todon.nl/@mousebot")))) -(ert-deftest mastodon-search-test-get-hashtag-info () +(ert-deftest mastodon-search--get-hashtag-info ()    "Should build a list of hashtag name and URL."    (should     (equal -    (mastodon-search--get-hashtag-info mastodon-search-test-single-tag) +    (mastodon-search--get-hashtag-info mastodon-search--test-single-tag)      '("TeamBringBackVisibleScrollbars"        "https://todon.nl/tags/TeamBringBackVisibleScrollbars")))) -(ert-deftest mastodon-search-test-get-status-info () +(ert-deftest mastodon-search--get-status-info ()    "Should return a list of ID, timestamp, content, and spoiler."    (should     (equal -    (mastodon-search--get-status-info mastodon-search-test-single-status) +    (mastodon-search--get-status-info mastodon-search--test-single-status)      '("107230316503209282"        "2021-11-06T13:19:40.628Z"        "" diff --git a/test/mastodon-tl-tests.el b/test/mastodon-tl-tests.el index e4606cc..da3b315 100644 --- a/test/mastodon-tl-tests.el +++ b/test/mastodon-tl-tests.el @@ -1,3 +1,5 @@ +;;; mastodon-tl-test.el --- Tests for mastodon-tl.el  -*- lexical-binding: nil -*- +  (require 'cl-lib)  (require 'cl-macs)  (require 'el-mock) @@ -89,46 +91,46 @@              (reblogged)))    "A sample reblogged/boosted toot (parsed json)") -(ert-deftest remove-html-1 () +(ert-deftest mastodon-tl--remove-html-1 ()    "Should remove all <span> tags."    (let ((input "<span class=\"h-card\">foobar</span> <span>foobaz</span>"))      (should (string= (mastodon-tl--remove-html input) "foobar foobaz")))) -(ert-deftest remove-html-2 () +(ert-deftest mastodon-tl--remove-html-2 ()    "Should replace <\p> tags with two new lines."    (let ((input "foobar</p>"))      (should (string= (mastodon-tl--remove-html input) "foobar\n\n")))) -(ert-deftest toot-id-boosted () +(ert-deftest mastodon-tl--toot-id-boosted ()    "If a toot is boostedm, return the reblog id."    (should (string= (mastodon-tl--as-string                      (mastodon-tl--toot-id mastodon-tl-test-base-boosted-toot))                     "4543919"))) -(ert-deftest toot-id () +(ert-deftest mastodon-tl--toot-id ()    "If a toot is boostedm, return the reblog id."    (should (string= (mastodon-tl--as-string                      (mastodon-tl--toot-id mastodon-tl-test-base-toot))                     "61208"))) -(ert-deftest as-string-1 () +(ert-deftest mastodon-tl--as-string-1 ()    "Should accept a string or number and return a string."    (let ((id "1000"))      (should (string= (mastodon-tl--as-string id) id)))) -(ert-deftest as-string-2 () +(ert-deftest mastodon-tl--as-string-2 ()    "Should accept a string or number and return a string."    (let ((id 1000))      (should (string= (mastodon-tl--as-string id) (number-to-string id))))) -(ert-deftest more-json () +(ert-deftest mastodon-tl--more-json ()    "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)))) -(ert-deftest more-json-id-string () +(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 @@ -138,7 +140,7 @@ a string or a numeric."        (mock (mastodon-http--get-json "https://instance.url/api/v1/timelines/foo?max_id=12345"))        (mastodon-tl--more-json "timelines/foo" "12345")))) -(ert-deftest update-json-id-string () +(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 @@ -912,23 +914,27 @@ constant."                     "Browse tag #sampletag"))))  (ert-deftest mastodon-tl--extract-hashtag-from-url-mastodon-link () +  "Should extract the hashtag from a tags url."    (should (equal (mastodon-tl--extract-hashtag-from-url  		  "https://example.org/tags/foo"  		  "https://example.org")  		 "foo")))  (ert-deftest mastodon-tl--extract-hashtag-from-url-other-link () +  "Should extract the hashtag from a tag url."    (should (equal (mastodon-tl--extract-hashtag-from-url  		  "https://example.org/tag/foo"  		  "https://example.org")  		 "foo")))  (ert-deftest mastodon-tl--extract-hashtag-from-url-wrong-instance () +  "Should not find a tag when the instance doesn't match."    (should (null (mastodon-tl--extract-hashtag-from-url  		 "https://example.org/tags/foo"  		 "https://other.example.org"))))  (ert-deftest mastodon-tl--extract-hashtag-from-url-not-tag () +  "Should not find a hashtag when not a tag url"    (should (null (mastodon-tl--extract-hashtag-from-url  		 "https://example.org/@userid"  		 "https://example.org")))) @@ -957,17 +963,20 @@ constant."                     "Browse user profile of @foo@bar.example"))))  (ert-deftest mastodon-tl--extract-userhandle-from-url-correct-case () +  "Should extract the user handle from url."    (should (equal (mastodon-tl--extract-userhandle-from-url                    "https://example.org/@someuser"                    "@SomeUser")                   "@SomeUser@example.org")))  (ert-deftest mastodon-tl--extract-userhandle-from-url-missing-at-in-text () +  "Should not extract a user handle from url if the text is wrong."    (should (null (mastodon-tl--extract-userhandle-from-url                   "https://example.org/@someuser"                   "SomeUser"))))  (ert-deftest mastodon-tl--extract-userhandle-from-url-query-in-url () +  "Should not extract a user handle from url if there is a query param."    (should (null (mastodon-tl--extract-userhandle-from-url                   "https://example.org/@someuser?shouldnot=behere"                   "SomeUser")))) diff --git a/test/mastodon-toot-tests.el b/test/mastodon-toot-tests.el index 06da870..804c55a 100644 --- a/test/mastodon-toot-tests.el +++ b/test/mastodon-toot-tests.el @@ -1,6 +1,8 @@ +;;; mastodon-toot-test.el --- Tests for mastodon-toot.el  -*- lexical-binding: nil -*- +  (require 'el-mock) -(defconst mastodon-toot-multi-mention +(defconst mastodon-toot--multi-mention    '((mentions .                [((id . "1")                  (username . "federated") @@ -18,28 +20,37 @@  (defconst mastodon-toot-no-mention    '((mentions . []))) -(ert-deftest toot-multi-mentions () +(ert-deftest mastodon-toot--multi-mentions () +  "Should build a correct mention string from the test toot data. + +Even the local name \"local\" gets a domain name added."    (let ((mastodon-auth--acct-alist '(("https://local.social". "null")))          (mastodon-instance-url "https://local.social"))      (should (string= -             (mastodon-toot--mentions mastodon-toot-multi-mention) +             (mastodon-toot--mentions mastodon-toot--multi-mention)               "@local@local.social @federated@federated.social @federated@federated.cafe ")))) -(ert-deftest toot-multi-mentions-with-name () +(ert-deftest mastodon-toot--multi-mentions-with-name () +  "Should build a correct mention string omitting self. + +Here \"local\" is the user themselves and gets omitted from the +mention string."    (let ((mastodon-auth--acct-alist           '(("https://local.social". "local")))          (mastodon-instance-url "https://local.social"))      (should (string= -             (mastodon-toot--mentions mastodon-toot-multi-mention) +             (mastodon-toot--mentions mastodon-toot--multi-mention)               "@federated@federated.social @federated@federated.cafe ")))) -(ert-deftest toot-no-mention () +(ert-deftest mastodon-toot--no-mention () +  "Should construct an empty mention string without mentions."    (let ((mastodon-auth--acct-alist           '(("https://local.social". "null")))          (mastodon-instance-url "https://local.social"))      (should (string= (mastodon-toot--mentions mastodon-toot-no-mention) "")))) -(ert-deftest cancel () +(ert-deftest mastodon-toot--cancel () +  "Should kill the buffer when cancelling the toot."    (with-mock      (mock (kill-buffer-and-window))      (mastodon-toot--cancel)  | 
