Skip to content

Commit

Permalink
Add tests for UIScreen wide disabling of concurrency check
Browse files Browse the repository at this point in the history
  • Loading branch information
jkonecny12 committed Oct 8, 2021
1 parent f0d8966 commit 271cf1d
Showing 1 changed file with 90 additions and 1 deletion.
91 changes: 90 additions & 1 deletion tests/units/main/adv_widgets_test.py
Expand Up @@ -20,14 +20,103 @@

import unittest

from unittest.mock import patch
from unittest.mock import patch, Mock
from io import StringIO

from simpleline.render.screen import UIScreen
from simpleline.input.input_handler import InputHandler
from simpleline.render.adv_widgets import GetInputScreen, GetPasswordInputScreen

from .. import UtilityMixin


class InputHandlerMock(InputHandler):
"""Dummy InputHandler instance.
This class based on InputHandler has all threading logic disabled for simpler testing.
"""
def _register_input_ready_signal(self):
pass

def get_input(self, message):
pass

def wait_on_input(self):
pass


class UIScreen_TestCase(unittest.TestCase):
@patch('simpleline.render.screen.input_manager.InputHandler')
def test_uiscreen_disable_concurrency_check(self, input_handler_class_mock):
# Replace default InputHandler instance created by InputManager by our mock to have
# it stored after use.
input_handler_instance_mock = InputHandlerMock()
input_handler_class_mock.return_value = input_handler_instance_mock

screen = UIScreen()
input_manager = screen.input_manager
input_manager.skip_concurrency_check = True
screen.get_user_input("test")

self.assertTrue(screen.input_manager.skip_concurrency_check)
# Check that the created InputHandler instance has the flag correctly set.
# We don't need to check the concurrency check functionality, it is tested
# elsewhere already.
self.assertTrue(input_handler_instance_mock.skip_concurrency_check)

@patch('simpleline.render.screen.input_manager.InputHandler')
def test_uiscreen_password_disable_concurrency_check(self, input_handler_class_mock):
# Replace default InputHandler instance created by InputManager by our mock to have
# it stored after use.
input_handler_instance_mock = InputHandlerMock()
input_handler_class_mock.return_value = input_handler_instance_mock

screen = GetPasswordInputScreen(message="Test prompt")
input_manager = screen.input_manager
input_manager.skip_concurrency_check = True
screen.get_user_input("test")

self.assertTrue(screen.input_manager.skip_concurrency_check)
# Check that the created InputHandler instance has the flag correctly set.
# We don't need to check the concurrency check functionality, it is tested
# elsewhere already.
self.assertTrue(input_handler_instance_mock.skip_concurrency_check)

@patch('simpleline.render.screen.input_manager.InputHandler')
def test_uiscreen_non_blocking_input_disable_concurrency_check(self, input_handler_class_mock):
# Replace default InputHandler instance created by InputManager by our mock to have
# it stored after use.
input_handler_instance_mock = InputHandlerMock()
input_handler_class_mock.return_value = input_handler_instance_mock

screen = UIScreen()
input_manager = screen.input_manager
input_manager.skip_concurrency_check = True
screen.get_input_with_error_check("test")

self.assertTrue(screen.input_manager.skip_concurrency_check)
# Check that the created InputHandler instance has the flag correctly set.
# We don't need to check the concurrency check functionality, it is tested
# elsewhere already.
self.assertTrue(input_handler_instance_mock.skip_concurrency_check)

@patch('simpleline.render.screen.input_manager.InputHandler')
def test_uiscreen_default_concurrency_check(self, input_handler_class_mock):
# Replace default InputHandler instance created by InputManager by our mock to have
# it stored after use.
input_handler_instance_mock = InputHandlerMock()
input_handler_class_mock.return_value = input_handler_instance_mock

screen = UIScreen()
screen.get_user_input("test")

self.assertFalse(screen.input_manager.skip_concurrency_check)
# Check that the created InputHandler instance has the flag correctly set.
# We don't need to check the concurrency check functionality, it is tested
# elsewhere already.
self.assertFalse(input_handler_instance_mock.skip_concurrency_check)


@patch('simpleline.input.input_handler.InputHandlerRequest._get_input')
@patch('sys.stdout', new_callable=StringIO)
class AdvWidgets_TestCase(unittest.TestCase, UtilityMixin):
Expand Down

0 comments on commit 271cf1d

Please sign in to comment.