From 36ee67ef16d9f74b88ad748500d5c78a15e04287 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 15 Feb 2026 10:37:17 +0100 Subject: [PATCH] Add regression test for AttributeProperty mixin. Closes #3155 --- evennia/objects/tests.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/evennia/objects/tests.py b/evennia/objects/tests.py index a0dbb96d98..0c75f82951 100644 --- a/evennia/objects/tests.py +++ b/evennia/objects/tests.py @@ -507,6 +507,19 @@ class TestObjectPropertiesClass(DefaultObject): self.property_initialized = True +class MixinAttributeProperty: + strength = AttributeProperty(default=0, category="stat") + agility = AttributeProperty(default=0, category="stat", autocreate=False) + + +class MixinTagProperty: + mytag = TagProperty(category="mixin_tags") + + +class TestObjectPropertiesMixinClass(MixinAttributeProperty, MixinTagProperty, DefaultObject): + pass + + class TestProperties(EvenniaTestCase): """ Test Properties. @@ -769,3 +782,21 @@ class TestProperties(EvenniaTestCase): obj1.delete() obj2.delete() + + def test_mixin_properties_initialized_on_creation(self): + """ + Test regression for #3155: properties on mixins should initialize on create. + """ + obj = create.create_object(TestObjectPropertiesMixinClass, key="mixin_prop_obj") + + self.assertEqual(obj.attributes.get("strength", category="stat"), 0) + self.assertEqual(obj.strength, 0) + + # non-autocreate should still not exist in db until explicitly accessed + self.assertEqual(obj.attributes.get("agility", category="stat"), None) + self.assertEqual(obj.agility, 0) + self.assertEqual(obj.attributes.get("agility", category="stat"), None) + + self.assertTrue(obj.tags.has("mytag", category="mixin_tags")) + + obj.delete()