from nose2 import events, session
from nose2.tests._common import TestCase


class Example(events.Plugin):
    commandLineSwitch = ("X", "xxx", "triple x")

    def testOutcome(self, event):
        pass


class TestPluginApi(TestCase):
    def setUp(self):
        self.session = session.Session()
        self.plug = Example(session=self.session)
        super(TestCase, self).setUp()

    def test_add_option_adds_option(self):
        helpt = self.session.argparse.format_help()
        assert "-X" in helpt and "--xxx" in helpt, (
            "commandLineSwitch arg not found in help text: %s" % helpt
        )

    def test_short_opt_registers_plugin(self):
        args, argv = self.session.argparse.parse_known_args(["-X"])
        assert self.plug in self.session.plugins
        assert (
            self.plug in self.session.hooks.testOutcome.plugins
        ), "short opt did not register plugin"

    def test_long_opt_registers_plugin(self):
        args, argv = self.session.argparse.parse_known_args(["--xxx"])
        assert self.plug in self.session.plugins
        assert (
            self.plug in self.session.hooks.testOutcome.plugins
        ), "long opt did not register plugin"
