# -*- coding: utf-8 -*-

import logging
from unittest import TestCase
from werkzeug.exceptions import NotFound

from distribution.managers.elasticsearch import FeedItemManager

logging.disable(logging.CRITICAL)


class MockItem(object):

    def __init__(self, key, data):
        self.key = key
        self.data = data

    def get_key(self):
        return self.key


class ElasticsearchIntegrationTestCase(TestCase):

    def setUp(self):
        self.manager = FeedItemManager()

    def tearDown(self):
        self.manager.clear()

    def test_get(self):
        for i in xrange(2):
            self.manager.save(MockItem(key=str(i), data={'name': 'Marty McFly', 'id': i}))

        self.assertEqual(self.manager.get('0').data['name'], 'Marty McFly')
        self.assertEqual(self.manager.get('0').data['id'], 0)
        self.assertEqual(self.manager.get('1').data['name'], 'Marty McFly')
        self.assertEqual(self.manager.get('1').data['id'], 1)
        with self.assertRaises(NotFound):
            self.manager.get('missing')

    def test_sibling(self):
        self.manager.save(MockItem(key='125', data={'name': 'Biff Tannen', }))
        self.manager.save(MockItem(key='125', data={'name': 'Riak Riak', }))

        self.assertEqual(self.manager.get('125').data['name'], 'Riak Riak')
