From ad67762b43ec40ea8b44115c63a777ba97a4e0d9 Mon Sep 17 00:00:00 2001 From: David Wahlstrom Date: Thu, 10 Mar 2016 10:51:19 -0800 Subject: [PATCH] plexstatus: add unittests Add unittest for the plexstatus module. Currently verifies that if there is no stream, the output is null, and if there is a stream, it is properly getting parsed out of the xml. --- tests/plexstatus.xml | 19 +++++++++++++++++++ tests/test_plexstatus.py | 41 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 tests/plexstatus.xml create mode 100644 tests/test_plexstatus.py diff --git a/tests/plexstatus.xml b/tests/plexstatus.xml new file mode 100644 index 0000000..bc40818 --- /dev/null +++ b/tests/plexstatus.xml @@ -0,0 +1,19 @@ + + + + diff --git a/tests/test_plexstatus.py b/tests/test_plexstatus.py new file mode 100644 index 0000000..93d50a3 --- /dev/null +++ b/tests/test_plexstatus.py @@ -0,0 +1,41 @@ +""" +Basic test for the plexstatus module +""" + +import unittest +from mock import patch +from unittest.mock import MagicMock +from urllib.request import urlopen +from i3pystatus import plexstatus + + +class PlexstatusTest(unittest.TestCase): + + @patch('i3pystatus.plexstatus.urlopen', autospec=True) + def test_not_stream(self, urlopen): + """ + Test output when nothing is being streamed + """ + null_stream = b'\n\n' + plexstatus.urlopen.return_value.read.return_value = null_stream + plxstat = plexstatus.Plexstatus(apikey='111111', address='127.0.0.1') + plxstat.run() + self.assertTrue(plxstat.output == {}) + + @patch('i3pystatus.plexstatus.urlopen', autospec=True) + def test_streaming(self, urlopen): + """ + Test output from side-loaded xml (generated from a real plex server + response) + """ + streamfile = open('plexstatus.xml', 'rb') + stream = streamfile.read() + streamfile.close() + plexstatus.urlopen.return_value.read.return_value = stream + plxstat = plexstatus.Plexstatus(apikey='111111', address='127.0.0.1') + plxstat.run() + self.assertTrue(plxstat.output['full_text'] == 'Chrome: Big Buck Bunny') + + +if __name__ == '__main__': + unittest.main()