1from json import dumps
2
3from praw.models import (
4    SubredditWidgets,
5    SubredditWidgetsModeration,
6    Widget,
7    WidgetModeration,
8)
9from praw.models.reddit.widgets import WidgetEncoder
10from praw.models.base import PRAWBase
11
12from ... import UnitTest
13
14
15class TestWidgetEncoder(UnitTest):
16    def test_bad_encode(self):
17        data = [
18            1,
19            "two",
20            SubredditWidgetsModeration(
21                self.reddit.subreddit("subreddit"), self.reddit
22            ),
23        ]
24        try:
25            dumps(data, cls=WidgetEncoder)  # should throw TypeError
26        except TypeError:
27            pass  # success
28        else:
29            assert False
30
31    def test_good_encode(self):
32        data = [
33            1,
34            "two",
35            PRAWBase(self.reddit, _data={"_secret": "no", "3": 3}),
36        ]
37        assert '[1, "two", {"3": 3}]' == dumps(data, cls=WidgetEncoder)
38
39
40class TestWidgets(UnitTest):
41    def test_subredditwidgets_mod(self):
42        sw = SubredditWidgets(self.reddit.subreddit("fake_subreddit"))
43        assert isinstance(sw.mod, SubredditWidgetsModeration)
44
45    def test_widget_mod(self):
46        w = Widget(self.reddit, {})
47        assert isinstance(w.mod, WidgetModeration)
48        assert w.mod.widget == w
49