# coding: utf-8 # Python libs from __future__ import absolute_import # Salt testing libs from tests.support.unit import skipIf, TestCase from tests.support.mock import NO_MOCK, NO_MOCK_REASON, MagicMock from tests.support.mixins import LoaderModuleMockMixin # Salt libs import salt.beacons.sensehat as sensehat @skipIf(NO_MOCK, NO_MOCK_REASON) class SensehatBeaconTestCase(TestCase, LoaderModuleMockMixin): ''' Test case for salt.beacons.[s] ''' def setup_loader_modules(self): self.HUMIDITY_MOCK = MagicMock(return_value=80) self.TEMPERATURE_MOCK = MagicMock(return_value=30) self.PRESSURE_MOCK = MagicMock(return_value=1500) self.addCleanup(delattr, self, 'HUMIDITY_MOCK') self.addCleanup(delattr, self, 'TEMPERATURE_MOCK') self.addCleanup(delattr, self, 'PRESSURE_MOCK') return { sensehat: { '__context__': {}, '__salt__': {'sensehat.get_humidity': self.HUMIDITY_MOCK, 'sensehat.get_temperature': self.TEMPERATURE_MOCK, 'sensehat.get_pressure': self.PRESSURE_MOCK }, } } def test_non_list_config(self): config = {} ret = sensehat.validate(config) self.assertEqual(ret, (False, 'Configuration for sensehat beacon' ' must be a list.')) def test_empty_config(self): config = [{}] ret = sensehat.validate(config) self.assertEqual(ret, (False, 'Configuration for sensehat ' 'beacon requires sensors.')) def test_sensehat_humidity_match(self): config = [{'sensors': {'humidity': '70%'}}] ret = sensehat.validate(config) self.assertEqual(ret, (True, 'Valid beacon configuration')) ret = sensehat.beacon(config) self.assertEqual(ret, [{'tag': 'sensehat/humidity', 'humidity': 80}]) def test_sensehat_temperature_match(self): config = [{'sensors': {'temperature': 20}}] ret = sensehat.validate(config) self.assertEqual(ret, (True, 'Valid beacon configuration')) ret = sensehat.beacon(config) self.assertEqual(ret, [{'tag': 'sensehat/temperature', 'temperature': 30}]) def test_sensehat_temperature_match_range(self): config = [{'sensors': {'temperature': [20, 29]}}] ret = sensehat.validate(config) self.assertEqual(ret, (True, 'Valid beacon configuration')) ret = sensehat.beacon(config) self.assertEqual(ret, [{'tag': 'sensehat/temperature', 'temperature': 30}]) def test_sensehat_pressure_match(self): config = [{'sensors': {'pressure': '1400'}}] ret = sensehat.validate(config) self.assertEqual(ret, (True, 'Valid beacon configuration')) ret = sensehat.beacon(config) self.assertEqual(ret, [{'tag': 'sensehat/pressure', 'pressure': 1500}]) def test_sensehat_no_match(self): config = [{'sensors': {'pressure': '1600'}}] ret = sensehat.validate(config) self.assertEqual(ret, (True, 'Valid beacon configuration')) ret = sensehat.beacon(config) self.assertEqual(ret, [])