class ListArticlesCommand: token = String(max_length=1024) tag = String(max_length=50) author = String(max_length=50) favorited = String(max_length=50) limit = Integer(default=20) offset = Integer(default=0)
class PersonSQLite(BaseAggregate): first_name = String(max_length=50, required=True) last_name = String(max_length=50, required=True) age = Integer(default=21) class Meta: provider = "sqlite"
class DbPerson(BaseEntity): first_name = String(max_length=50, required=True) last_name = String(max_length=50) age = Integer(default=21) class Meta: schema_name = "pepes"
class OrderedPerson(BaseEntity): first_name = String(max_length=50, required=True) last_name = String(max_length=50) age = Integer(default=21) class Meta: order_by = "first_name"
class ArticleDTO: slug = String(max_length=250) title = String(required=True, max_length=250) description = Text(required=True) body = Text(required=True) tag_list = List() created_at = DateTime(default=datetime.now()) updated_at = DateTime(default=datetime.now()) favorited = Boolean(default=False) favorites_count = Integer() @classmethod def for_article(cls, article: Article, user: User): favorited = article in [ favorite.article for favorite in user.favorites ] return ArticleDTO(slug=article.slug, title=article.title, description=article.description, body=article.body, tag_list=article.tag_list, created_at=article.created_at, updated_at=article.updated_at, author=article.author, favorited=favorited)
class PostMeta(BaseEntity): likes = Integer(default=0) post = Reference(Post) class Meta: aggregate_cls = Post
def test_choice(self): """ Test choices validations for the Integer field """ class StatusChoices(enum.Enum): """ Set of choices for the status""" PENDING = (0, 'Pending') SUCCESS = (1, 'Success') ERROR = (2, 'Error') status = Integer(choices=StatusChoices) assert status is not None # Test loading of values to the status field assert status._load(0) == 0 with pytest.raises(ValidationError) as e_info: status._load(4) assert e_info.value.messages == { 'unlinked': ["Value `4` is not a valid choice. " "Must be one of [0, 1, 2]"] }
class Person(BaseAggregate): first_name = String(max_length=50, required=True) last_name = String(max_length=50, required=True) age = Integer(default=21) @classmethod def add_newcomer(cls, person_dict): """Factory method to add a new Person to the system""" newcomer = Person( first_name=person_dict['first_name'], last_name=person_dict['last_name'], age=person_dict['age'], ) return newcomer
class Building(BaseValueObject): name = String(max_length=50) floors = Integer() status = String(choices=BuildingStatus) def defaults(self): if not self.status: if self.floors == 4: self.status = BuildingStatus.DONE.value else: self.status = BuildingStatus.WIP.value def clean(self): errors = defaultdict(list) if self.floors >= 4 and self.status != BuildingStatus.DONE.value: errors["status"].append("should be DONE") return errors
class Person(BaseAggregate): first_name = String(max_length=50, required=True) last_name = String(max_length=50, required=True) age = Integer(default=21) @classmethod def add_newcomer(cls, person_dict): """Factory method to add a new Person to the system""" newcomer = Person( first_name=person_dict['first_name'], last_name=person_dict['last_name'], age=person_dict['age'], ) # Publish Event via the domain current_domain.publish(PersonAdded(person=newcomer)) return newcomer
class AddPersonCommand(BaseCommand): first_name = String(max_length=50, required=True) last_name = String(max_length=50, required=True) age = Integer(default=21)
class Receiver(BaseAggregate): name = String() age = Integer()
class Provider(BaseAggregate): name = String() age = Integer()
class AdultAbstractPerson(ConcretePerson): age = Integer(default=21) class Meta: abstract = True
class PersonAdded(BaseDomainEvent): id = Auto(identifier=True) first_name = String(max_length=50, required=True) last_name = String(max_length=50, required=True) age = Integer(default=21)
class Person(BaseAggregate): first_name = String(max_length=50, required=True) last_name = String(max_length=50, required=True) age = Integer(default=21) created_at = DateTime(default=datetime.now())
def test_type_validation(self): """ Test type checking validation for the Field""" with pytest.raises(ValidationError): age = Integer() age._load('x')
def test_init(self): """Test successful Integer Field initialization""" age = Integer() assert age is not None
class NotAPerson(BaseEntity): first_name = String(max_length=50, required=True) last_name = String(max_length=50) age = Integer(default=21)
class PersonExplicitID(BaseEntity): ssn = String(max_length=36, identifier=True) first_name = String(max_length=50, required=True) last_name = String(max_length=50) age = Integer(default=21)
class PersonAutoSSN(BaseEntity): ssn = Auto(identifier=True) first_name = String(max_length=50, required=True) last_name = String(max_length=50) age = Integer(default=21)
def test_various_input_values(self): age = Integer() assert age._load(12) == 12 assert age._load('12') == 12 assert age._load(None) is None assert age._load('') is None
class AbstractPerson(BaseEntity): age = Integer(default=5) class Meta: abstract = True
def test_max_value(self): """ Test maximum value validation for the integer field""" with pytest.raises(ValidationError): age = Integer(max_value=5) age._load(6)
class UserSchema(BaseSerializer): name = String(required=True) age = Integer(required=True) class Meta: aggregate_cls = User
class PostMeta(BaseEntity): likes = Integer(default=0) post = Reference(Post)
class User(BaseAggregate): name = String(required=True) age = Integer(required=True)
class Person(BaseAggregate): first_name = String(max_length=50, required=True) last_name = String(max_length=50, required=True) age = Integer(default=21)
class PersonSchema: name = String(required=True) age = Integer(required=True) class Meta: aggregate_cls = User