sport_inventary/tests/test_validation.py

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