Files @ e6fc18e4e15a
Branch filter:

Location: rattail-project/rattail/tests/autocomplete/test_brands.py

lance
Add new `RattailConfiguration` class based on python-configuration
# -*- coding: utf-8; -*-

from __future__ import unicode_literals, absolute_import

from unittest import TestCase

import sqlalchemy as sa

from rattail.autocomplete import brands as mod
from rattail.config import make_config
from rattail.db import Session


class TestBrandAutocompleter(TestCase):

    def setUp(self):
        self.config = self.make_config()
        self.autocompleter = self.make_autocompleter()

    def make_config(self):
        return make_config([], extend=False)

    def make_autocompleter(self):
        return mod.BrandAutocompleter(self.config)

    def test_autocomplete(self):
        engine = sa.create_engine('sqlite://')
        model = self.config.get_model()
        model.Base.metadata.create_all(bind=engine)
        session = Session(bind=engine)

        # first create a few brands
        alpha = model.Brand(name='Alpha Natural Foods')
        session.add(alpha)
        beta = model.Brand(name='Beta Natural Foods')
        session.add(beta)
        gamma = model.Brand(name='Gamma Natural Foods')
        session.add(gamma)

        # searching for nothing yields no results
        result = self.autocompleter.autocomplete(session, '')
        self.assertEqual(len(result), 0)

        # search for 'natural' yields all 3 brands
        result = self.autocompleter.autocomplete(session, 'natural')
        self.assertEqual(len(result), 3)

        # search for 'gamma' yields just that brand
        result = self.autocompleter.autocomplete(session, 'gamma')
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0]['value'], gamma.uuid)