def test_sprint_controller_submit_edit_task_form_successfully():
    task_subject = "Update a task"
    task_user_story = 12
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.sprint.notifier = mock.Mock()
    executor = factories.patched_executor(update_task_response=factories.future(
                           factories.successful_update_task_response(task_subject, task_user_story)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(settings.data.main.keys.milestone)
    project_detail_controller.sprint.view.taskboard.widget.set_focus(1)
    project_detail_controller.handle(settings.data.milestone.keys.edit)
    form = project_detail_controller.sprint.view.task_form
    project_view.sprint.notifier.reset_mock()

    form._subject_edit.set_edit_text(task_subject)
    form._user_story_combo.get_selected().value = task_user_story

    signals.emit(form.save_button, "click")
    assert project_view.sprint.notifier.info_msg.call_count == 1
    assert (executor.update_task.call_args.call_list()[0][0][0]["id"] == form.task["id"])
    assert executor.update_task.call_args.call_list()[0][0][1]["subject"] == task_subject
    assert (executor.update_task.call_args.call_list()[0][0][1]["milestone"] ==
            project_detail_controller.sprint.view._milestone["id"])
    assert executor.update_task.call_args.call_list()[0][0][1]["user_story"] == task_user_story
    assert executor.update_task.call_count == 1
    assert executor.update_task.return_value.result()["subject"] == task_subject
    assert (executor.update_task.return_value.result()["milestone"] ==
            project_detail_controller.sprint.view._milestone["id"])
    assert executor.update_task.return_value.result()["user_story"] == task_user_story
def test_backlog_controller_update_user_stories_order_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(update_user_stories_order_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)

    project_detail_controller.handle(settings.data.backlog.keys.update_order)
    assert project_view.backlog.notifier.error_msg.call_count == 1
def test_login_controller_prints_an_error_message_on_unsuccessful_login():
    login_view = factories.login_view("admin", "123123")
    login_view.notifier = mock.Mock()
    executor = factories.patched_executor(login_response=factories.future(None))
    _ = mock.Mock()
    login_controller = controllers.auth.LoginController(login_view, executor, _)

    signals.emit(login_view.login_button, "click")

    assert login_view.notifier.error_msg.call_count == 1
def test_backlog_controller_update_user_stories_order_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(update_user_stories_order_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)

    project_detail_controller.handle(config.ProjectBacklogKeys.UPDATE_USER_STORIES_ORDER)
    assert project_view.backlog.notifier.error_msg.call_count == 1
def test_projects_controller_click_on_project_when_project_is_fetched_transitions_to_project_detail():
    projects = factories.projects()
    fetched_project = projects[0]
    projects_view = views.projects.ProjectsView()
    executor = factories.patched_executor(project_detail=factories.future(fetched_project))
    state_machine = mock.Mock()
    projects_controller = controllers.projects.ProjectsController(projects_view, executor, state_machine)

    signals.emit(projects_view.project_buttons[0], "click")

    state_machine.project_detail.assert_called_with(fetched_project)
def test_backlog_controller_delete_user_story_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(delete_user_story_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)

    project_detail_controller.handle(settings.data.backlog.keys.delete)
    assert project_view.backlog.notifier.error_msg.call_count == 1
    assert (executor.delete_user_story.call_args.call_list()[0][0][0]["id"] ==
            project_detail_controller.backlog.user_stories[0]["id"])
예제 #7
0
def test_backlog_controller_update_user_stories_order_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(
        update_user_stories_order_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(
        project_view, executor, _)

    project_detail_controller.handle(settings.data.backlog.keys.update_order)
    assert project_view.backlog.notifier.error_msg.call_count == 1
def test_projects_controller_when_project_fetching_fails_a_error_message_is_shown():
    projects = factories.projects()
    fetched_project = projects[0]
    projects_view = views.projects.ProjectsView()
    projects_view.notifier = mock.Mock()
    executor = factories.patched_executor(project_detail=factories.future(None))
    _ = mock.Mock()
    projects_controller = controllers.projects.ProjectsController(projects_view, executor, _)

    signals.emit(projects_view.project_buttons[0], "click")

    assert projects_view.notifier.error_msg.call_count == 1
def test_sprint_controller_delete_user_story_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.sprint.notifier = mock.Mock()
    executor = factories.patched_executor(delete_user_story_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(config.ProjectKeys.MILESTONES)

    project_detail_controller.handle(config.ProjectMilestoneKeys.DELETE_USER_STORY_OR_TASK)
    assert project_view.sprint.notifier.error_msg.call_count == 1
    assert (executor.delete_user_story.call_args.call_list()[0][0][0]["id"] ==
            project_detail_controller.sprint.view._user_stories[0]["id"])
def test_issues_controller_delete_issue_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.issues.notifier = mock.Mock()
    executor = factories.patched_executor(delete_issue_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(config.ProjectKeys.ISSUES)

    project_detail_controller.handle(config.ProjectIssuesKeys.DELETE_ISSUE)
    assert project_view.issues.notifier.error_msg.call_count == 1
    assert (executor.delete_issue.call_args.call_list()[0][0][0]["id"] ==
            project_detail_controller.issues.issues[0]["id"])
def test_projects_controller_click_on_project_when_project_is_fetched_transitions_to_project_detail(
):
    projects = factories.projects()
    fetched_project = projects[0]
    projects_view = views.projects.ProjectsView()
    executor = factories.patched_executor(
        project_detail=factories.future(fetched_project))
    state_machine = mock.Mock()
    projects_controller = controllers.projects.ProjectsController(
        projects_view, executor, state_machine)

    signals.emit(projects_view.project_buttons[0], "click")

    state_machine.project_detail.assert_called_with(fetched_project)
예제 #12
0
def test_backlog_controller_delete_user_story_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(
        delete_user_story_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(
        project_view, executor, _)

    project_detail_controller.handle(settings.data.backlog.keys.delete)
    assert project_view.backlog.notifier.error_msg.call_count == 1
    assert (executor.delete_user_story.call_args.call_list()[0][0][0]["id"] ==
            project_detail_controller.backlog.user_stories[0]["id"])
def test_sprint_controller_delete_task_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.sprint.notifier = mock.Mock()
    executor = factories.patched_executor(delete_task_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(settings.data.main.keys.milestone)

    project_view.sprint.taskboard.list_walker.set_focus(2)
    project_detail_controller.handle(settings.data.milestone.keys.delete)
    assert project_view.sprint.notifier.error_msg.call_count == 1
    assert (executor.delete_task.call_args.call_list()[0][0][0]["id"] ==
            project_detail_controller.sprint.view._tasks[1]["id"])
def test_projects_controller_when_project_fetching_fails_a_error_message_is_shown(
):
    projects = factories.projects()
    fetched_project = projects[0]
    projects_view = views.projects.ProjectsView()
    projects_view.notifier = mock.Mock()
    executor = factories.patched_executor(
        project_detail=factories.future(None))
    _ = mock.Mock()
    projects_controller = controllers.projects.ProjectsController(
        projects_view, executor, _)

    signals.emit(projects_view.project_buttons[0], "click")

    assert projects_view.notifier.error_msg.call_count == 1
예제 #15
0
def test_sprint_controller_delete_task_with_errors():
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.sprint.notifier = mock.Mock()
    executor = factories.patched_executor(
        delete_task_response=factories.future(None))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(
        project_view, executor, _)
    project_detail_controller.handle(settings.data.main.keys.milestone)

    project_view.sprint.taskboard.list_walker.set_focus(2)
    project_detail_controller.handle(settings.data.milestone.keys.delete)
    assert project_view.sprint.notifier.error_msg.call_count == 1
    assert (executor.delete_task.call_args.call_list()[0][0][0]["id"] ==
            project_detail_controller.sprint.view._tasks[1]["id"])
예제 #16
0
def test_backlog_controller_submit_new_user_story_form_successfully():
    us_subject = "Create a new user story"
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(create_user_story_response=factories.future(
                           factories.successful_create_user_story_response(us_subject)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(settings.data.backlog.keys.create)
    form = project_detail_controller.view.backlog.user_story_form
    project_view.backlog.notifier.reset_mock()

    form._subject_edit.set_edit_text(us_subject)
    signals.emit(form.save_button, "click")
    assert project_view.backlog.notifier.info_msg.call_count == 1
    assert executor.create_user_story.call_args.call_list()[0][0][0]["subject"] == us_subject
    assert executor.create_user_story.call_count == 1
    assert executor.create_user_story.return_value.result()["subject"] == us_subject
def test_issues_controller_submit_new_issue_form_successfully():
    issue_subject = "Create a new issue"
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.issues.notifier = mock.Mock()
    executor = factories.patched_executor(create_issue_response=factories.future(
                           factories.successful_create_issue_response(issue_subject)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(config.ProjectKeys.ISSUES)
    project_detail_controller.handle(config.ProjectIssuesKeys.CREATE_ISSUE)
    form = project_detail_controller.view.issues.issue_form
    project_view.issues.notifier.reset_mock()

    form._subject_edit.set_edit_text(issue_subject)
    signals.emit(form.save_button, "click")
    assert project_view.issues.notifier.info_msg.call_count == 1
    assert executor.create_issue.call_args.call_list()[0][0][0]["subject"] == issue_subject
    assert executor.create_issue.call_count == 1
    assert executor.create_issue.return_value.result()["subject"] == issue_subject
def test_backlog_controller_submit_edit_user_story_form_successfully():
    us_subject = "Update a user story"
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(update_user_story_response=factories.future(
                           factories.successful_update_user_story_response(us_subject)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(config.ProjectBacklogKeys.EDIT_USER_STORY)
    form = project_detail_controller.view.backlog.user_story_form
    project_view.backlog.notifier.reset_mock()

    form._subject_edit.set_edit_text(us_subject)

    signals.emit(form.save_button, "click")
    assert project_view.backlog.notifier.info_msg.call_count == 1
    assert (executor.update_user_story.call_args.call_list()[0][0][0]["id"] == form.user_story["id"])
    assert executor.update_user_story.call_args.call_list()[0][0][1]["subject"] == us_subject
    assert executor.update_user_story.call_count == 1
    assert executor.update_user_story.return_value.result()["subject"] == us_subject
예제 #19
0
def test_issues_controller_submit_edit_issue_form_successfully():
    issue_subject = "Update a issue"
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.issues.notifier = mock.Mock()
    executor = factories.patched_executor(update_issue_response=factories.future(
                           factories.successful_update_issue_response(issue_subject)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(settings.data.main.keys.issues)
    project_detail_controller.handle(settings.data.issues.keys.edit)
    form = project_detail_controller.view.issues.issue_form
    project_view.issues.notifier.reset_mock()

    form._subject_edit.set_edit_text(issue_subject)

    signals.emit(form.save_button, "click")
    assert project_view.issues.notifier.info_msg.call_count == 1
    assert (executor.update_issue.call_args.call_list()[0][0][0]["id"] == form.issue["id"])
    assert executor.update_issue.call_args.call_list()[0][0][1]["subject"] == issue_subject
    assert executor.update_issue.call_count == 1
    assert executor.update_issue.return_value.result()["subject"] == issue_subject
예제 #20
0
def test_sprint_controller_submit_edit_task_form_successfully():
    task_subject = "Update a task"
    task_user_story = 12
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.sprint.notifier = mock.Mock()
    executor = factories.patched_executor(
        update_task_response=factories.future(
            factories.successful_update_task_response(task_subject,
                                                      task_user_story)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(
        project_view, executor, _)
    project_detail_controller.handle(settings.data.main.keys.milestone)
    project_detail_controller.sprint.view.taskboard.widget.set_focus(1)
    project_detail_controller.handle(settings.data.milestone.keys.edit)
    form = project_detail_controller.sprint.view.task_form
    project_view.sprint.notifier.reset_mock()

    form._subject_edit.set_edit_text(task_subject)
    form._user_story_combo.get_selected().value = task_user_story

    signals.emit(form.save_button, "click")
    assert project_view.sprint.notifier.info_msg.call_count == 1
    assert (executor.update_task.call_args.call_list()[0][0][0]["id"] ==
            form.task["id"])
    assert executor.update_task.call_args.call_list(
    )[0][0][1]["subject"] == task_subject
    assert (executor.update_task.call_args.call_list()[0][0][1]["milestone"] ==
            project_detail_controller.sprint.view._milestone["id"])
    assert executor.update_task.call_args.call_list(
    )[0][0][1]["user_story"] == task_user_story
    assert executor.update_task.call_count == 1
    assert executor.update_task.return_value.result(
    )["subject"] == task_subject
    assert (executor.update_task.return_value.result()["milestone"] ==
            project_detail_controller.sprint.view._milestone["id"])
    assert executor.update_task.return_value.result(
    )["user_story"] == task_user_story
def test_sprint_controller_submit_new_user_story_form_successfully():
    us_subject = "Create a new user story"
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.sprint.notifier = mock.Mock()
    executor = factories.patched_executor(create_user_story_response=factories.future(
                           factories.successful_create_user_story_response(us_subject)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(project_view, executor, _)
    project_detail_controller.handle(config.ProjectKeys.MILESTONES)
    project_detail_controller.handle(config.ProjectMilestoneKeys.CREATE_USER_STORY)
    form = project_detail_controller.sprint.view.user_story_form
    project_view.sprint.notifier.reset_mock()

    form._subject_edit.set_edit_text(us_subject)

    signals.emit(form.save_button, "click")
    assert project_view.sprint.notifier.info_msg.call_count == 1
    assert executor.create_user_story.call_args.call_list()[0][0][0]["subject"] == us_subject
    assert (executor.create_user_story.call_args.call_list()[0][0][0]["milestone"] ==
            project_detail_controller.sprint.view._milestone["id"])
    assert executor.create_user_story.call_count == 1
    assert executor.create_user_story.return_value.result()["subject"] == us_subject
예제 #22
0
def test_backlog_controller_submit_new_user_story_form_successfully():
    us_subject = "Create a new user story"
    project = factories.project()
    project_view = views.projects.ProjectDetailView(project)
    project_view.backlog.notifier = mock.Mock()
    executor = factories.patched_executor(
        create_user_story_response=factories.future(
            factories.successful_create_user_story_response(us_subject)))
    _ = mock.Mock()
    project_detail_controller = controllers.projects.ProjectDetailController(
        project_view, executor, _)
    project_detail_controller.handle(settings.data.backlog.keys.create)
    form = project_detail_controller.view.backlog.user_story_form
    project_view.backlog.notifier.reset_mock()

    form._subject_edit.set_edit_text(us_subject)
    signals.emit(form.save_button, "click")
    assert project_view.backlog.notifier.info_msg.call_count == 1
    assert executor.create_user_story.call_args.call_list(
    )[0][0][0]["subject"] == us_subject
    assert executor.create_user_story.call_count == 1
    assert executor.create_user_story.return_value.result(
    )["subject"] == us_subject