Repository: praw-dev/praw

Issue:
Simplify emoji code
This pull requests contains the squashed changes from #894 (thanks
@bakonydraco!) and provides some simplifications so that we have a base set of
features to work with and can subsequently make additions or modifications as
necessary.


Discussion:
Awesome! So it sounds like the features that aren't there currently, but were in #894 that could be added in a future PR include:
1. A caching layer for emoji
2. The ability to retrieve site-wide emoji
3. The ability for endusers to access data from an emoji intuitively.

The first 2 are self-explanatory, but I think it would be very useful for a user to get the url or created_by , which you'd currently have to do: emoji._data['url'] to get.

The only actual bug here I see here is in fetch. Since emoji are case sensitive, this will cause issues when two emoji have the same case insensitive name. Leaving a comment on that line.
1. Personally, I don't think we need a caching layer. If someone actually has a use-case where the current solution is inefficient, we can talk about it then, but until such a time there's no need to over-optimize for it. E.g., they _could_ write their code such that they iterate over each emoji and store them such that they have to only make a single request to first fetch them. This solution keeps PRAW's code much simpler.

2. I'm not terribly concerned about the site-wide emoji unless there's reason to think they'll eventually add more. If needed we could hardcode them rather than try to fetch them dynamically. An alternative would be to add `emoji.global` or something like that which maps to a GlobalEmoji class which doesn't have the remove method.

3. Actually `emoji.url` does work. The attributes are lazily loaded (that's what the `_fetch` method does). And the behavior is now consistent with all other attributes.

>  Since emoji are case sensitive

Oops, I thought you previously mentioned they were not. Would you mind adding a PR and maybe update the integration test to prove that case sensitivity is a thing? And can we add a unit test to ensure that case-sensitivity is enforced through comparison?
Good point on 1. 
On 2., the sitewide emoji are fetched *anyway* with every API call to pull the subreddit emoji, so I figured might as well add that functionality in.
3. Oh wow that's cool! I didn't realize that about _fetch
Yeah that was my mistake, I simply misspoke and said case insensitive when I meant case sensitive. I'll submit a quick PR with a small change to emoji.py and the unit test.
2) I like what you're thinking there. There are a few other endpoints which I think we don't return all the data simply because from an information architecture point of view it doesn't make a ton of sense to. I'd like to wait on this to understand the use-case people might want to have for getting the site-wide emoji.

Looking forward to the update PR.

Resolving patch:
diff --git a/praw/models/reddit/emoji.py b/praw/models/reddit/emoji.py
--- a/praw/models/reddit/emoji.py
+++ b/praw/models/reddit/emoji.py
@@ -9,9 +9,20 @@
 class Emoji(RedditBase):
     """An individual Emoji object."""
 
-    __hash__ = RedditBase.__hash__
     STR_FIELD = 'name'
 
+    def __eq__(self, other):
+        """Return whether the other instance equals the current."""
+        if isinstance(other, str):
+            return other == str(self)
+        return (isinstance(other, self.__class__) and
+                str(self) == str(other) and other.subreddit == self.subreddit)
+
+    def __hash__(self):
+        """Return the hash of the current instance."""
+        return (hash(self.__class__.__name__) ^ hash(str(self)) ^
+                hash(self.subreddit))
+
     def __init__(self, reddit, subreddit, name, _data=None):
         """Construct an instance of the Emoji object."""
         self.name = name
@@ -20,7 +31,7 @@ def __init__(self, reddit, subreddit, name, _data=None):
 
     def _fetch(self):
         for emoji in self.subreddit.emoji:
-            if emoji.name.lower() == self.name.lower():
+            if emoji.name == self.name:
                 self.__dict__.update(emoji.__dict__)
                 self._fetched = True
                 return


