From dc384710b22266e5f4941387af201904eb443b7f Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Mon, 4 Jul 2022 21:47:59 +0100 Subject: [PATCH] Add collection model --- flangr/posts/migrations/0003_collection.py | 33 ++++++++++++++++++++++ flangr/posts/models.py | 10 +++++++ flangr/posts/tests.py | 29 +++++++++++-------- 3 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 flangr/posts/migrations/0003_collection.py diff --git a/flangr/posts/migrations/0003_collection.py b/flangr/posts/migrations/0003_collection.py new file mode 100644 index 0000000..4191259 --- /dev/null +++ b/flangr/posts/migrations/0003_collection.py @@ -0,0 +1,33 @@ +# Generated by Django 4.0.5 on 2022-07-04 20:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("posts", "0002_alter_post_body_alter_post_title"), + ] + + operations = [ + migrations.CreateModel( + name="Collection", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.CharField(max_length=255)), + ("description", models.TextField()), + ( + "posts", + models.ManyToManyField(related_name="collections", to="posts.post"), + ), + ], + ), + ] diff --git a/flangr/posts/models.py b/flangr/posts/models.py index e2b24e2..63c5e33 100644 --- a/flangr/posts/models.py +++ b/flangr/posts/models.py @@ -13,3 +13,13 @@ class Post(models.Model): def __str__(self): return f"Post: {self.title} at {self.posted.strftime('%Y-%m-%d %H:%S')}" + + +class Collection(models.Model): + title = models.CharField(max_length=255) + description = models.TextField() + + posts = models.ManyToManyField("Post", related_name="collections") + + def __str__(self): + return f"Collection: {self.title}" diff --git a/flangr/posts/tests.py b/flangr/posts/tests.py index d0d72fa..94ded9b 100644 --- a/flangr/posts/tests.py +++ b/flangr/posts/tests.py @@ -3,24 +3,29 @@ import os from django.test import TestCase from django.core.files import File -from .models import Post +from .models import Post, Collection # Create your tests here. -class TestPostModelTests(TestCase): - def test_can_create_model(self): +class TestModelTests(TestCase): + def setUp(self): with open( os.path.join(os.path.dirname(__file__), "test_data", "test_img.png"), mode="rb", ) as f: - try: - p = Post.objects.create( - img=File(f, "somefile.png"), - title="Foobar", - body="Some file", - ) + self.post = Post.objects.create( + img=File(f, "somefile.png"), + title="Foobar", + body="Some file", + ) - self.assertIn("Foobar", str(p)) - finally: - p.img.delete() + def tearDown(self): + self.post.img.delete() + + def test_post_has_sensible_str(self): + self.assertIn("Foobar", str(self.post)) + + def test_collection_has_sensible_str(self): + col = Collection.objects.create(title="A collection", description="foobar") + self.assertIn("A collection", str(col))