Add shapes tests and fix django-readers as core dependency
25 tests covering Shape, Diff, and NestedDiff: - Shape metaclass: model resolution, field extraction, nested detection, spec/pair building - Query: list, filter, nested relations, empty results, Pydantic serialization - Diff (new): detects all fields as changed - Diff (existing): no changes, single field, multiple fields, nonexistent ID - Diff (nested): created, updated, deleted, combined, nonexistent relation Fixes: - django-readers moved from optional to core dependency - Shape import lazy-loaded via __getattr__ (django_readers imports contenttypes which can't happen during apps.populate()) - Added Author, Book, Tag test models Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,3 +38,37 @@ class EmailUser(AbstractBaseUser, PermissionsMixin):
|
||||
|
||||
class Meta:
|
||||
app_label = "tests"
|
||||
|
||||
|
||||
# ─── Shape test models ──────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class Author(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
bio = models.TextField(blank=True, default="")
|
||||
|
||||
class Meta:
|
||||
app_label = "tests"
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Book(models.Model):
|
||||
title = models.CharField(max_length=200)
|
||||
pages = models.IntegerField(default=0)
|
||||
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name="books")
|
||||
|
||||
class Meta:
|
||||
app_label = "tests"
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
||||
class Tag(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
books = models.ManyToManyField(Book, related_name="tags", blank=True)
|
||||
|
||||
class Meta:
|
||||
app_label = "tests"
|
||||
|
||||
Reference in New Issue
Block a user