def test_forward_busy_to_a_user_from_exten_with_the_exten_disabled(self):
        user_features = UserFeatures(self._agi, self._cursor, self._args)
        user_features._feature_list = Mock(objects.ExtenFeatures, fwdbusy=False)

        enabled = user_features._set_rbusy_from_exten(Mock())

        assert_that(enabled, equal_to(False))
    def test_set_rbusy_exten_disabled_noanswer_enabled(self):
        user_features = UserFeatures(self._agi, self._cursor, self._args)
        user_features._set_rbusy_from_exten = Mock(return_value=False)
        user_features._set_rbusy_from_dialaction = Mock(return_value=True)

        user_features._setbusy(sentinel.called_line)

        user_features._set_rbusy_from_exten.assert_called_once_with(sentinel.called_line)
        assert_that(self._agi.set_variable.called_once_with('XIVO_ENABLEBUSY', True))
    def test_set_busy_exten_disabled_noanswer_disabled(self):
        user_features = UserFeatures(self._agi, self._cursor, self._args)
        user_features._set_rbusy_from_exten = Mock(return_value=False)
        user_features._set_rbusy_from_dialaction = Mock(return_value=False)

        user_features._setbusy(sentinel.called_line)

        user_features._set_rbusy_from_exten.assert_called_once_with(sentinel.called_line)
        user_features._set_rbusy_from_dialaction.assert_called_once_with()

        assert_that(self._agi.set_variable.call_count, equal_to(0))
    def test_forward_busy_to_a_user_from_exten(self):
        user_features = UserFeatures(self._agi, self._cursor, self._args)
        user_features._feature_list = Mock(objects.ExtenFeatures, fwdbusy=True)
        user_features._user = Mock(objects.User, destbusy='666', enablebusy=True)
        called_line = Mock(objects.Line, context=sentinel.context)

        enabled = user_features._set_rbusy_from_exten(called_line)

        assert_that(enabled, equal_to(True))
        assert_that(self._agi.set_variable.call_args_list, contains(
            call('XIVO_FWD_USER_BUSY_ACTION', 'extension'),
            call('XIVO_FWD_USER_BUSY_ACTIONARG1', '666'),
            call('XIVO_FWD_USER_BUSY_ACTIONARG2', sentinel.context),
        ))