def test_add_label_by_query_with_no_results(self):
        j = Mock()
        jql = "assignee = john.doe"
        label = "somelabel"
        j.search_issues = Mock(return_value=[])

        list(jiralabels.add_label_by_query(j, jql, label))

        j.search_issues.assert_called_once_with(jql)
    def test_replace_label_with_results(self):
        j = Mock()
        old_label = "old"
        new_label = "new"
        issue = Mock()
        issue.fields = Mock()
        issue.fields.labels = ["alpha", old_label, "gamma"]
        issue.update = Mock()
        j.search_issues = Mock(return_value=[issue])

        jiralabels.replace_label(j, old_label, new_label).next()

        j.search_issues.assert_called_once_with('labels in ("old")')
        issue.update.assert_called_once_with(labels=["alpha", new_label, "gamma"])
    def test_remove_label_by_query_with_results(self):
        j = Mock()
        jql = "assignee = john.doe"
        label_to_remove = "removeme"
        issue = Mock()
        issue.fields = Mock()
        issue.fields.labels = ["alpha", label_to_remove, "gamma"]
        issue.update = Mock()
        j.search_issues = Mock(return_value=[issue])

        jiralabels.remove_label_by_query(j, jql, label_to_remove).next()

        j.search_issues.assert_called_once_with(jql)
        issue.update.assert_called_once_with(labels=["alpha", "gamma"])