class ApiManagerTest(unittest.TestCase):

    def setUp(self):
        self.coffee_file = Mock()
        self.coffee_file.get_machine_status = MagicMock(
            return_value=MachineStatus.stand_by)
        self.coffee_file.get_schedule_times = MagicMock(
            return_value=['09:00'])
        self.coffee_file.start_coffee_routine_async = MagicMock()
        self.target = ApiManager(self.coffee_file).api_flask.test_client(self)

    def test_api_should_given_information_about_app(self):
        result = self.target.get('/')
        self.assertEqual(result.data, 'Api da Cafeteira')

    def test_api_should_return_machine_status(self):
        result = self.target.get('/cafe')
        expected = json.dumps({'status': 'stand_by'}, indent=2)
        self.assertEqual(result.data, expected)

    def test_api_should_return_schedule_times(self):
        result = self.target.get('/calendario')
        expected = json.dumps(
            {'times': ['09:00']}, indent=2,  separators=(',', ': '))
        self.assertEqual(result.data, expected)

    def test_api_should_start_make_coffee(self):
        self.target.post('/cafe')
        self.assertTrue(self.coffee_file.start_coffee_routine_async.called)
        self.assertTrue(self.coffee_file.get_machine_status.called)