From 9eb0a0f7048e8583d501ca435c8c6038fcfb9f12 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 3 Jan 2021 15:14:50 +0100 Subject: [PATCH] Replace testtools by unittest / add test for determination of receiver type / test with python 3.9 too --- test-requirements.txt | 3 +- tests/test_denonavr.py | 63 ++++++++++++++++++++++++++++++------------ tox.ini | 2 +- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/test-requirements.txt b/test-requirements.txt index eed85d6..c228db7 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -5,5 +5,4 @@ pytest-cov pytest-timeout flake8-docstrings flake8 -requests-mock -testtools \ No newline at end of file +requests-mock \ No newline at end of file diff --git a/tests/test_denonavr.py b/tests/test_denonavr.py index 614c8c2..c1cec9f 100644 --- a/tests/test_denonavr.py +++ b/tests/test_denonavr.py @@ -8,7 +8,7 @@ """ from urllib.parse import urlparse -import testtools +import unittest import requests import requests_mock import denonavr @@ -20,15 +20,25 @@ ZONE3 = {"Zone3": None} ZONE2_ZONE3 = {"Zone2": None, "Zone3": None} -TESTING_RECEIVERS = {"AVR-X4100W": NO_ZONES, "AVR-2312CI": NO_ZONES, - "AVR-1912": NO_ZONES, "AVR-3311CI": NO_ZONES, - "M-RC610": NO_ZONES, "AVR-X2100W-2": NO_ZONES, - "AVR-X2000": ZONE2_ZONE3, "AVR-X2000-2": NO_ZONES, - "SR5008": NO_ZONES, "M-CR603": NO_ZONES, - "NR1604": ZONE2_ZONE3, "AVR-4810": NO_ZONES, - "AVR-3312": NO_ZONES, "NR1609": ZONE2, - "AVC-8500H": ZONE2_ZONE3, "AVR-X4300H": ZONE2_ZONE3, - "AVR-X1100W": ZONE2} +TESTING_RECEIVERS = { + "AVR-X4100W": (NO_ZONES, denonavr.denonavr.AVR_X), + "AVR-2312CI": (NO_ZONES, denonavr.denonavr.AVR), + "AVR-1912": (NO_ZONES, denonavr.denonavr.AVR), + "AVR-3311CI": (NO_ZONES, denonavr.denonavr.AVR), + "M-RC610": (NO_ZONES, denonavr.denonavr.AVR_X), + "AVR-X2100W-2": (NO_ZONES, denonavr.denonavr.AVR_X), + "AVR-X2000": (ZONE2_ZONE3, denonavr.denonavr.AVR_X), + "AVR-X2000-2": (NO_ZONES, denonavr.denonavr.AVR_X), + "SR5008": (NO_ZONES, denonavr.denonavr.AVR_X), + "M-CR603": (NO_ZONES, denonavr.denonavr.AVR), + "NR1604": (ZONE2_ZONE3, denonavr.denonavr.AVR_X), + "AVR-4810": (NO_ZONES, denonavr.denonavr.AVR), + "AVR-3312": (NO_ZONES, denonavr.denonavr.AVR), + "NR1609": (ZONE2, denonavr.denonavr.AVR_X_2016), + "AVC-8500H": (ZONE2_ZONE3, denonavr.denonavr.AVR_X_2016), + "AVR-X4300H": (ZONE2_ZONE3, denonavr.denonavr.AVR_X_2016), + "AVR-X1100W": (ZONE2, denonavr.denonavr.AVR_X) + } APPCOMMAND_URL = "/goform/AppCommand.xml" STATUS_URL = "/goform/formMainZone_MainZoneXmlStatus.xml" @@ -48,7 +58,7 @@ def get_sample_content(filename): return file.read() -class TestMainFunctions(testtools.TestCase): +class TestMainFunctions(unittest.TestCase): """Test case for main functions of Denon AVR.""" def __init__(self, *args, **kwargs): @@ -124,20 +134,37 @@ def custom_matcher(self, request): return resp + @requests_mock.mock() + def test_receiver_type(self, mock): + """Check that receiver type is determined correctly.""" + mock.add_matcher(self.custom_matcher) + for receiver, spec in TESTING_RECEIVERS.items(): + # Switch receiver and update to load new sample files + self._testing_receiver = receiver + self.denon = denonavr.DenonAVR(FAKE_IP, add_zones=spec[0]) + self.assertEqual( + self.denon.receiver_type, + spec[1].type, + "Receiver type is {} not {} for receiver {}".format( + self.denon.receiver_type, spec[1].type, receiver)) + self.assertEqual( + self.denon.receiver_port, + spec[1].port, + "Receiver port is {} not {} for receiver {}".format( + self.denon.receiver_port, spec[1].port, receiver)) + @requests_mock.mock() def test_input_func_switch(self, mock): """Switch through all input functions of all tested receivers.""" mock.add_matcher(self.custom_matcher) - for receiver, zones in TESTING_RECEIVERS.items(): + for receiver, spec in TESTING_RECEIVERS.items(): # Switch receiver and update to load new sample files self._testing_receiver = receiver - self.denon = denonavr.DenonAVR(FAKE_IP, add_zones=zones) + self.denon = denonavr.DenonAVR(FAKE_IP, add_zones=spec[0]) # Switch through all functions and check if successful for name, zone in self.denon.zones.items(): print("Receiver: {}, Zone: {}".format(receiver, name)) - self.assertThat( - len(zone.input_func_list), - testtools.matchers.GreaterThan(0)) + self.assertGreater(len(zone.input_func_list), 0) for input_func in zone.input_func_list: self.denon.zones[name].set_input_func(input_func) self.assertEqual( @@ -150,10 +177,10 @@ def test_input_func_switch(self, mock): def test_attributes_not_none(self, mock): """Check that certain attributes are not None.""" mock.add_matcher(self.custom_matcher) - for receiver, zones in TESTING_RECEIVERS.items(): + for receiver, spec in TESTING_RECEIVERS.items(): # Switch receiver and update to load new sample files self._testing_receiver = receiver - self.denon = denonavr.DenonAVR(FAKE_IP, add_zones=zones) + self.denon = denonavr.DenonAVR(FAKE_IP, add_zones=spec[0]) self.assertIsNotNone( self.denon.power, "Power status is None for receiver {}".format(receiver)) diff --git a/tox.ini b/tox.ini index c9ba611..c694438 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ # content of: tox.ini , put in same dir as setup.py [tox] -envlist = py35,py36,py37,py38,pylint,lint +envlist = py35,py36,py37,py38,py39,pylint,lint skip_missing_interpreters = True [testenv:pylint]