diff options
| author | Alexander Griffith <griffitaj@gmail.com> | 2018-03-10 06:01:17 -0500 | 
|---|---|---|
| committer | Johnson Denen <johnson.denen@gmail.com> | 2018-08-10 22:20:04 -0400 | 
| commit | ae32d2f725dc90e3acb70a03d0a6fd2e4e660ccf (patch) | |
| tree | ff400201cb529fbfc5d5bfb75b5570bf45fbef53 /test | |
| parent | 2e383b9718a84949218e6cfdf62c1030e310144c (diff) | |
Adds the notification timeline to mastodon.el closing #34. (#178)
- Can now handle notifications (follow reblog favourite and mention)
- Tests for each of the rendering functions are included
- Added keybinding N to mastodon.el for mastodon-notifications-get
- added mastodon-notifications to ert-helper.el
Diffstat (limited to 'test')
| -rw-r--r-- | test/ert-helper.el | 2 | ||||
| -rw-r--r-- | test/mastodon-notifications-test.el | 213 | 
2 files changed, 214 insertions, 1 deletions
diff --git a/test/ert-helper.el b/test/ert-helper.el index 2df46d3..6979837 100644 --- a/test/ert-helper.el +++ b/test/ert-helper.el @@ -4,5 +4,5 @@  (load-file "lisp/mastodon-toot.el")  (load-file "lisp/mastodon-media.el")  (load-file "lisp/mastodon-tl.el") +(load-file "lisp/mastodon-notifications.el")  (load-file "lisp/mastodon.el") - diff --git a/test/mastodon-notifications-test.el b/test/mastodon-notifications-test.el new file mode 100644 index 0000000..9758123 --- /dev/null +++ b/test/mastodon-notifications-test.el @@ -0,0 +1,213 @@ +(require 'cl-lib) +(require 'cl-macs) +(require 'el-mock) + +(defconst mastodon-notifications-test-base-mentioned +  '((id . "1234") +    (type . "mention") +    (created_at . "2018-03-06T04:27:21.288Z" ) +    (account (id . 42) +             (username . "acct42") +             (acct . "acct42@example.space") +             (display_name . "Account 42") +             (locked . :json-false) +             (created_at . "2017-04-01T00:00:00.000Z") +             (followers_count . 99) +             (following_count . 13) +             (statuses_count . 101) +             (note . "E")) +    (status (id . 61208) +            (created_at . "2017-04-24T19:01:02.000Z") +            (in_reply_to_id) +            (in_reply_to_account_id) +            (sensitive . :json-false) +            (spoiler_text . "") +            (visibility . "public") +            (account (id . 42) +                     (username . "acct42") +                     (acct . "acct42@example.space") +                     (display_name . "Account 42") +                     (locked . :json-false) +                     (created_at . "2017-04-01T00:00:00.000Z") +                     (followers_count . 99) +                     (following_count . 13) +                     (statuses_count . 101) +                     (note . "E")) +            (media_attachments . []) +            (mentions . []) +            (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)))) + +(defconst mastodon-notifications-test-base-favourite +  '((id . "1234") +    (type . "favourite") +    (created_at . "2018-03-06T04:27:21.288Z" ) +    (account (id . 42) +             (username . "acct42") +             (acct . "acct42@example.space") +             (display_name . "Account 42") +             (locked . :json-false) +             (created_at . "2017-04-01T00:00:00.000Z") +             (followers_count . 99) +             (following_count . 13) +             (statuses_count . 101) +             (note . "E")) +    (status (id . 61208) +            (created_at . "2017-04-24T19:01:02.000Z") +            (in_reply_to_id) +            (in_reply_to_account_id) +            (sensitive . :json-false) +            (spoiler_text . "") +            (visibility . "public") +            (account (id . 42) +                     (username . "acct42") +                     (acct . "acct42@example.space") +                     (display_name . "Account 42") +                     (locked . :json-false) +                     (created_at . "2017-04-01T00:00:00.000Z") +                     (followers_count . 99) +                     (following_count . 13) +                     (statuses_count . 101) +                     (note . "E")) +            (media_attachments . []) +            (mentions . []) +            (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)))) + +(defconst mastodon-notifications-test-base-boosted +  '((id . "1234") +    (type . "reblog") +    (created_at . "2018-03-06T04:27:21.288Z" ) +    (account (id . 42) +             (username . "acct42") +             (acct . "acct42@example.space") +             (display_name . "Account 42") +             (locked . :json-false) +             (created_at . "2017-04-01T00:00:00.000Z") +             (followers_count . 99) +             (following_count . 13) +             (statuses_count . 101) +             (note . "E")) +    (status (id . 61208) +            (created_at . "2017-04-24T19:01:02.000Z") +            (in_reply_to_id) +            (in_reply_to_account_id) +            (sensitive . :json-false) +            (spoiler_text . "") +            (visibility . "public") +            (account (id . 42) +                     (username . "acct42") +                     (acct . "acct42@example.space") +                     (display_name . "Account 42") +                     (locked . :json-false) +                     (created_at . "2017-04-01T00:00:00.000Z") +                     (followers_count . 99) +                     (following_count . 13) +                     (statuses_count . 101) +                     (note . "E")) +            (media_attachments . []) +            (mentions . []) +            (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)))) + +(defconst mastodon-notifications-test-base-followed +  '((id . "1234") +    (type . "follow") +    (created_at . "2018-03-06T04:27:21.288Z" ) +    (account (id . 42) +             (username . "acct42") +             (acct . "acct42@example.space") +             (display_name . "Account 42") +             (locked . :json-false) +             (created_at . "2017-04-01T00:00:00.000Z") +             (followers_count . 99) +             (following_count . 13) +             (statuses_count . 101) +             (note . "E")) +    (status (id . 61208) +            (created_at . "2017-04-24T19:01:02.000Z") +            (in_reply_to_id) +            (in_reply_to_account_id) +            (sensitive . :json-false) +            (spoiler_text . "") +            (visibility . "public") +            (account (id . 42) +                     (username . "acct42") +                     (acct . "acct42@example.space") +                     (display_name . "Account 42") +                     (locked . :json-false) +                     (created_at . "2017-04-01T00:00:00.000Z") +                     (followers_count . 99) +                     (following_count . 13) +                     (statuses_count . 101) +                     (note . "E")) +            (media_attachments . []) +            (mentions . []) +            (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)))) + +(defconst mastodon-notifications-test-base-favourite +  '((id . "1234") +    (type . "mention") +    (created_at . "2018-03-06T04:27:21.288Z" ) +    (account (id . 42) +             (username . "acct42") +             (acct . "acct42@example.space") +             (display_name . "Account 42") +             (locked . :json-false) +             (created_at . "2017-04-01T00:00:00.000Z") +             (followers_count . 99) +             (following_count . 13) +             (statuses_count . 101) +             (note . "E")))) + +(ert-deftest notification-get () +  "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")) +      (mastodon-notifications--get)))) + +(defun mastodon-notifications--test-type (fun sample) +  "Test notification draw functions. + +FUN is the notificiation function to be called and SAMPLE is the +notification to be tested." +  (let ((mastodon-tl--show-avatars-p nil) +        (timestamp (cdr (assoc 'created_at  sample)))) +    (with-temp-buffer (funcall fun sample) +                      (buffer-substring-no-properties (point-min) (point-max))))) +          +(ert-deftest mastodon-notifications--test-byline-concat () +  "Ensure proper suffix is appended to action." +  (should (and +           (string= " Mentioned you" +                    (mastodon-notifications--byline-concat "Mentioned")) +           (string= " Followed you" +                    (mastodon-notifications--byline-concat "Followed")) +           (string= " Favourited your status" +                    (mastodon-notifications--byline-concat "Favourited")) +           (string= " Boosted your status" +                    (mastodon-notifications--byline-concat "Boosted"))))) + +  | 
