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

from __future__ import unicode_literals, absolute_import

from unittest import TestCase

import sqlalchemy as sa

from rattail.batch import product as mod
from rattail.config import make_config
from rattail.db import Session


class TestProductBatchHandler(TestCase):

    def setUp(self):
        self.config = self.make_config()
        self.handler = self.make_handler()

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

    def make_handler(self):
        return mod.ProductBatchHandler(self.config)

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

        # prep data
        betty = model.User(username='betty')
        prodbatch = model.ProductBatch(id=1, created_by=betty)
        session.add(prodbatch)
        session.commit()

        # make basic label batch
        lblbatch = self.handler.make_label_batch(prodbatch, betty, id=2)
        self.assertIsNotNone(lblbatch)
        self.assertEqual(lblbatch.id, 2)

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

        # prep data
        betty = model.User(username='betty')
        prodbatch = model.ProductBatch(id=1, created_by=betty)
        session.add(prodbatch)
        session.commit()

        # make basic pricing batch
        prcbatch = self.handler.make_pricing_batch(prodbatch, betty, id=2)
        self.assertIsNotNone(prcbatch)
        self.assertEqual(prcbatch.id, 2)
