Skip to content

Commit 3a4a78e

Browse files
authored
Merge pull request #536 from bast0006/fix-nitro-message
Adjust Message model to support new nitro messages with over 4000 chars
2 parents 5f1ab78 + abccdba commit 3a4a78e

File tree

3 files changed

+58
-2
lines changed

3 files changed

+58
-2
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.0.14 on 2021-06-24 14:45
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0070_auto_20210618_2114'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='deletedmessage',
15+
name='content',
16+
field=models.CharField(blank=True, help_text='The content of this message, taken from Discord.', max_length=4000),
17+
),
18+
]

pydis_site/apps/api/models/bot/message.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class Message(ModelReprMixin, models.Model):
4343
verbose_name="Channel ID"
4444
)
4545
content = models.CharField(
46-
max_length=2_000,
46+
max_length=4_000,
4747
help_text="The content of this message, taken from Discord.",
4848
blank=True
4949
)

pydis_site/apps/api/tests/test_models.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import datetime as dt
22

3-
from django.test import SimpleTestCase
3+
from django.core.exceptions import ValidationError
4+
from django.test import SimpleTestCase, TestCase
45
from django.utils import timezone
56

67
from pydis_site.apps.api.models import (
@@ -34,6 +35,43 @@ def test_shows_attributes(self):
3435
self.assertEqual(repr(self.klass), expected)
3536

3637

38+
class NitroMessageLengthTest(TestCase):
39+
def setUp(self):
40+
self.user = User.objects.create(id=50, name='bill', discriminator=5)
41+
self.context = MessageDeletionContext.objects.create(
42+
id=50,
43+
actor=self.user,
44+
creation=dt.utcnow()
45+
)
46+
47+
def test_create(self):
48+
message = DeletedMessage(
49+
id=46,
50+
author=self.user,
51+
channel_id=666,
52+
content="w"*4000,
53+
deletion_context=self.context,
54+
embeds=[]
55+
)
56+
57+
try:
58+
message.clean_fields()
59+
except Exception as e: # pragma: no cover
60+
self.fail(f"Creation of message of length 3950 failed with: {e}")
61+
62+
def test_create_failure(self):
63+
message = DeletedMessage(
64+
id=47,
65+
author=self.user,
66+
channel_id=666,
67+
content="w"*4001,
68+
deletion_context=self.context,
69+
embeds=[]
70+
)
71+
72+
self.assertRaisesRegex(ValidationError, "content':", message.clean_fields)
73+
74+
3775
class StringDunderMethodTests(SimpleTestCase):
3876
def setUp(self):
3977
self.nomination = Nomination(

0 commit comments

Comments
 (0)