From ad67762b43ec40ea8b44115c63a777ba97a4e0d9 Mon Sep 17 00:00:00 2001 From: David Wahlstrom Date: Thu, 10 Mar 2016 10:51:19 -0800 Subject: [PATCH 1/4] 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() From 7c6114df216029b4c6a605fe011cc75d69f9e32e Mon Sep 17 00:00:00 2001 From: David Wahlstrom Date: Thu, 10 Mar 2016 11:39:21 -0800 Subject: [PATCH 2/4] plexstatus: pull xml inline To remove external/filesystem deps, move the stream info xml inline. --- tests/plexstatus.xml | 19 ------------------- tests/test_plexstatus.py | 25 +++++++++++++++++++++---- 2 files changed, 21 insertions(+), 23 deletions(-) delete mode 100644 tests/plexstatus.xml diff --git a/tests/plexstatus.xml b/tests/plexstatus.xml deleted file mode 100644 index bc40818..0000000 --- a/tests/plexstatus.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/tests/test_plexstatus.py b/tests/test_plexstatus.py index 93d50a3..fab9468 100644 --- a/tests/test_plexstatus.py +++ b/tests/test_plexstatus.py @@ -8,6 +8,26 @@ from unittest.mock import MagicMock from urllib.request import urlopen from i3pystatus import plexstatus +# inline xml of stream info from plex server +STREAM = b''' + + +''' class PlexstatusTest(unittest.TestCase): @@ -28,10 +48,7 @@ class PlexstatusTest(unittest.TestCase): 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 + 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') From 86c73464761aa26ef18c60ae86bbfee36139a777 Mon Sep 17 00:00:00 2001 From: David Wahlstrom Date: Thu, 10 Mar 2016 12:15:27 -0800 Subject: [PATCH 3/4] remove tabs --- tests/test_plexstatus.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/test_plexstatus.py b/tests/test_plexstatus.py index fab9468..ad8e15e 100644 --- a/tests/test_plexstatus.py +++ b/tests/test_plexstatus.py @@ -11,22 +11,22 @@ from i3pystatus import plexstatus # inline xml of stream info from plex server STREAM = b''' - + ''' class PlexstatusTest(unittest.TestCase): From afb726e37d5039a9bd48738abe7f5438079099af Mon Sep 17 00:00:00 2001 From: David Wahlstrom Date: Fri, 11 Mar 2016 07:30:59 -0800 Subject: [PATCH 4/4] pep8 compliance --- tests/test_plexstatus.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_plexstatus.py b/tests/test_plexstatus.py index ad8e15e..5399c62 100644 --- a/tests/test_plexstatus.py +++ b/tests/test_plexstatus.py @@ -29,6 +29,7 @@ STREAM = b''' ''' + class PlexstatusTest(unittest.TestCase): @patch('i3pystatus.plexstatus.urlopen', autospec=True)