#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Tests for `erepublik` package."""

import unittest

from erepublik import Citizen


class TestErepublik(unittest.TestCase):
    """Tests for `erepublik` package."""

    def setUp(self):
        """Set up test fixtures, if any."""
        self.citizen = Citizen("email", "password", False)
        self.citizen.config.interactive = False

    def test_should_do_levelup(self):
        self.citizen.energy.energy = 5950
        self.citizen.energy.interval = 30
        self.citizen.energy.limit = 6000
        self.citizen.details.xp = 14850
        self.assertTrue(self.citizen.should_do_levelup)

        self.citizen.energy.energy = 1000
        self.assertFalse(self.citizen.should_do_levelup)

    # def deprecated_test_should_travel_to_fight(self):
    #     self.citizen.config.always_travel = True
    #     self.assertTrue(self.citizen.should_travel_to_fight())
    #     self.citizen.config.always_travel = False
    #     self.assertFalse(self.citizen.should_travel_to_fight())
    #
    #     self.citizen.energy.energy = 5960
    #     self.citizen.energy.interval = 30
    #     self.citizen.energy.limit = 6000
    #     self.citizen.details.xp = 14850
    #     self.assertTrue(self.citizen.should_travel_to_fight())
    #     self.citizen.details.xp = 15000
    #     self.citizen.energy.energy = 5000
    #     self.assertFalse(self.citizen.should_travel_to_fight())
    #
    #     self.citizen.energy.energy = 5910
    #     self.assertTrue(self.citizen.should_travel_to_fight())
    #     self.citizen.energy.energy = 5900
    #     self.assertFalse(self.citizen.should_travel_to_fight())
    #
    #     # self.citizen.next_reachable_energy and self.citizen.config.next_energy
    #     self.citizen.config.next_energy = True
    #     self.citizen.energy.limit = 10000
    #     self.citizen.details.next_pp = [5000, 5250, 5750, 6250, 6750]
    #     self.citizen.details.pp = 4900
    #     self.citizen.energy.energy = 8510
    #     self.assertEqual(self.citizen.next_reachable_energy, 850)
    #     self.citizen.energy.energy = 8490
    #     self.assertTrue(self.citizen.should_travel_to_fight())
    #     self.assertEqual(self.citizen.next_reachable_energy, 350)
    #     self.citizen.energy.energy = 250
    #     self.assertFalse(self.citizen.should_travel_to_fight())
    #     self.assertEqual(self.citizen.next_reachable_energy, 0)
    #
    # def deprecated_test_should_fight(self):
    #     def is_wc_close():
    #         return self.citizen.max_time_till_full_ff > self.citizen.time_till_week_change
    #
    #     self.citizen.config.fight = False
    #     self.assertEqual(self.citizen.should_fight(), (0, "Fighting not allowed!", False))
    #
    #     self.citizen.config.fight = True
    #
    #     # Level up
    #     self.citizen.energy.limit = 3000
    #     self.citizen.details.xp = 24705
    #     if not is_wc_close:
    #         self.assertEqual(self.citizen.should_fight(), (0, "Level up", False))
    #
    #         self.citizen.energy.energy = 5950
    #         self.citizen.energy.interval = 30
    #         self.assertEqual(self.citizen.should_fight(), (900, "Level up", True))
    #         self.citizen.my_companies.ff_lockdown = 160
    #         self.assertEqual(self.citizen.should_fight(), (900, "Level up", True))
    #         self.citizen.my_companies.ff_lockdown = 0
    #
    #         # Level up reachable
    #         self.citizen.details.xp = 24400
    #         self.assertEqual(self.citizen.should_fight(), (305, "Fighting for close Levelup. Doing 305 hits", True))
    #         self.citizen.my_companies.ff_lockdown = 160
    #         self.assertEqual(self.citizen.should_fight(), (305, "Fighting for close Levelup. Doing 305 hits", True))
    #         self.citizen.my_companies.ff_lockdown = 0
    #
    #         self.citizen.details.xp = 21000
    #         self.assertEqual(self.citizen.should_fight(), (75, "Obligatory fighting for at least 75pp", True))
    #         self.citizen.my_companies.ff_lockdown = 160
    #         self.assertEqual(self.citizen.should_fight(), (75, "Obligatory fighting for at least 75pp", True))
    #         self.citizen.my_companies.ff_lockdown = 0
    #         self.citizen.details.pp = 80
    #
    #         # All-in (type = all-in and full ff)
    #         self.citizen.config.all_in = True
    #         self.assertEqual(self.citizen.should_fight(), (595, "Fighting all-in. Doing 595 hits", False))
    #         self.citizen.my_companies.ff_lockdown = 160
    #         self.assertEqual(
    #             self.citizen.should_fight(),
    #             (435, "Fight count modified (old count: 595 | FF: 595
    #             | WAM ff_lockdown: 160 | New count: 435)", False),
    #         )
    #         self.citizen.my_companies.ff_lockdown = 0
    #
    #         self.citizen.config.air = True
    #         self.citizen.energy.energy = 4000
    #         self.assertEqual(self.citizen.should_fight(), (400, "Fighting all-in in AIR. Doing 400 hits", False))
    #         self.citizen.my_companies.ff_lockdown = 160
    #         self.assertEqual(
    #             self.citizen.should_fight(),
    #             (240, "Fight count modified (old count: 400 | FF: 400
    #             | WAM ff_lockdown: 160 | New count: 240)", False),
    #         )
    #         self.citizen.my_companies.ff_lockdown = 0
    #         self.citizen.config.all_in = False
    #
    #         self.citizen.config.next_energy = True
    #         self.citizen.energy.limit = 10000
    #         self.citizen.details.next_pp = [100, 150, 250, 400, 500]
    #         self.assertEqual(self.citizen.should_fight(), (320, "Fighting for +1 energy. Doing 320 hits", False))
    #         self.citizen.my_companies.ff_lockdown = 160
    #         self.assertEqual(
    #             self.citizen.should_fight(),
    #             (160, "Fight count modified (old count: 320 | FF: 400
    #             | WAM ff_lockdown: 160 | New count: 160)", False),
    #         )
    #         self.citizen.my_companies.ff_lockdown = 0
    #         self.citizen.energy.limit = 3000
    #         self.citizen.details.next_pp = [19250, 20000]
    #         self.citizen.config.next_energy = False
    #
    #         # 1h worth of energy
    #         self.citizen.energy.energy = 5910
    #         self.assertEqual(self.citizen.should_fight(), (30, "Fighting for 1h energy. Doing 30 hits", True))
