49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
import unittest
|
|
from app import create_app, db
|
|
from app.models import Partners, Categories, Inventory, IssueOrders, IssueOrderItems, ReturnOrders, ReturnOrderItems
|
|
from datetime import datetime
|
|
|
|
class TestValidation(unittest.TestCase):
|
|
def setUp(self):
|
|
self.app = create_app()
|
|
self.app.config['TESTING'] = True
|
|
self.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
|
|
self.ctx = self.app.app_context()
|
|
self.ctx.push()
|
|
db.create_all()
|
|
|
|
# Создаем тестовые данные
|
|
self.p = Partners(name='Test', email='t@t.ru')
|
|
db.session.add(self.p)
|
|
self.cat = Categories(name='TestCat')
|
|
db.session.add(self.cat)
|
|
db.session.commit()
|
|
self.inv = Inventory(category_id=self.cat.id, name='Test', base_price=100, season_type='summer')
|
|
db.session.add(self.inv)
|
|
db.session.commit()
|
|
self.issue = IssueOrders(partner_id=self.p.id, issue_date=datetime.now())
|
|
db.session.add(self.issue)
|
|
db.session.commit()
|
|
self.item = IssueOrderItems(issue_order_id=self.issue.id, inventory_id=self.inv.id, quantity=2)
|
|
db.session.add(self.item)
|
|
db.session.commit()
|
|
|
|
def tearDown(self):
|
|
db.session.remove()
|
|
db.drop_all()
|
|
self.ctx.pop()
|
|
|
|
def test_cannot_create_return_twice(self):
|
|
"""Проверка, что нельзя создать второй возврат для одной выдачи"""
|
|
ret1 = ReturnOrders(issue_order_id=self.issue.id, return_date=datetime.now())
|
|
db.session.add(ret1)
|
|
db.session.commit()
|
|
|
|
ret2 = ReturnOrders(issue_order_id=self.issue.id, return_date=datetime.now())
|
|
db.session.add(ret2)
|
|
with self.assertRaises(Exception):
|
|
db.session.commit()
|
|
db.session.rollback()
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |