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()