from collections import namedtuple

from actioner.utils.github import get_existing_task, get_issue_link
from tests import BaseTestCase

FakeIssue = namedtuple("FakeIssue", ["number", "html_url", "title"])


class IssueLinkTestCase(BaseTestCase):
    def setUp(self):
        super().setUp()
        self.issue = FakeIssue(123, "https://github.com/repo/thing", "issue title")

    def test_creates_link(self):
        self.assertEqual(
            get_issue_link(self.issue), "[#123](https://github.com/repo/thing)"
        )


class ExistingTaskTestCase(BaseTestCase):
    def setUp(self):
        super().setUp()
        self.tasks = {
            123: "[#1](url): title",
            456: "[#2](url/2): title 2",
            789: "[#3](url/3): title 3",
        }

    def test_finds_existing_repos(self):
        self.assertEqual(
            get_existing_task(self.tasks, FakeIssue(1, "url", "title")), 123
        )

    def test_not_existing_repo(self):
        self.assertIsNone(get_existing_task(self.tasks, FakeIssue(123, "url", "title")))