Пример #1
0
def compose_classlist_dialogue(class_name: str) -> NewClass:
    """
    Call UI elements to collect new class data.

    Provide feedback to user reflecting new class composition.

    Creates class object.

    If no students added to class, check if intended, making subsequent
    call to take_class_data_input UI if unintended blank class returned.

    :param class_name: str
    :return: Class object
    """
    while True:
        new_class = take_class_data_input(class_name)

        if not new_class.students:  # Test for empty class.
            create_empty_class = blank_class_dialogue()
            if create_empty_class:
                break
            # else: ie if not cancelled:
            continue  # Line (and following) skipped from coverage due to peephole optimiser.
        break  # class_data not empty

    class_data_feedback(new_class)

    return new_class
Пример #2
0
def compose_classlist_dialogue(class_name):
    while True:
        class_data = take_class_data_input(class_name)

        if not class_data:  # Test for empty class.
            create_empty_class = blank_class_dialogue()
            if create_empty_class:
                break
            # else: ie if not cancelled:
            continue
        break  # class_data not empty

    return class_data
Пример #3
0
    def test_blank_class_dialogue(self, monkeypatch, ask_user_bool_return):
        """Dialogue returns user input."""
        def mocked_ask_user_bool(question, invalid_input_response):
            assert (question, invalid_input_response) == (
                'Do you want to create an empty class? [Y/N] ',
                'Please enter y for yes to create empty class, or n to return to student input.'
            )
            return ask_user_bool_return

        monkeypatch.setattr(class_functions_UI, 'ask_user_bool',
                            mocked_ask_user_bool)

        assert blank_class_dialogue() == ask_user_bool_return
Пример #4
0
    def test_blank_class_dialogue(self, mocked_print):
        with patch('dionysus_app.UI_menus.class_functions_UI.input'
                   ) as mock_input:
            for test_case in self.input_sets:
                with self.subTest(i=test_case):
                    input_strings = test_case[0]
                    expected_return = test_case[1]

                    mock_input.side_effect = input_strings

                    assert blank_class_dialogue() == expected_return

                    # Reset the mock function after each test sequence:
                    mock_input.reset_mock(return_value=True, side_effect=True)
Пример #5
0
def compose_classlist_dialogue(class_name: str):
    """
    Create class object.

    If no students added to class, check if intended, making subsequent call to
    take_class_data_input UI if unintended blank class returned.

    :param class_name: str
    :return: Class object
    """
    while True:
        new_class = take_class_data_input(class_name)

        if not new_class.students:  # Test for empty class.
            create_empty_class = blank_class_dialogue()
            if create_empty_class:
                break
            # else: ie if not cancelled:
            continue  # Line skipped from coverage due to peephole optimiser.
        break  # class_data not empty

    return new_class