# -*- coding: utf-8; -*-
from __future__ import unicode_literals, absolute_import
from unittest import TestCase
import sqlalchemy as sa
from rattail.commands import batch as mod
from rattail.config import make_config
from rattail.commands import Command
from rattail.db import Session
from rattail.core import Object
class TestBatchHandlerCommand(TestCase):
def setUp(self):
self.config = self.make_config()
self.command = self.make_command()
self.subcommand = self.make_subcommand()
def make_config(self):
return make_config([], extend=False)
def make_command(self):
command = Command()
command.config = self.config
return command
def make_subcommand(self):
return mod.BatchHandlerCommand(parent=self.command,
config=self.config)
def test_get_handler(self):
engine = sa.create_engine('sqlite://')
model = self.config.get_model()
model.Base.metadata.create_all(bind=engine)
session = Session(bind=engine)
# TODO: these things should self-register somehow instead
self.config.setdefault('rattail.batch', 'handheld.handler',
'rattail.batch.handheld:HandheldBatchHandler')
# subcommand makes its own handler, for e.g. handheld batch
args = Object(batch_type='handheld')
handler = self.subcommand.get_handler(args)
self.assertIsNotNone(handler)
self.assertEqual(handler.batch_key, 'handheld')