catch different exc in tests for different backends

This commit is contained in:
collerek
2020-10-01 13:16:04 +02:00
parent d0b6e75470
commit d2d0d042d6
3 changed files with 57 additions and 47 deletions

View File

@ -1,10 +1,11 @@
import asyncio
import sqlite3
import asyncpg
import databases
import pymysql
import pytest
import sqlalchemy
from sqlalchemy.exc import IntegrityError
import ormar
from tests.settings import DATABASE_URL
@ -18,7 +19,7 @@ class Product(ormar.Model):
tablename = "products"
metadata = metadata
database = database
constraints = [ormar.UniqueColumns('name', 'company')]
constraints = [ormar.UniqueColumns("name", "company")]
id: ormar.Integer(primary_key=True)
name: ormar.String(max_length=100)
@ -45,9 +46,15 @@ async def create_test_database():
async def test_unique_columns():
async with database:
async with database.transaction(force_rollback=True):
await Product.objects.create(name='Cookies', company='Nestle')
await Product.objects.create(name='Mars', company='Mars')
await Product.objects.create(name='Mars', company='Nestle')
await Product.objects.create(name="Cookies", company="Nestle")
await Product.objects.create(name="Mars", company="Mars")
await Product.objects.create(name="Mars", company="Nestle")
with pytest.raises((IntegrityError, sqlite3.IntegrityError)):
await Product.objects.create(name='Mars', company='Mars')
with pytest.raises(
(
sqlite3.IntegrityError,
pymysql.IntegrityError,
asyncpg.exceptions.UniqueViolationError,
)
):
await Product.objects.create(name="Mars", company="Mars")