class TestItem(unittest.TestCase):
    def setUp(self):
        self.valid_item = Item("a", "menu 1")

    def test_init_fail_whithout_param(self):
        with self.assertRaises(TypeError):
            Item()

        with self.assertRaises(TypeError):
            Item("t")

    def test_init(self):
        i1 = Item("a", "menu 1")
        i2 = Item("b", "menu 2", True)

        self.assertFalse(i1.activate)
        self.assertTrue(i2.activate)
        self.assertEqual(i1.txt, "menu 1")
        self.assertEqual(i2.txt, "menu 2")
        self.assertEqual(i1.key, "a")
        self.assertEqual(i2.key, "b")

    def test_repr(self):
        valid_ret = "<askcli.Item : a - menu 1>"
        self.assertEqual(self.valid_item.__repr__(), valid_ret)

    def test_to_str(self):

        valid_ret = " a - menu 1"
        valid_ret_2 = ">a - menu 1"

        self.assertEqual(self.valid_item.__str__(), valid_ret)
        self.valid_item.activate = True
        self.assertEqual(self.valid_item.__str__(), valid_ret_2)

    def test_eq_item(self):
        valid_item_doublon = Item("a", "menu 1")
        not_eq_item = Item("b", "menu b")
        not_eq_item_2 = Item("A", "menu A")

        self.assertTrue((valid_item_doublon == self.valid_item))
        self.assertFalse((not_eq_item == self.valid_item))
        self.assertFalse((not_eq_item_2 == self.valid_item))
        self.assertFalse(("a" == self.valid_item))

    def test_load_var(self):
        self.assertEqual(YES.key, "Y")
        self.assertEqual(YES.txt, "Yes")
        self.assertEqual(NO.key, "N")
        self.assertEqual(NO.txt, "No")
        self.assertEqual(OUI.key, "O")
        self.assertEqual(OUI.txt, "Oui")
        self.assertEqual(NON.key, "N")
        self.assertEqual(NON.txt, "Non")
 def setUp(self):
     self.valid_item = Item("a", "menu 1")