From c85e3d4a2ab293ade98209b20fa2b3afc2e65aaa Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Tue, 17 Jan 2006 21:55:07 +0000 Subject: [PATCH] magic-removal: Added some unit tests to many_to_one that verify deletion of related objects git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2040 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/modeltests/many_to_one/models.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/modeltests/many_to_one/models.py b/tests/modeltests/many_to_one/models.py index 14e143c9da..2874e9ba75 100644 --- a/tests/modeltests/many_to_one/models.py +++ b/tests/modeltests/many_to_one/models.py @@ -24,10 +24,13 @@ class Article(models.Model): API_TESTS = """ -# Create a Reporter. +# Create a few Reporters. >>> r = Reporter(first_name='John', last_name='Smith', email='john@example.com') >>> r.save() +>>> r2 = Reporter(first_name='Paul', last_name='Jones', email='paul@example.com') +>>> r2.save() + # Create an Article. >>> from datetime import datetime >>> a = Article(id=None, headline="This is a test", pub_date=datetime(2005, 7, 27), reporter=r) @@ -51,6 +54,10 @@ John's second story >>> new_article.reporter_id 1 +>>> new_article2 = r2.add_article(headline="Paul's story", pub_date=datetime(2006, 1, 17)) +>>> new_article2.reporter_id +2 + # Reporter objects have access to their related Article objects. >>> r.get_article_list(order_by=['pub_date']) [This is a test, John's second story] @@ -61,6 +68,9 @@ This is a test >>> r.get_article_count() 2 +>>> r2.get_article_count() +1 + # Get articles by id >>> Article.objects.get_list(id__exact=1) [This is a test] @@ -152,9 +162,21 @@ John Smith >>> Reporter.objects.get_list(articles__reporter__first_name__startswith='John', distinct=True) [John Smith] -# Delete requiring join is prohibited +# Deletes that require joins are prohibited. >>> Article.objects.delete(reporter__first_name__startswith='Jo') Traceback (most recent call last): ... TypeError: Joins are not allowed in this type of query + +# If you delete a reporter, his articles will be deleted. +>>> Article.objects.get_list(order_by=['headline']) +[John's second story, Paul's story, This is a test, This is a test, This is a test] +>>> Reporter.objects.get_list(order_by=['first_name']) +[John Smith, Paul Jones] +>>> r.delete() +>>> Article.objects.get_list(order_by=['headline']) +[Paul's story] +>>> Reporter.objects.get_list(order_by=['first_name']) +[Paul Jones] + """