def test_missing_issues(): config = Configuration(os.path.join(MOCK_FOLDER_PATH, 'conf.ini')) config.load_properties() project = Project(name="test project", config=config, columns={ "Queue": ProjectColumn(id="id", name="Queue", cards=[ IssueCard(id="sdf", issue=Issue( id="sdf", title="title", number=1)) ]), "Review in progress": ProjectColumn(id="id", name="Review in progress", cards=[]) }) assert len(project.get_all_issue_ids()) == 1 assert len(project.columns.keys()) == 2 issue = Issue(id="2", number=2, title="issue title") issues = {"2": issue} assert project.find_missing_issue_ids(issues) == {"2"}
def test_removing_issues(): config = Configuration(os.path.join(MOCK_FOLDER_PATH, 'conf.ini')) config.load_properties() project = Project(name="test project", config=config, columns={ "Queue": ProjectColumn(id="id", name="Queue", cards=[ IssueCard(id="sdf", issue=Issue( id="sdf", title="title", number=1)) ]), "Review in progress": ProjectColumn(id="id", name="Review in progress", cards=[]) }) assert len(project.get_all_issue_ids()) == 1 assert len(project.columns.keys()) == 2 issue = Issue(id="1", number=1, title="1") issues = {1: issue} class ClientMock(object): def delete_project_card(self, **kwargs): return project.remove_issues(ClientMock, issues, config) assert project.get_all_issue_ids() == set()
def test_project_empty_card(): project = Project( name="test project", config=Configuration(os.path.join(MOCK_FOLDER_PATH, 'conf.ini')), columns={ "Queue": ProjectColumn(id="id", name="Queue", cards=[ IssueCard(id="sdf", issue=Issue(id="sdf", title="title", number=1)) ]), "Review in progress": ProjectColumn(id="id", name="Review in progress", cards=[]) }) assert project.name == "test project" assert len(project.get_all_issue_ids()) == 1 assert len(project.columns.keys()) == 2 assert project.columns['Queue'].name == 'Queue' assert project.columns['Review in progress'].name == 'Review in progress'
def test_adding_issue(): config = Configuration(os.path.join(MOCK_FOLDER_PATH, 'conf.ini')) config.load_properties() project = Project(name="test project", config=config, columns={ "Queue": ProjectColumn(id="id", name="Queue", cards=[ IssueCard(id="sdf", issue=Issue( id="sdf", title="title", number=2)) ]), "Review in progress": ProjectColumn(id="id", name="Review in progress", cards=[]) }) assert len(project.get_all_issue_ids()) == 1 assert len(project.columns.keys()) == 2 issue = Issue(id="1", number=1, title="Rony") assert issue.priority_rank == 0 issues = {"1": issue} class ClientMock(object): def add_issues_to_project(*args, **kwargs): return {'addProjectCard': {'cardEdge': {'node': {'id': "1"}}}} def add_to_column(*args, **kwargs): return def move_to_specific_place_in_column(*args, **kwargs): return project.add_issues(ClientMock, issues, {"1"}, config) assert project.columns['Queue'].cards[0].issue.title == "Rony" # testing non existent column with pytest.raises(Exception) as err: project.add_issue(ClientMock, issue, "non existent", config) assert "Did not found a matching column" in err issue2 = Issue(id="1", number=1, title="Rony", card_id_to_project={"1": { "project_number": 1 }}) issues2 = {"2": issue2} project.add_issues(ClientMock, issues2, {"2"}, config) assert project.columns['Queue'].cards[0].issue.title == "Rony"
def test_sort_column(): config = Configuration(os.path.join(MOCK_FOLDER_PATH, 'conf.ini')) config.load_properties() class MockClient(object): def add_to_column(*args, **kwargs): return def move_to_specific_place_in_column(*args, **kwargs): return mock_client = MockClient() # Sorting config.priority_list = DEFAULT_PRIORITY_LIST column_object = ProjectColumn(id="id", name="Review in progress", cards=[ IssueCard(id="sdf", issue=Issue(id="sdf", title="issue 2", number=2, labels=["Low"])), IssueCard(id="sdf3", issue=Issue(id="sdf", title="issue 4", number=4, labels=["Medium" ])), IssueCard(id="sdf2", issue=Issue(id="sdf2", title="issue 3", number=3, labels=["High"])) ]) column_object.sort_cards(mock_client, config) card_titles_in_column = [card.issue.title for card in column_object.cards] assert card_titles_in_column == ['issue 3', "issue 4", 'issue 2']
def test_set_issue_to_issue_card(): issue_id = "=asdf=sdf=" title = "issue name" labels = ["HighEffort", "Low", "bug"] assignee = "ronykoz" issue = Issue(id=issue_id, number=1, title=title, labels=labels, assignees=[assignee]) card = IssueCard("id", issue=issue) assert card.id == 'id' assert card.issue == issue
def test_move_issues(): config = Configuration(os.path.join(MOCK_FOLDER_PATH, 'conf.ini')) config.load_properties() issue = Issue(id="1", title="title", number=1, assignees=["Rony"], labels=["Testing"], card_id_to_project={"sdf": { "project_number": 1 }}) project = Project(name="test project", config=config, columns={ "Queue": ProjectColumn( id="id", name="Queue", cards=[IssueCard(id="sdf", issue=issue)]), "In progress": ProjectColumn(id="id", name="In progress", cards=[]) }) class MockClient(object): def add_to_column(*args, **kwargs): return def move_to_specific_place_in_column(*args, **kwargs): return project.move_issues(MockClient(), {"1": issue}, config) assert project.is_in_column("Queue", "1") is False assert project.is_in_column("In progress", "1") is True # Move within the same column project.move_issues(MockClient(), {"1": issue}, config) assert project.is_in_column("Queue", "1") is False assert project.is_in_column("In progress", "1") is True
def test_add_card_to_column(): config = Configuration(os.path.join(MOCK_FOLDER_PATH, 'conf.ini')) config.load_properties() config.priority_list = DEFAULT_PRIORITY_LIST column_object = ProjectColumn(id="id", name="Review in progress", cards=[ IssueCard(id="sdf", issue=Issue(id="sdf", title="issue 2", number=2, labels=["Low"])), IssueCard(id="sdf2", issue=Issue(id="sdf2", title="issue 3", number=3, labels=["High"])) ]) issue_to_inject = Issue(id="4", title="issue 4", number=4, labels=['Medium']) issue_to_inject.set_priority(DEFAULT_PRIORITY_LIST) class MockClient(object): def add_to_column(*args, **kwargs): return def move_to_specific_place_in_column(*args, **kwargs): return mock_client = MockClient() # Sorting column_object.sort_cards(mock_client, config) card_titles_in_column = [card.issue.title for card in column_object.cards] assert card_titles_in_column == ['issue 3', 'issue 2'] # Adding in the middle column_object.add_card("id", issue_to_inject, mock_client) card_titles_in_column = [card.issue.title for card in column_object.cards] assert card_titles_in_column == ['issue 3', 'issue 4', 'issue 2'] # Higher priority addition issue_to_inject2 = Issue(id="5", title="issue 5", number=5, labels=['Critical']) issue_to_inject2.set_priority(DEFAULT_PRIORITY_LIST) column_object.add_card("id", issue_to_inject2, mock_client) card_titles_in_column = [card.issue.title for card in column_object.cards] assert card_titles_in_column == [ 'issue 5', 'issue 3', 'issue 4', 'issue 2' ] # Lower priority addition issue_to_inject3 = Issue(id="6", title="issue 6", number=6) column_object.add_card("id", issue_to_inject3, mock_client) card_titles_in_column = [card.issue.title for card in column_object.cards] assert card_titles_in_column == [ 'issue 5', 'issue 3', 'issue 4', 'issue 2', "issue 6" ] # Same priority different number issue_to_inject4 = Issue( id="7", title="issue 7", number=-1, ) column_object.add_card("id", issue_to_inject4, mock_client) card_titles_in_column = [card.issue.title for card in column_object.cards] assert card_titles_in_column == [ 'issue 5', 'issue 3', 'issue 4', 'issue 2', "issue 7", "issue 6" ]
def test_empty_config_for_issue_card(): with pytest.raises(Exception) as raised_exception: IssueCard("test id") assert "You must provide configuration file loading new issue" in raised_exception