From 48bb4b6035bf98e49adacfc4d191f48a7c8c987a Mon Sep 17 00:00:00 2001 From: Azizjon Date: Tue, 24 Oct 2023 08:50:34 +0500 Subject: [PATCH 1/2] use entities region --- src/domain/entities/handbook.py | 18 +++++++++++++ src/domain/value_objects.py | 1 + tests/domain/entities/test_handbook.py | 37 ++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 src/domain/entities/handbook.py create mode 100644 tests/domain/entities/test_handbook.py diff --git a/src/domain/entities/handbook.py b/src/domain/entities/handbook.py new file mode 100644 index 0000000..f716b80 --- /dev/null +++ b/src/domain/entities/handbook.py @@ -0,0 +1,18 @@ +from dataclasses import asdict, dataclass +from typing import Optional + +from src.domain.value_objects import RegionId + + +@dataclass +class Region: + region_id: RegionId + name: str + parent: Optional["Region"] + + @classmethod + def from_dict(cls, data): + return cls(**data) + + def to_dict(self): + return asdict(self) diff --git a/src/domain/value_objects.py b/src/domain/value_objects.py index af105ba..7e749a7 100644 --- a/src/domain/value_objects.py +++ b/src/domain/value_objects.py @@ -1 +1,2 @@ CurrencyId = int +RegionId = int diff --git a/tests/domain/entities/test_handbook.py b/tests/domain/entities/test_handbook.py new file mode 100644 index 0000000..74b080c --- /dev/null +++ b/tests/domain/entities/test_handbook.py @@ -0,0 +1,37 @@ +from src.domain.entities.handbook import Region + +data = {"region_id": 1, "name": "Tajikistan", "parent": None} + + +def test_region_creation(): + region: Region = Region(**data) + + assert region.region_id == data.get("region_id") + assert region.name == data.get("name") + assert region.parent == data.get("parent") + + +def test_region_with_parent(): + parent: Region = Region(region_id=1, name="Country", parent=None) + region: Region = Region(region_id=2, name="City", parent=parent) + assert region.parent == parent + assert region.parent.name == parent.name + + +def test_region_from_dict(): + region: Region = Region.from_dict(data=data) + + assert region.region_id == data.get("region_id") + assert region.name == data.get("name") + assert region.parent == data.get("parent") + + +def test_region_to_dict(): + region: Region = Region.from_dict(data=data) + assert region.to_dict() == data + + +def test_region_equality(): + region1: Region = Region.from_dict(data=data) + region2: Region = Region.from_dict(data=data) + assert region1 == region2 From 26e48eab9bc0ed98ad6ee7f9fa57da26443dfbd3 Mon Sep 17 00:00:00 2001 From: Azizjon Date: Tue, 24 Oct 2023 18:30:09 +0500 Subject: [PATCH 2/2] shshj --- src/domain/entities/account.py | 36 ++++++++++++++++++++++++++++++++++ src/domain/value_objects.py | 1 + 2 files changed, 37 insertions(+) create mode 100644 src/domain/entities/account.py diff --git a/src/domain/entities/account.py b/src/domain/entities/account.py new file mode 100644 index 0000000..11c5ca3 --- /dev/null +++ b/src/domain/entities/account.py @@ -0,0 +1,36 @@ +from dataclasses import asdict, dataclass +from datetime import datetime +from typing import Optional + +from django.utils import timezone +from src.domain.value_objects import UserId + + +@dataclass +class User: + "jsdkjkdsjkds" + user_id: UserId + email: Optional[str] + phone: str + password: str + is_staff: Optional[bool] + is_active: Optional[bool] + is_superuser: Optional[bool] + date_joined: Optional[datetime] + + otp: Optional[int] + is_verified: Optional[bool] + role: str + company: Optional[str] + + created_by: Optional["User"] + updated_by: Optional["User"] + created_at: datetime = timezone.now + updated_at: datetime = timezone.now + + @classmethod + def from_dict(cls, data): + return cls(**data) + + def to_dict(self): + return asdict(self) diff --git a/src/domain/value_objects.py b/src/domain/value_objects.py index 7e749a7..3ef356f 100644 --- a/src/domain/value_objects.py +++ b/src/domain/value_objects.py @@ -1,2 +1,3 @@ CurrencyId = int RegionId = int +UserId = int