def test_setting_a_label_for_all_sub_items(self):
        # Given
        sub_story = MockedJiraIssue()
        self.jira_client.search_issues.return_value = [
            sub_story,
        ]
        jat = JiraAgileToolBox(self.jira_client)

        # When
        jat.add_labels_to_all_sub_items_of_epic("PROJ001-001",
                                                ["label_to_set"])

        # Then
        sub_story.add_field_value.assert_called_with("labels", "label_to_set")
    def test_setting_a_label_for_all_sub_items_retrieves_only_the_label_fields(
            self):
        # Given
        self.jira_client.fields.return_value = DEFAULT_FIELDS_RETURN_VALUE
        sub_story = MockedJiraIssue()
        self.jira_client.search_issues.return_value = [
            sub_story,
        ]
        jat = JiraAgileToolBox(self.jira_client)

        # When
        jat.add_labels_to_all_sub_items_of_epic("PROJ001-001",
                                                ["label_to_set"])

        # Then
        self.jira_client.search_issues.assert_called_with(
            f"'Epic Link' = PROJ001-001", fields=["labels"], maxResults=0)
    def test_setting_a_label_for_all_sub_items_will_remove_already_present_labels(
            self):
        # Given
        self.jira_client.fields.return_value = DEFAULT_FIELDS_RETURN_VALUE
        sub_story = MockedJiraIssue()
        self.jira_client.search_issues.return_value = [
            sub_story,
        ]
        jat = JiraAgileToolBox(self.jira_client)

        # When
        jat.add_labels_to_all_sub_items_of_epic("PROJ001-001",
                                                ["label_to_set"],
                                                keep_already_present=False)

        # Then
        sub_story.update.assert_called_with(
            fields={"labels": ["label_to_set"]})
    def test_setting_a_label_for_all_sub_items_passes_on_the_jql_query(self):
        # Given
        self.jira_client.fields.return_value = DEFAULT_FIELDS_RETURN_VALUE
        sub_story = MockedJiraIssue()
        self.jira_client.search_issues.return_value = [
            sub_story,
        ]
        jat = JiraAgileToolBox(self.jira_client)

        # When
        epic = "PROJ001-001"
        jql_query = "project in (PROJ001,PROJ002)"
        jat.add_labels_to_all_sub_items_of_epic(epic, ["label_to_set"],
                                                jql_query=jql_query)

        # Then
        self.jira_client.search_issues.assert_called_with(
            f"'Epic Link' = {epic} AND {jql_query}",
            fields=["labels"],
            maxResults=0)