def test_buzz_callsSleep(self, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup # call tag under test _control_lock.main(commands.BUZZ) # test assertions self.sleep_mock.assert_called_once_with(settings.BUZZ_DURATION)
def test_setup_setup(self, mock__lock): assert mock__lock is _control_lock._lock _control_lock.main(commands.LOCK) calls = [ mock.call(pins.SERVO_PIN, GPIO.OUT), mock.call(pins.LOCK_STATUS_LED_PIN, GPIO.OUT), mock.call(pins.BUZZER_PIN, GPIO.OUT) ] self.setup_mock.assert_has_calls(calls, any_order=True)
def test_unlock_output(self, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup # call tag under test _control_lock.main(commands.UNLOCK) # test assertions self.output_mock.assert_called_once_with(pins.LOCK_STATUS_LED_PIN, GPIO.LOW)
def test_delayLock_callsLock(self, mock__lock, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup assert mock__lock is _control_lock._lock # call tag under test _control_lock.main(commands.DELAY_LOCK) # test assertions mock__lock.assert_called_once_with(mock__setup.return_value)
def test_buzzAndUnlock_callsUnlock(self, mock__unlock, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup assert mock__unlock is _control_lock._unlock # call tag under test _control_lock.main(commands.BUZZ_AND_UNLOCK) # test assertions mock__unlock.assert_called_once_with(mock__setup.return_value)
def test_unlock_setsLockedState(self, mock__setStateValue, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup assert mock__setStateValue is _control_lock._setStateValue # call tag under test _control_lock.main(commands.UNLOCK) # test assertions mock__setStateValue.assert_called_once_with(settings.LOCKED_STATE_KEY, False)
def test_unlock_start_stop(self, mock_MockServo, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup assert mock_MockServo is MockServo # call tag under test _control_lock.main(commands.UNLOCK) # test assertions mock_MockServo.return_value.start.assert_called_once_with( settings.SERVO_UNLOCKED_POSITION) mock_MockServo.return_value.stop.assert_called_once_with()
def test_buzzAndUnlock_callsSleepInOrder(self, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup # call tag under test _control_lock.main(commands.BUZZ_AND_UNLOCK) # test assertions calls = [ mock.call(settings.BUZZ_DURATION), mock.call(settings.SERVO_ROTATION_DURATION), ] self.sleep_mock.assert_has_calls(calls)
def test_buzzAndUnlock_setsOutputHighThenLow(self, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup # call tag under test _control_lock.main(commands.BUZZ_AND_UNLOCK) # test assertions calls = [ mock.call(pins.BUZZER_PIN, GPIO.HIGH), mock.call(pins.BUZZER_PIN, GPIO.LOW) ] self.output_mock.assert_has_calls(calls)
def test_delayLock_callsUnlockThenLock(self, mock_MockServo, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup assert mock_MockServo is MockServo # call tag under test _control_lock.main(commands.DELAY_LOCK) # test assertions calls = [ mock.call(settings.SERVO_UNLOCKED_POSITION), # first lock mock.call(settings.SERVO_LOCKED_POSITION), # then unlock ] mock_MockServo.return_value.start.assert_has_calls(calls)
def test_toggleLock_locksOnKeyError(self, mock__getStateValue, mock__unlock, mock__lock, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup assert mock__lock is _control_lock._lock assert mock__unlock is _control_lock._unlock assert mock__getStateValue is _control_lock._getStateValue # call tag under test _control_lock.main(commands.TOGGLE) # test assertions mock__lock.assert_called_once_with(mock__setup.return_value) assert not mock__unlock.called
def test_delayLock_blinksLED(self, mock__lock, mock__unlock, mock__setup): # setup mock__setup.return_value = MockServo() # test mocks assert mock__setup is _control_lock._setup assert mock__unlock is _control_lock._unlock assert mock__lock is _control_lock._lock # call tag under test _control_lock.main(commands.DELAY_LOCK) # test assertions calls = [] for i in range(settings.DELAYED_LOCK_DELAY): # blink LED calls.append(mock.call(pins.LOCK_STATUS_LED_PIN, GPIO.LOW)) # off calls.append(mock.call(pins.LOCK_STATUS_LED_PIN, GPIO.HIGH)) # on self.output_mock.assert_has_calls(calls)
def _loop(): while True: time.sleep(0.2) if GPIO.input(pins.TOGGLE_LOCK_PIN) == False: _control_lock.main(commands.LOCK) if GPIO.input(pins.DELAY_LOCK_PIN) == False: _control_lock.main(commands.UNLOCK) time.sleep(15) _control_lock.main(commands.LOCK)
def test_setup_PMW(self, mock__lock): assert mock__lock is _control_lock._lock _control_lock.main(commands.LOCK) self.PWM_mock.assert_called_once_with(pins.SERVO_PIN, 50)
def test_setup_setmode(self, mock__lock): assert mock__lock is _control_lock._lock _control_lock.main(commands.LOCK) self.setmode_mock.assert_called_once_with(GPIO.BOARD)
def test_setup_setwarnings(self, mock__lock): assert mock__lock is _control_lock._lock assert self.setwarnings_mock is GPIO.setwarnings _control_lock.main(commands.LOCK) self.setwarnings_mock.assert_called_once_with(False)
def test_invalid_command_fails(self): with self.assertRaises(NotImplementedError): _control_lock.main("BOGUS")
import _control_lock import commands _control_lock.main(commands.BUZZ_AND_UNLOCK)
import _control_lock import commands _control_lock.main(commands.LOCK)
def test_setup_output(self, mock__lock): assert mock__lock is _control_lock._lock _control_lock.main(commands.LOCK) self.output_mock.assert_called_once_with(pins.BUZZER_PIN, GPIO.LOW)
import _control_lock import commands _control_lock.main(commands.DELAY_LOCK)
import _control_lock import commands _control_lock.main(commands.TOGGLE)
import _control_lock import commands _control_lock.main(commands.BUZZ)