File: test_excludes_in_load_all.py

package info (click to toggle)
ormar 0.22.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,952 kB
  • sloc: python: 24,085; makefile: 34; sh: 14
file content (70 lines) | stat: -rw-r--r-- 1,957 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import uuid

import ormar
import pytest

from tests.lifespan import init_tests
from tests.settings import create_config

base_ormar_config = create_config(force_rollback=True)


class JimmyUser(ormar.Model):
    ormar_config = base_ormar_config.copy(tablename="jimmy_users")

    id: uuid.UUID = ormar.UUID(
        primary_key=True, default=uuid.uuid4(), uuid_format="string"
    )


class JimmyProfile(ormar.Model):
    ormar_config = base_ormar_config.copy(tablename="jimmy_profiles")

    id: uuid.UUID = ormar.UUID(
        primary_key=True, default=uuid.uuid4(), uuid_format="string"
    )
    name = ormar.String(max_length=42, default="JimmyProfile")
    user: JimmyUser = ormar.ForeignKey(to=JimmyUser)


class JimmyAccount(ormar.Model):
    ormar_config = base_ormar_config.copy(tablename="jimmy_accounts")

    id: uuid.UUID = ormar.UUID(
        primary_key=True, default=uuid.uuid4(), uuid_format="string"
    )
    name = ormar.String(max_length=42, default="JimmyAccount")
    user: JimmyUser = ormar.ForeignKey(to=JimmyUser)


create_test_database = init_tests(base_ormar_config)


@pytest.mark.asyncio
async def test_excluding_one_relation():
    async with base_ormar_config.database:
        user = JimmyUser()
        await user.save()

        await JimmyAccount(user=user).save()
        await JimmyProfile(user=user).save()

        await user.load_all(exclude={"jimmyprofiles"})
        assert hasattr(user.jimmyaccounts[0], "name")
        assert len(user.jimmyprofiles) == 0


@pytest.mark.asyncio
async def test_excluding_other_relation():
    async with base_ormar_config.database:
        user = JimmyUser()
        await user.save()

        await JimmyAccount(user=user).save()
        await JimmyProfile(user=user).save()

        await user.load_all(exclude={"jimmyaccounts"})
        assert await JimmyProfile.objects.get()

        assert hasattr(user.jimmyprofiles[0], "name")
        assert len(user.jimmyaccounts) == 0