Test patch:
diff --git a/tests/integration/cassettes/TestEmoji.test__fetch__invalid_emoji.json b/tests/integration/cassettes/TestEmoji.test__fetch__invalid_emoji.json
--- a/tests/integration/cassettes/TestEmoji.test__fetch__invalid_emoji.json
+++ b/tests/integration/cassettes/TestEmoji.test__fetch__invalid_emoji.json
@@ -1,11 +1,11 @@
 {
   "http_interactions": [
     {
-      "recorded_at": "2018-03-24T09:27:06",
+      "recorded_at": "2018-03-24T17:38:31",
       "request": {
         "body": {
           "encoding": "utf-8",
-          "string": "grant_type=password&password=<PASSWORD>&username=<USERNAME>"
+          "string": "grant_type=password&password=<PASSWORD>&username=<TEST_SUBREDDIT>"
         },
         "headers": {
           "Accept": [
@@ -21,7 +21,7 @@
             "keep-alive"
           ],
           "Content-Length": [
-            "59"
+            "55"
           ],
           "Content-Type": [
             "application/x-www-form-urlencoded"
@@ -52,7 +52,7 @@
             "application/json; charset=UTF-8"
           ],
           "Date": [
-            "Sat, 24 Mar 2018 09:27:06 GMT"
+            "Sat, 24 Mar 2018 17:38:31 GMT"
           ],
           "Server": [
             "snooserv"
@@ -73,17 +73,17 @@
             "majestic"
           ],
           "X-Served-By": [
-            "cache-lax8635-LAX"
+            "cache-pao17440-PAO"
           ],
           "X-Timer": [
-            "S1521883626.371936,VS0,VE367"
+            "S1521913111.978848,VS0,VE397"
           ],
           "cache-control": [
             "max-age=0, must-revalidate"
           ],
           "set-cookie": [
-            "session_tracker=L2FjnRy8ealeSkwG1b.0.1521883626407.Z0FBQUFBQmF0aG5xWDBNaGVDTl8wTjZfd290Zld3MXRMRkxuNVhjcDJlT2RJckhzc0ZuZWN0SDMtbFJtZVdGRDgwYkI4dGlQM0dJclhOMTRyLXdBSDFUYTVGNlFkZ1NJbFMtWW9QN2FVYnI0cE5uTGo3NFV4aTZ0WS1JMXNrWWVOcHJra05SQk1hWk8; Domain=reddit.com; Max-Age=7199; Path=/; expires=Sat, 24-Mar-2018 11:27:06 GMT; secure",
-            "edgebucket=pXuEzkqtm3giop4saH; Domain=reddit.com; Max-Age=63071999; Path=/;  secure"
+            "session_tracker=q2qvfpATrxiqdAiTls.0.1521913111046.Z0FBQUFBQmF0bzBYNUlzNEJWT3pSZWdYQ01VVzdUZERfZ1hWSDdSR3RFVC1MX0M3ZHJVUTlhOHVOZDc2MWYzRXNDd3U3LXMtNXJ2XzBfUEJTREpZWEVzTUZEUmRBZzE0WldFaTRmM1lPV29Ta2lDYUdLTDZjSlRsM3l3b1Z4UlJDRGtYV2J4ZElNdkE; Domain=reddit.com; Max-Age=7199; Path=/; expires=Sat, 24-Mar-2018 19:38:31 GMT; secure",
+            "edgebucket=EhxzqiRzMifZRPlmt1; Domain=reddit.com; Max-Age=63071999; Path=/;  secure"
           ],
           "x-content-type-options": [
             "nosniff"
@@ -103,7 +103,7 @@
       }
     },
     {
-      "recorded_at": "2018-03-24T09:27:06",
+      "recorded_at": "2018-03-24T17:38:32",
       "request": {
         "body": {
           "encoding": "utf-8",
@@ -123,7 +123,7 @@
             "keep-alive"
           ],
           "Cookie": [
-            "edgebucket=pXuEzkqtm3giop4saH; session_tracker=L2FjnRy8ealeSkwG1b.0.1521883626407.Z0FBQUFBQmF0aG5xWDBNaGVDTl8wTjZfd290Zld3MXRMRkxuNVhjcDJlT2RJckhzc0ZuZWN0SDMtbFJtZVdGRDgwYkI4dGlQM0dJclhOMTRyLXdBSDFUYTVGNlFkZ1NJbFMtWW9QN2FVYnI0cE5uTGo3NFV4aTZ0WS1JMXNrWWVOcHJra05SQk1hWk8"
+            "edgebucket=EhxzqiRzMifZRPlmt1; session_tracker=q2qvfpATrxiqdAiTls.0.1521913111046.Z0FBQUFBQmF0bzBYNUlzNEJWT3pSZWdYQ01VVzdUZERfZ1hWSDdSR3RFVC1MX0M3ZHJVUTlhOHVOZDc2MWYzRXNDd3U3LXMtNXJ2XzBfUEJTREpZWEVzTUZEUmRBZzE0WldFaTRmM1lPV29Ta2lDYUdLTDZjSlRsM3l3b1Z4UlJDRGtYV2J4ZElNdkE"
           ],
           "User-Agent": [
             "<USER_AGENT> PRAW/5.4.0.dev0 prawcore/0.14.0"
@@ -135,7 +135,7 @@
       "response": {
         "body": {
           "encoding": "UTF-8",
-          "string": "{\"snoomojis\": {\"cake\": {\"url\": \"https://emoji.redditmedia.com/46kel8lf1guz_t5_3nqvj/cake\", \"created_by\": \"t2_6zfp6ii\"}, \"cat_blep\": {\"url\": \"https://emoji.redditmedia.com/p9sxc1zh1guz_t5_3nqvj/cat_blep\", \"created_by\": \"t2_6zfp6ii\"}, \"doge\": {\"url\": \"https://emoji.redditmedia.com/f0fypg8k1guz_t5_3nqvj/doge\", \"created_by\": \"t2_6zfp6ii\"}, \"downvote\": {\"url\": \"https://emoji.redditmedia.com/r05m1xcm1guz_t5_3nqvj/downvote\", \"created_by\": \"t2_6zfp6ii\"}, \"hamster\": {\"url\": \"https://emoji.redditmedia.com/63xo3dun1guz_t5_3nqvj/hamster\", \"created_by\": \"t2_6zfp6ii\"}, \"illuminati\": {\"url\": \"https://emoji.redditmedia.com/mv60bklq1guz_t5_3nqvj/illuminati\", \"created_by\": \"t2_6zfp6ii\"}, \"kappa\": {\"url\": \"https://emoji.redditmedia.com/2uaduvnr1guz_t5_3nqvj/kappa\", \"created_by\": \"t2_6zfp6ii\"}, \"karma\": {\"url\": \"https://emoji.redditmedia.com/dgnf69ls1guz_t5_3nqvj/karma\", \"created_by\": \"t2_6zfp6ii\"}, \"orly\": {\"url\": \"https://emoji.redditmedia.com/crum4urt1guz_t5_3nqvj/orly\", \"created_by\": \"t2_6zfp6ii\"}, \"partyparrot\": {\"url\": \"https://emoji.redditmedia.com/rk1bpelv1guz_t5_3nqvj/partyparrot\", \"created_by\": \"t2_6zfp6ii\"}, \"pupper\": {\"url\": \"https://emoji.redditmedia.com/l73ksapw1guz_t5_3nqvj/pupper\", \"created_by\": \"t2_6zfp6ii\"}, \"redditgold\": {\"url\": \"https://emoji.redditmedia.com/5knu5pox1guz_t5_3nqvj/redditgold\", \"created_by\": \"t2_6zfp6ii\"}, \"sloth\": {\"url\": \"https://emoji.redditmedia.com/rpczqdwy1guz_t5_3nqvj/sloth\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo\": {\"url\": \"https://emoji.redditmedia.com/3whaar0s9ezz_t5_3nqvj/snoo\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_angry\": {\"url\": \"https://emoji.redditmedia.com/8qgfoo9waezz_t5_3nqvj/snoo_angry\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_biblethump\": {\"url\": \"https://emoji.redditmedia.com/akdtlr0vaezz_t5_3nqvj/snoo_biblethump\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_dealwithit\": {\"url\": \"https://emoji.redditmedia.com/94ntcn2taezz_t5_3nqvj/snoo_dealwithit\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_disapproval\": {\"url\": \"https://emoji.redditmedia.com/49dz5ljraezz_t5_3nqvj/snoo_disapproval\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_facepalm\": {\"url\": \"https://emoji.redditmedia.com/wzxf63qpaezz_t5_3nqvj/snoo_facepalm\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_feelsbadman\": {\"url\": \"https://emoji.redditmedia.com/7xdss4doaezz_t5_3nqvj/snoo_feelsbadman\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_feelsgoodman\": {\"url\": \"https://emoji.redditmedia.com/nbv1idzmaezz_t5_3nqvj/snoo_feelsgoodman\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_hearteyes\": {\"url\": \"https://emoji.redditmedia.com/igu167dlaezz_t5_3nqvj/snoo_hearteyes\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_hug\": {\"url\": \"https://emoji.redditmedia.com/wqivmcpjaezz_t5_3nqvj/snoo_hug\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_joy\": {\"url\": \"https://emoji.redditmedia.com/ehw8l3piaezz_t5_3nqvj/snoo_joy\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_putback\": {\"url\": \"https://emoji.redditmedia.com/8228r6bhaezz_t5_3nqvj/snoo_putback\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_sad\": {\"url\": \"https://emoji.redditmedia.com/a761ck7gaezz_t5_3nqvj/snoo_sad\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_scream\": {\"url\": \"https://emoji.redditmedia.com/19g4yg2faezz_t5_3nqvj/snoo_scream\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_shrug\": {\"url\": \"https://emoji.redditmedia.com/mvwd04vdaezz_t5_3nqvj/snoo_shrug\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_simple_smile\": {\"url\": \"https://emoji.redditmedia.com/dhbi1omcaezz_t5_3nqvj/snoo_simple_smile\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_smile\": {\"url\": \"https://emoji.redditmedia.com/fh0615maaezz_t5_3nqvj/snoo_smile\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_surprised\": {\"url\": \"https://emoji.redditmedia.com/hvfzdhf9aezz_t5_3nqvj/snoo_surprised\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_tableflip\": {\"url\": \"https://emoji.redditmedia.com/nbgogsm7aezz_t5_3nqvj/snoo_tableflip\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_thoughtful\": {\"url\": \"https://emoji.redditmedia.com/7jhvwsc5aezz_t5_3nqvj/snoo_thoughtful\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_tongue\": {\"url\": \"https://emoji.redditmedia.com/pgm55sg3aezz_t5_3nqvj/snoo_tongue\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_trollface\": {\"url\": \"https://emoji.redditmedia.com/mssz6vvv9ezz_t5_3nqvj/snoo_trollface\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_wink\": {\"url\": \"https://emoji.redditmedia.com/p0vdh98u9ezz_t5_3nqvj/snoo_wink\", \"created_by\": \"t2_6zfp6ii\"}, \"table\": {\"url\": \"https://emoji.redditmedia.com/cbl32coz9ezz_t5_3nqvj/table\", \"created_by\": \"t2_6zfp6ii\"}, \"table_flip\": {\"url\": \"https://emoji.redditmedia.com/l7sfl3z0aezz_t5_3nqvj/table_flip\", \"created_by\": \"t2_6zfp6ii\"}, \"upvote\": {\"url\": \"https://emoji.redditmedia.com/ad1td4bx9ezz_t5_3nqvj/upvote\", \"created_by\": \"t2_6zfp6ii\"}}, \"t5_2t5o6\": {\"50\": {\"url\": \"https://emoji.redditmedia.com/0tec5ulk2on01_t5_2t5o6/50\", \"created_by\": \"t2_4cixf\"}, \"test_jpg\": {\"url\": \"https://emoji.redditmedia.com/7c5i33kuion01_t5_2t5o6/test_jpg\", \"created_by\": \"t2_4cixf\"}, \"test_png\": {\"url\": \"https://emoji.redditmedia.com/qhnh6iluion01_t5_2t5o6/test_png\", \"created_by\": \"t2_4cixf\"}}}"
+          "string": "{\"snoomojis\": {\"cake\": {\"url\": \"https://emoji.redditmedia.com/46kel8lf1guz_t5_3nqvj/cake\", \"created_by\": \"t2_6zfp6ii\"}, \"cat_blep\": {\"url\": \"https://emoji.redditmedia.com/p9sxc1zh1guz_t5_3nqvj/cat_blep\", \"created_by\": \"t2_6zfp6ii\"}, \"doge\": {\"url\": \"https://emoji.redditmedia.com/f0fypg8k1guz_t5_3nqvj/doge\", \"created_by\": \"t2_6zfp6ii\"}, \"downvote\": {\"url\": \"https://emoji.redditmedia.com/r05m1xcm1guz_t5_3nqvj/downvote\", \"created_by\": \"t2_6zfp6ii\"}, \"hamster\": {\"url\": \"https://emoji.redditmedia.com/63xo3dun1guz_t5_3nqvj/hamster\", \"created_by\": \"t2_6zfp6ii\"}, \"illuminati\": {\"url\": \"https://emoji.redditmedia.com/mv60bklq1guz_t5_3nqvj/illuminati\", \"created_by\": \"t2_6zfp6ii\"}, \"kappa\": {\"url\": \"https://emoji.redditmedia.com/2uaduvnr1guz_t5_3nqvj/kappa\", \"created_by\": \"t2_6zfp6ii\"}, \"karma\": {\"url\": \"https://emoji.redditmedia.com/dgnf69ls1guz_t5_3nqvj/karma\", \"created_by\": \"t2_6zfp6ii\"}, \"orly\": {\"url\": \"https://emoji.redditmedia.com/crum4urt1guz_t5_3nqvj/orly\", \"created_by\": \"t2_6zfp6ii\"}, \"partyparrot\": {\"url\": \"https://emoji.redditmedia.com/rk1bpelv1guz_t5_3nqvj/partyparrot\", \"created_by\": \"t2_6zfp6ii\"}, \"pupper\": {\"url\": \"https://emoji.redditmedia.com/l73ksapw1guz_t5_3nqvj/pupper\", \"created_by\": \"t2_6zfp6ii\"}, \"redditgold\": {\"url\": \"https://emoji.redditmedia.com/5knu5pox1guz_t5_3nqvj/redditgold\", \"created_by\": \"t2_6zfp6ii\"}, \"sloth\": {\"url\": \"https://emoji.redditmedia.com/rpczqdwy1guz_t5_3nqvj/sloth\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo\": {\"url\": \"https://emoji.redditmedia.com/3whaar0s9ezz_t5_3nqvj/snoo\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_angry\": {\"url\": \"https://emoji.redditmedia.com/8qgfoo9waezz_t5_3nqvj/snoo_angry\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_biblethump\": {\"url\": \"https://emoji.redditmedia.com/akdtlr0vaezz_t5_3nqvj/snoo_biblethump\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_dealwithit\": {\"url\": \"https://emoji.redditmedia.com/94ntcn2taezz_t5_3nqvj/snoo_dealwithit\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_disapproval\": {\"url\": \"https://emoji.redditmedia.com/49dz5ljraezz_t5_3nqvj/snoo_disapproval\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_facepalm\": {\"url\": \"https://emoji.redditmedia.com/wzxf63qpaezz_t5_3nqvj/snoo_facepalm\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_feelsbadman\": {\"url\": \"https://emoji.redditmedia.com/7xdss4doaezz_t5_3nqvj/snoo_feelsbadman\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_feelsgoodman\": {\"url\": \"https://emoji.redditmedia.com/nbv1idzmaezz_t5_3nqvj/snoo_feelsgoodman\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_hearteyes\": {\"url\": \"https://emoji.redditmedia.com/igu167dlaezz_t5_3nqvj/snoo_hearteyes\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_hug\": {\"url\": \"https://emoji.redditmedia.com/wqivmcpjaezz_t5_3nqvj/snoo_hug\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_joy\": {\"url\": \"https://emoji.redditmedia.com/ehw8l3piaezz_t5_3nqvj/snoo_joy\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_putback\": {\"url\": \"https://emoji.redditmedia.com/8228r6bhaezz_t5_3nqvj/snoo_putback\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_sad\": {\"url\": \"https://emoji.redditmedia.com/a761ck7gaezz_t5_3nqvj/snoo_sad\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_scream\": {\"url\": \"https://emoji.redditmedia.com/19g4yg2faezz_t5_3nqvj/snoo_scream\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_shrug\": {\"url\": \"https://emoji.redditmedia.com/mvwd04vdaezz_t5_3nqvj/snoo_shrug\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_simple_smile\": {\"url\": \"https://emoji.redditmedia.com/dhbi1omcaezz_t5_3nqvj/snoo_simple_smile\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_smile\": {\"url\": \"https://emoji.redditmedia.com/fh0615maaezz_t5_3nqvj/snoo_smile\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_surprised\": {\"url\": \"https://emoji.redditmedia.com/hvfzdhf9aezz_t5_3nqvj/snoo_surprised\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_tableflip\": {\"url\": \"https://emoji.redditmedia.com/nbgogsm7aezz_t5_3nqvj/snoo_tableflip\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_thoughtful\": {\"url\": \"https://emoji.redditmedia.com/7jhvwsc5aezz_t5_3nqvj/snoo_thoughtful\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_tongue\": {\"url\": \"https://emoji.redditmedia.com/pgm55sg3aezz_t5_3nqvj/snoo_tongue\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_trollface\": {\"url\": \"https://emoji.redditmedia.com/mssz6vvv9ezz_t5_3nqvj/snoo_trollface\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_wink\": {\"url\": \"https://emoji.redditmedia.com/p0vdh98u9ezz_t5_3nqvj/snoo_wink\", \"created_by\": \"t2_6zfp6ii\"}, \"table\": {\"url\": \"https://emoji.redditmedia.com/cbl32coz9ezz_t5_3nqvj/table\", \"created_by\": \"t2_6zfp6ii\"}, \"table_flip\": {\"url\": \"https://emoji.redditmedia.com/l7sfl3z0aezz_t5_3nqvj/table_flip\", \"created_by\": \"t2_6zfp6ii\"}, \"upvote\": {\"url\": \"https://emoji.redditmedia.com/ad1td4bx9ezz_t5_3nqvj/upvote\", \"created_by\": \"t2_6zfp6ii\"}}, \"t5_h6aad\": {\"alamance\": {\"url\": \"https://emoji.redditmedia.com/cz47h98kvjn01_t5_h6aad/alamance\", \"created_by\": \"t2_12vm3jhg\"}, \"TeST\": {\"url\": \"https://emoji.redditmedia.com/ye34gfz51hn01_t5_h6aad/TeST\", \"created_by\": \"t2_12vm3jhg\"}, \"test\": {\"url\": \"https://emoji.redditmedia.com/yflr3b0jvjn01_t5_h6aad/test\", \"created_by\": \"t2_12vm3jhg\"}, \"test_png\": {\"url\": \"https://emoji.redditmedia.com/ua04ffomyqn01_t5_h6aad/test_png\", \"created_by\": \"t2_12vm3jhg\"}}}"
         },
         "headers": {
           "Accept-Ranges": [
@@ -145,13 +145,13 @@
             "keep-alive"
           ],
           "Content-Length": [
-            "4914"
+            "5034"
           ],
           "Content-Type": [
             "application/json; charset=UTF-8"
           ],
           "Date": [
-            "Sat, 24 Mar 2018 09:27:06 GMT"
+            "Sat, 24 Mar 2018 17:38:32 GMT"
           ],
           "Server": [
             "snooserv"
@@ -175,10 +175,10 @@
             "majestic"
           ],
           "X-Served-By": [
-            "cache-lax8643-LAX"
+            "cache-pao17443-PAO"
           ],
           "X-Timer": [
-            "S1521883627.847298,VS0,VE107"
+            "S1521913112.193164,VS0,VE95"
           ],
           "cache-control": [
             "private, s-maxage=0, max-age=0, must-revalidate, max-age=0, must-revalidate"
@@ -187,7 +187,7 @@
             "-1"
           ],
           "set-cookie": [
-            "session_tracker=L2FjnRy8ealeSkwG1b.0.1521883626895.Z0FBQUFBQmF0aG5xTTFxYkJSQzZvall0VWtVSF84bjNNMF9ROFJoekNzWks5UjJnNzh4N3hEemV4VzREcmNlZmx3OUZJTENYeWFvVi1KdkUyeHIzZ1dYN09VSU96aW5lMWNnelg2ZEVNX0cyRHRPS1Ftd1lZSE9XU2Zob2tOR3JSUXBBYWNtRjRBWlk; Domain=reddit.com; Max-Age=7199; Path=/; expires=Sat, 24-Mar-2018 11:27:06 GMT; secure"
+            "session_tracker=q2qvfpATrxiqdAiTls.0.1521913112262.Z0FBQUFBQmF0bzBZTnRvQmh5eWp3Wl9wa182eXVzQXZpSHpvZG1sSWh3eGN6U0t1RmtBV0JUUmF3QUhuQ2dfMzhMV29veGpoX2VVc0wzRjR4OXhRVUc3SWhlMHJzbFB1QjdlSXBqdVB0QnlCQ18tZWpnLV9QdmcwMDdTZGRSVmVLblpTZjdDd0hJMTE; Domain=reddit.com; Max-Age=7199; Path=/; expires=Sat, 24-Mar-2018 19:38:32 GMT; secure"
           ],
           "x-content-type-options": [
             "nosniff"
@@ -196,13 +196,13 @@
             "SAMEORIGIN"
           ],
           "x-ratelimit-remaining": [
-            "488.0"
+            "599.0"
           ],
           "x-ratelimit-reset": [
-            "174"
+            "88"
           ],
           "x-ratelimit-used": [
-            "112"
+            "1"
           ],
           "x-xss-protection": [
             "1; mode=block"
@@ -216,7 +216,7 @@
       }
     },
     {
-      "recorded_at": "2018-03-24T09:27:06",
+      "recorded_at": "2018-03-24T17:38:32",
       "request": {
         "body": {
           "encoding": "utf-8",
@@ -236,7 +236,7 @@
             "keep-alive"
           ],
           "Cookie": [
-            "edgebucket=pXuEzkqtm3giop4saH; session_tracker=L2FjnRy8ealeSkwG1b.0.1521883626895.Z0FBQUFBQmF0aG5xTTFxYkJSQzZvall0VWtVSF84bjNNMF9ROFJoekNzWks5UjJnNzh4N3hEemV4VzREcmNlZmx3OUZJTENYeWFvVi1KdkUyeHIzZ1dYN09VSU96aW5lMWNnelg2ZEVNX0cyRHRPS1Ftd1lZSE9XU2Zob2tOR3JSUXBBYWNtRjRBWlk"
+            "edgebucket=EhxzqiRzMifZRPlmt1; session_tracker=q2qvfpATrxiqdAiTls.0.1521913112262.Z0FBQUFBQmF0bzBZTnRvQmh5eWp3Wl9wa182eXVzQXZpSHpvZG1sSWh3eGN6U0t1RmtBV0JUUmF3QUhuQ2dfMzhMV29veGpoX2VVc0wzRjR4OXhRVUc3SWhlMHJzbFB1QjdlSXBqdVB0QnlCQ18tZWpnLV9QdmcwMDdTZGRSVmVLblpTZjdDd0hJMTE"
           ],
           "User-Agent": [
             "<USER_AGENT> PRAW/5.4.0.dev0 prawcore/0.14.0"
@@ -248,7 +248,7 @@
       "response": {
         "body": {
           "encoding": "UTF-8",
-          "string": "{\"kind\": \"t5\", \"data\": {\"notification_level\": \"off\", \"user_flair_background_color\": null, \"banner_img\": \"https://b.thumbs.redditmedia.com/UwKZ1FguKqLsZ-dVSM-D0-o2OJVyOWKw966EPKv5wKA.jpg\", \"user_flair_text\": \"foobar\", \"submit_text_html\": null, \"user_flair_template_id\": null, \"user_is_banned\": false, \"subreddit_type\": \"public\", \"community_icon\": \"\", \"wiki_enabled\": true, \"show_media\": false, \"id\": \"2t5o6\", \"description\": \"\", \"submit_text\": \"\", \"user_flair_type\": \"richtext\", \"user_can_flair_in_sr\": true, \"display_name\": \"<TEST_SUBREDDIT>\", \"header_img\": null, \"description_html\": null, \"title\": \"Reddit API Test wbnq3imnkgeed5e0dee5aec96501c680374b24f5ae469a3153xx\", \"collapse_deleted_comments\": false, \"user_has_favorited\": false, \"public_description\": \"\", \"over18\": false, \"emojis_enabled\": true, \"public_description_html\": null, \"can_assign_user_flair\": false, \"allow_videos\": true, \"spoilers_enabled\": false, \"icon_size\": null, \"primary_color\": \"\", \"user_is_contributor\": false, \"audience_target\": \"\", \"suggested_comment_sort\": null, \"active_user_count\": 3, \"icon_img\": null, \"header_title\": null, \"display_name_prefixed\": \"r/<TEST_SUBREDDIT>\", \"can_assign_link_flair\": false, \"submit_link_label\": null, \"link_flair_enabled\": true, \"user_flair_text_color\": null, \"accounts_active\": 3, \"public_traffic\": false, \"header_size\": null, \"subscribers\": 26, \"user_flair_css_class\": null, \"submit_text_label\": null, \"key_color\": \"\", \"user_flair_richtext\": [{\"e\": \"text\", \"t\": \"foobar\"}], \"user_sr_flair_enabled\": true, \"lang\": \"en\", \"is_enrolled_in_new_modmail\": false, \"whitelist_status\": null, \"name\": \"t5_2t5o6\", \"user_flair_enabled_in_sr\": false, \"allow_videogifs\": true, \"url\": \"/r/<TEST_SUBREDDIT>/\", \"quarantine\": false, \"hide_ads\": false, \"created_utc\": 1322550775.0, \"banner_size\": [640, 192], \"user_is_moderator\": true, \"allow_discovery\": false, \"accounts_active_is_fuzzed\": false, \"advertiser_category\": null, \"user_sr_theme_enabled\": true, \"created\": 1322579575.0, \"allow_images\": true, \"videostream_links_count\": 0, \"comment_score_hide_mins\": 0, \"show_media_preview\": false, \"submission_type\": \"any\", \"user_is_muted\": false, \"user_is_subscriber\": true}}"
+          "string": "{\"kind\": \"t5\", \"data\": {\"notification_level\": null, \"user_flair_background_color\": null, \"banner_img\": \"\", \"user_flair_text\": null, \"submit_text_html\": null, \"user_flair_template_id\": null, \"user_is_banned\": false, \"subreddit_type\": \"public\", \"community_icon\": \"\", \"wiki_enabled\": true, \"show_media\": true, \"id\": \"h6aad\", \"description\": \"\", \"submit_text\": \"\", \"user_flair_type\": \"text\", \"user_can_flair_in_sr\": true, \"display_name\": \"<TEST_SUBREDDIT>\", \"header_img\": null, \"description_html\": null, \"title\": \"For testing emojis\", \"collapse_deleted_comments\": false, \"user_has_favorited\": false, \"public_description\": \"\", \"over18\": false, \"emojis_enabled\": true, \"public_description_html\": null, \"can_assign_user_flair\": false, \"allow_videos\": true, \"spoilers_enabled\": true, \"icon_size\": null, \"primary_color\": \"\", \"user_is_contributor\": false, \"audience_target\": \"\", \"suggested_comment_sort\": null, \"active_user_count\": 3, \"icon_img\": \"\", \"header_title\": null, \"display_name_prefixed\": \"r/<TEST_SUBREDDIT>\", \"can_assign_link_flair\": false, \"submit_link_label\": null, \"link_flair_enabled\": false, \"user_flair_text_color\": null, \"accounts_active\": 3, \"public_traffic\": false, \"header_size\": null, \"subscribers\": 1, \"user_flair_css_class\": null, \"submit_text_label\": null, \"key_color\": \"\", \"user_flair_richtext\": [], \"user_sr_flair_enabled\": true, \"lang\": \"en\", \"is_enrolled_in_new_modmail\": true, \"whitelist_status\": null, \"name\": \"t5_h6aad\", \"user_flair_enabled_in_sr\": true, \"allow_videogifs\": true, \"url\": \"/r/<TEST_SUBREDDIT>/\", \"quarantine\": false, \"hide_ads\": false, \"created_utc\": 1521757752.0, \"banner_size\": null, \"user_is_moderator\": true, \"allow_discovery\": true, \"accounts_active_is_fuzzed\": false, \"advertiser_category\": null, \"user_sr_theme_enabled\": true, \"created\": 1521786552.0, \"allow_images\": true, \"videostream_links_count\": 0, \"comment_score_hide_mins\": 0, \"show_media_preview\": true, \"submission_type\": \"any\", \"user_is_muted\": false, \"user_is_subscriber\": false}}"
         },
         "headers": {
           "Accept-Ranges": [
@@ -258,13 +258,13 @@
             "keep-alive"
           ],
           "Content-Length": [
-            "2161"
+            "1966"
           ],
           "Content-Type": [
             "application/json; charset=UTF-8"
           ],
           "Date": [
-            "Sat, 24 Mar 2018 09:27:07 GMT"
+            "Sat, 24 Mar 2018 17:38:32 GMT"
           ],
           "Server": [
             "snooserv"
@@ -288,10 +288,10 @@
             "majestic"
           ],
           "X-Served-By": [
-            "cache-lax8643-LAX"
+            "cache-pao17443-PAO"
           ],
           "X-Timer": [
-            "S1521883627.980879,VS0,VE178"
+            "S1521913112.384149,VS0,VE136"
           ],
           "cache-control": [
             "private, s-maxage=0, max-age=0, must-revalidate, max-age=0, must-revalidate"
@@ -300,8 +300,8 @@
             "-1"
           ],
           "set-cookie": [
-            "loid=00000000000004cixf.2.1284611485984.Z0FBQUFBQmF0aG5ydUwzVldEczJWbHZZYW91Ql9Rd3J0Q1FjcmtoZEtQUk9MbEs5R0dCM0dBMWhxRm5uZlVfUkpPaGMzMUNEMWJzWHM5YWRDMGgtV2otcFpQSVpFeG41aExlX2NSVVRnOXBYZE5MZkVYNlJrRUVDeXpmUW52LVh0X3FNLVo1SnM5dmU; Domain=reddit.com; Max-Age=63071999; Path=/; expires=Mon, 23-Mar-2020 09:27:07 GMT; secure",
-            "session_tracker=L2FjnRy8ealeSkwG1b.0.1521883627031.Z0FBQUFBQmF0aG5yWmRpd0xHcUNnY0N6ekhVZ1duTjk4UE54RWdZMGFpUDBseG8tWjFmRFItbUNsNGtMeWJSektjQmtIRnF1MkpGZG5TaHNwM2xDWFVHZGNYNkdTTkExa0xZdmdDd2M4MEYtbEdiTURWbHJfVjctMFBCTlEwNEJwcDM5Rm91bmNyOVg; Domain=reddit.com; Max-Age=7199; Path=/; expires=Sat, 24-Mar-2018 11:27:07 GMT; secure"
+            "loid=000000000012vm3jhg.2.1521757540492.Z0FBQUFBQmF0bzBZM3FuT3d3cE5ZNzFxaUM0dnVXUDlqajBpQkZfM3U2TzhvSWQzMnpkaVc3QXktWlBBTGN0OXc1MnNQU0pGM3NSMlVpX0lEWDR0N2FSZkREQTNzY0o0RHBVS2Z3VXdWZXBkRWVCNXVxRW9IRmFsbk1IQl9GQktHdUNnREx5SVZJUmI; Domain=reddit.com; Max-Age=63071999; Path=/; expires=Mon, 23-Mar-2020 17:38:32 GMT; secure",
+            "session_tracker=q2qvfpATrxiqdAiTls.0.1521913112420.Z0FBQUFBQmF0bzBZMzgybnY5ZnBUdzJhY0htQlM1T2t6S2VFNHMzNGh1WjR4V25jM0s5S2VtajZTZTBzajhIVVlRb1hER3RRMnZucDJocTJkbGduTmxSTzFJQkJpRHdYaF9nMDlRSE1yVnVpTEZYenNIMUVnbDJ0UjBjNGtDUVFjRS1ObTA0TlpkNHY; Domain=reddit.com; Max-Age=7199; Path=/; expires=Sat, 24-Mar-2018 19:38:32 GMT; secure"
           ],
           "x-content-type-options": [
             "nosniff"
@@ -310,13 +310,13 @@
             "SAMEORIGIN"
           ],
           "x-ratelimit-remaining": [
-            "487.0"
+            "598.0"
           ],
           "x-ratelimit-reset": [
-            "173"
+            "88"
           ],
           "x-ratelimit-used": [
-            "113"
+            "2"
           ],
           "x-ua-compatible": [
             "IE=edge"
@@ -331,6 +331,119 @@
         },
         "url": "https://oauth.reddit.com/r/<TEST_SUBREDDIT>/about/?raw_json=1"
       }
+    },
+    {
+      "recorded_at": "2018-03-24T17:38:32",
+      "request": {
+        "body": {
+          "encoding": "utf-8",
+          "string": ""
+        },
+        "headers": {
+          "Accept": [
+            "*/*"
+          ],
+          "Accept-Encoding": [
+            "identity"
+          ],
+          "Authorization": [
+            "bearer <ACCESS_TOKEN>"
+          ],
+          "Connection": [
+            "keep-alive"
+          ],
+          "Cookie": [
+            "edgebucket=EhxzqiRzMifZRPlmt1; loid=000000000012vm3jhg.2.1521757540492.Z0FBQUFBQmF0bzBZM3FuT3d3cE5ZNzFxaUM0dnVXUDlqajBpQkZfM3U2TzhvSWQzMnpkaVc3QXktWlBBTGN0OXc1MnNQU0pGM3NSMlVpX0lEWDR0N2FSZkREQTNzY0o0RHBVS2Z3VXdWZXBkRWVCNXVxRW9IRmFsbk1IQl9GQktHdUNnREx5SVZJUmI; session_tracker=q2qvfpATrxiqdAiTls.0.1521913112420.Z0FBQUFBQmF0bzBZMzgybnY5ZnBUdzJhY0htQlM1T2t6S2VFNHMzNGh1WjR4V25jM0s5S2VtajZTZTBzajhIVVlRb1hER3RRMnZucDJocTJkbGduTmxSTzFJQkJpRHdYaF9nMDlRSE1yVnVpTEZYenNIMUVnbDJ0UjBjNGtDUVFjRS1ObTA0TlpkNHY"
+          ],
+          "User-Agent": [
+            "<USER_AGENT> PRAW/5.4.0.dev0 prawcore/0.14.0"
+          ]
+        },
+        "method": "GET",
+        "uri": "https://oauth.reddit.com/api/v1/<TEST_SUBREDDIT>/emojis/all?raw_json=1"
+      },
+      "response": {
+        "body": {
+          "encoding": "UTF-8",
+          "string": "{\"snoomojis\": {\"cake\": {\"url\": \"https://emoji.redditmedia.com/46kel8lf1guz_t5_3nqvj/cake\", \"created_by\": \"t2_6zfp6ii\"}, \"cat_blep\": {\"url\": \"https://emoji.redditmedia.com/p9sxc1zh1guz_t5_3nqvj/cat_blep\", \"created_by\": \"t2_6zfp6ii\"}, \"doge\": {\"url\": \"https://emoji.redditmedia.com/f0fypg8k1guz_t5_3nqvj/doge\", \"created_by\": \"t2_6zfp6ii\"}, \"downvote\": {\"url\": \"https://emoji.redditmedia.com/r05m1xcm1guz_t5_3nqvj/downvote\", \"created_by\": \"t2_6zfp6ii\"}, \"hamster\": {\"url\": \"https://emoji.redditmedia.com/63xo3dun1guz_t5_3nqvj/hamster\", \"created_by\": \"t2_6zfp6ii\"}, \"illuminati\": {\"url\": \"https://emoji.redditmedia.com/mv60bklq1guz_t5_3nqvj/illuminati\", \"created_by\": \"t2_6zfp6ii\"}, \"kappa\": {\"url\": \"https://emoji.redditmedia.com/2uaduvnr1guz_t5_3nqvj/kappa\", \"created_by\": \"t2_6zfp6ii\"}, \"karma\": {\"url\": \"https://emoji.redditmedia.com/dgnf69ls1guz_t5_3nqvj/karma\", \"created_by\": \"t2_6zfp6ii\"}, \"orly\": {\"url\": \"https://emoji.redditmedia.com/crum4urt1guz_t5_3nqvj/orly\", \"created_by\": \"t2_6zfp6ii\"}, \"partyparrot\": {\"url\": \"https://emoji.redditmedia.com/rk1bpelv1guz_t5_3nqvj/partyparrot\", \"created_by\": \"t2_6zfp6ii\"}, \"pupper\": {\"url\": \"https://emoji.redditmedia.com/l73ksapw1guz_t5_3nqvj/pupper\", \"created_by\": \"t2_6zfp6ii\"}, \"redditgold\": {\"url\": \"https://emoji.redditmedia.com/5knu5pox1guz_t5_3nqvj/redditgold\", \"created_by\": \"t2_6zfp6ii\"}, \"sloth\": {\"url\": \"https://emoji.redditmedia.com/rpczqdwy1guz_t5_3nqvj/sloth\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo\": {\"url\": \"https://emoji.redditmedia.com/3whaar0s9ezz_t5_3nqvj/snoo\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_angry\": {\"url\": \"https://emoji.redditmedia.com/8qgfoo9waezz_t5_3nqvj/snoo_angry\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_biblethump\": {\"url\": \"https://emoji.redditmedia.com/akdtlr0vaezz_t5_3nqvj/snoo_biblethump\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_dealwithit\": {\"url\": \"https://emoji.redditmedia.com/94ntcn2taezz_t5_3nqvj/snoo_dealwithit\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_disapproval\": {\"url\": \"https://emoji.redditmedia.com/49dz5ljraezz_t5_3nqvj/snoo_disapproval\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_facepalm\": {\"url\": \"https://emoji.redditmedia.com/wzxf63qpaezz_t5_3nqvj/snoo_facepalm\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_feelsbadman\": {\"url\": \"https://emoji.redditmedia.com/7xdss4doaezz_t5_3nqvj/snoo_feelsbadman\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_feelsgoodman\": {\"url\": \"https://emoji.redditmedia.com/nbv1idzmaezz_t5_3nqvj/snoo_feelsgoodman\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_hearteyes\": {\"url\": \"https://emoji.redditmedia.com/igu167dlaezz_t5_3nqvj/snoo_hearteyes\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_hug\": {\"url\": \"https://emoji.redditmedia.com/wqivmcpjaezz_t5_3nqvj/snoo_hug\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_joy\": {\"url\": \"https://emoji.redditmedia.com/ehw8l3piaezz_t5_3nqvj/snoo_joy\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_putback\": {\"url\": \"https://emoji.redditmedia.com/8228r6bhaezz_t5_3nqvj/snoo_putback\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_sad\": {\"url\": \"https://emoji.redditmedia.com/a761ck7gaezz_t5_3nqvj/snoo_sad\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_scream\": {\"url\": \"https://emoji.redditmedia.com/19g4yg2faezz_t5_3nqvj/snoo_scream\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_shrug\": {\"url\": \"https://emoji.redditmedia.com/mvwd04vdaezz_t5_3nqvj/snoo_shrug\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_simple_smile\": {\"url\": \"https://emoji.redditmedia.com/dhbi1omcaezz_t5_3nqvj/snoo_simple_smile\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_smile\": {\"url\": \"https://emoji.redditmedia.com/fh0615maaezz_t5_3nqvj/snoo_smile\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_surprised\": {\"url\": \"https://emoji.redditmedia.com/hvfzdhf9aezz_t5_3nqvj/snoo_surprised\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_tableflip\": {\"url\": \"https://emoji.redditmedia.com/nbgogsm7aezz_t5_3nqvj/snoo_tableflip\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_thoughtful\": {\"url\": \"https://emoji.redditmedia.com/7jhvwsc5aezz_t5_3nqvj/snoo_thoughtful\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_tongue\": {\"url\": \"https://emoji.redditmedia.com/pgm55sg3aezz_t5_3nqvj/snoo_tongue\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_trollface\": {\"url\": \"https://emoji.redditmedia.com/mssz6vvv9ezz_t5_3nqvj/snoo_trollface\", \"created_by\": \"t2_6zfp6ii\"}, \"snoo_wink\": {\"url\": \"https://emoji.redditmedia.com/p0vdh98u9ezz_t5_3nqvj/snoo_wink\", \"created_by\": \"t2_6zfp6ii\"}, \"table\": {\"url\": \"https://emoji.redditmedia.com/cbl32coz9ezz_t5_3nqvj/table\", \"created_by\": \"t2_6zfp6ii\"}, \"table_flip\": {\"url\": \"https://emoji.redditmedia.com/l7sfl3z0aezz_t5_3nqvj/table_flip\", \"created_by\": \"t2_6zfp6ii\"}, \"upvote\": {\"url\": \"https://emoji.redditmedia.com/ad1td4bx9ezz_t5_3nqvj/upvote\", \"created_by\": \"t2_6zfp6ii\"}}, \"t5_h6aad\": {\"alamance\": {\"url\": \"https://emoji.redditmedia.com/cz47h98kvjn01_t5_h6aad/alamance\", \"created_by\": \"t2_12vm3jhg\"}, \"TeST\": {\"url\": \"https://emoji.redditmedia.com/ye34gfz51hn01_t5_h6aad/TeST\", \"created_by\": \"t2_12vm3jhg\"}, \"test\": {\"url\": \"https://emoji.redditmedia.com/yflr3b0jvjn01_t5_h6aad/test\", \"created_by\": \"t2_12vm3jhg\"}, \"test_png\": {\"url\": \"https://emoji.redditmedia.com/ua04ffomyqn01_t5_h6aad/test_png\", \"created_by\": \"t2_12vm3jhg\"}}}"
+        },
+        "headers": {
+          "Accept-Ranges": [
+            "bytes"
+          ],
+          "Connection": [
+            "keep-alive"
+          ],
+          "Content-Length": [
+            "5034"
+          ],
+          "Content-Type": [
+            "application/json; charset=UTF-8"
+          ],
+          "Date": [
+            "Sat, 24 Mar 2018 17:38:32 GMT"
+          ],
+          "Server": [
+            "snooserv"
+          ],
+          "Strict-Transport-Security": [
+            "max-age=15552000; includeSubDomains; preload"
+          ],
+          "Vary": [
+            "accept-encoding"
+          ],
+          "Via": [
+            "1.1 varnish"
+          ],
+          "X-Cache": [
+            "MISS"
+          ],
+          "X-Cache-Hits": [
+            "0"
+          ],
+          "X-Moose": [
+            "majestic"
+          ],
+          "X-Served-By": [
+            "cache-pao17443-PAO"
+          ],
+          "X-Timer": [
+            "S1521913113.560432,VS0,VE110"
+          ],
+          "cache-control": [
+            "private, s-maxage=0, max-age=0, must-revalidate, max-age=0, must-revalidate"
+          ],
+          "expires": [
+            "-1"
+          ],
+          "set-cookie": [
+            "session_tracker=q2qvfpATrxiqdAiTls.0.1521913112593.Z0FBQUFBQmF0bzBZcEhIMGh2N3lHaXVrMXd6S3hSZ3NfOGpxQ3dISVEtSmVnQnh5Z25GeGhzZ2ZOUnN5YzRZY3hhWmJRZWtYN1lXcnNaVDczZ0VrU19zTTRkQkJCN0c4UV9FWGxIQ2RoRmtOeGRoR2dTYU5mZ1RVZHhUb2ZjZHI3TTNDWE9wMERQdW4; Domain=reddit.com; Max-Age=7199; Path=/; expires=Sat, 24-Mar-2018 19:38:32 GMT; secure"
+          ],
+          "x-content-type-options": [
+            "nosniff"
+          ],
+          "x-frame-options": [
+            "SAMEORIGIN"
+          ],
+          "x-ratelimit-remaining": [
+            "597.0"
+          ],
+          "x-ratelimit-reset": [
+            "88"
+          ],
+          "x-ratelimit-used": [
+            "3"
+          ],
+          "x-xss-protection": [
+            "1; mode=block"
+          ]
+        },
+        "status": {
+          "code": 200,
+          "message": "OK"
+        },
+        "url": "https://oauth.reddit.com/api/v1/<TEST_SUBREDDIT>/emojis/all?raw_json=1"
+      }
     }
   ],
   "recorded_with": "betamax/0.8.1"
diff --git a/tests/integration/models/reddit/test_emoji.py b/tests/integration/models/reddit/test_emoji.py
--- a/tests/integration/models/reddit/test_emoji.py
+++ b/tests/integration/models/reddit/test_emoji.py
@@ -20,12 +20,17 @@ def test__fetch__invalid_emoji(self, _):
         self.reddit.read_only = False
         subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
         emoji = subreddit.emoji['invalid']
+        emoji2 = subreddit.emoji['Test_png']
         with self.recorder.use_cassette(
                 'TestEmoji.test__fetch__invalid_emoji'):
             with pytest.raises(ClientException) as excinfo:
                 emoji.url
             assert str(excinfo.value) == ('/r/{} does not have the emoji {}'
                                           .format(subreddit, 'invalid'))
+            with pytest.raises(ClientException) as excinfo2:
+                emoji2.url
+            assert str(excinfo2.value) == ('/r/{} does not have the emoji {}'
+                                           .format(subreddit, 'Test_png'))
 
     def test_delete(self):
         self.reddit.read_only = False
diff --git a/tests/unit/models/reddit/test_emoji.py b/tests/unit/models/reddit/test_emoji.py
--- a/tests/unit/models/reddit/test_emoji.py
+++ b/tests/unit/models/reddit/test_emoji.py
@@ -15,12 +15,19 @@ def test_equality(self):
                        name='1')
         emoji4 = Emoji(self.reddit, subreddit=Subreddit(self.reddit, 'A'),
                        name='x')
+        emoji5 = Emoji(self.reddit, subreddit=Subreddit(self.reddit, 'a'),
+                       name='X')
+        emoji6 = Emoji(self.reddit, subreddit=Subreddit(self.reddit, 'b'),
+                       name='x')
         assert emoji1 == emoji1
+        assert emoji1 == 'x'
         assert emoji2 == emoji2
         assert emoji3 == emoji3
         assert emoji1 != emoji2
         assert emoji1 != emoji3
         assert emoji1 == emoji4
+        assert emoji1 != emoji5
+        assert emoji1 != emoji6
 
     def test__get(self):
         subreddit = self.reddit.subreddit('a')
@@ -36,12 +43,18 @@ def test_hash(self):
                        name='1')
         emoji4 = Emoji(self.reddit, subreddit=Subreddit(self.reddit, 'A'),
                        name='x')
+        emoji5 = Emoji(self.reddit, subreddit=Subreddit(self.reddit, 'a'),
+                       name='X')
+        emoji6 = Emoji(self.reddit, subreddit=Subreddit(self.reddit, 'b'),
+                       name='x')
         assert hash(emoji1) == hash(emoji1)
         assert hash(emoji2) == hash(emoji2)
         assert hash(emoji3) == hash(emoji3)
         assert hash(emoji1) != hash(emoji2)
         assert hash(emoji1) != hash(emoji3)
         assert hash(emoji1) == hash(emoji4)
+        assert hash(emoji1) != hash(emoji5)
+        assert hash(emoji1) != hash(emoji6)
 
     def test_pickle(self):
         emoji = Emoji(self.reddit, subreddit=Subreddit(self.reddit, 'a'),