87 wiersze
4.0 KiB
Python
87 wiersze
4.0 KiB
Python
|
from django.test import TestCase
|
||
|
from django.urls import reverse
|
||
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
||
|
|
||
|
from setup import models as setup_models
|
||
|
from store import SHOP_ESSENTIAL_MAIL_TEMPLATES
|
||
|
from mailings.models import MailTemplate
|
||
|
|
||
|
|
||
|
TEST_IMAGE = (
|
||
|
b'\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x00\x00\x00\x21\xf9\x04'
|
||
|
b'\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02'
|
||
|
b'\x02\x4c\x01\x00\x3b'
|
||
|
)
|
||
|
|
||
|
|
||
|
class SetupTestCase(TestCase):
|
||
|
def test_get_setup_first_step_get_success(self):
|
||
|
response = self.client.get(reverse('setup-page'))
|
||
|
self.assertEqual(response.status_code, 200)
|
||
|
self.assertTemplateUsed(response, 'setup/config.html')
|
||
|
|
||
|
def test_post_setup_first_step_post_success_shop_enabled(self):
|
||
|
response = self.client.post(reverse('setup-page'), data={
|
||
|
"logo": SimpleUploadedFile('filename.png', content=TEST_IMAGE, content_type='image/jpeg'),
|
||
|
"navbar_position": setup_models.NavbarPosition.LEFT.value,
|
||
|
"shop_enabled": True
|
||
|
})
|
||
|
self.assertEqual(response.status_code, 302)
|
||
|
self.assertEqual(response.url, reverse('setup-mailings'))
|
||
|
self.assertEqual(setup_models.ComfyConfig.objects.count(), 1)
|
||
|
config = setup_models.ComfyConfig.objects.first()
|
||
|
self.assertEqual(config.navbar_position, setup_models.NavbarPosition.LEFT.value)
|
||
|
self.assertEqual(config.shop_enabled, True)
|
||
|
self.assertEqual(config.logo.read(), TEST_IMAGE)
|
||
|
self.assertFalse(config.active)
|
||
|
|
||
|
def test_post_setup_first_step_post_success_shop_disabled(self):
|
||
|
response = self.client.post(reverse('setup-page'), data={
|
||
|
"logo": SimpleUploadedFile('filename.png', content=TEST_IMAGE, content_type='image/jpeg'),
|
||
|
"navbar_position": setup_models.NavbarPosition.LEFT.value,
|
||
|
"shop_enabled": False
|
||
|
})
|
||
|
self.assertEqual(response.status_code, 302)
|
||
|
self.assertEqual(response.url, reverse('setup-complete'))
|
||
|
self.assertEqual(setup_models.ComfyConfig.objects.count(), 1)
|
||
|
config = setup_models.ComfyConfig.objects.first()
|
||
|
self.assertEqual(config.navbar_position, setup_models.NavbarPosition.LEFT.value)
|
||
|
self.assertEqual(config.shop_enabled, False)
|
||
|
self.assertEqual(config.logo.read(), TEST_IMAGE)
|
||
|
self.assertFalse(config.active)
|
||
|
|
||
|
def test_post_setup_first_step_post_failure(self):
|
||
|
response = self.client.post(reverse('setup-page'), data={
|
||
|
"logo": "",
|
||
|
"navbar_position": setup_models.NavbarPosition.LEFT.value,
|
||
|
"shop_enabled": True
|
||
|
})
|
||
|
self.assertEqual(response.status_code, 200)
|
||
|
self.assertEqual(setup_models.ComfyConfig.objects.count(), 0)
|
||
|
self.assertTemplateUsed(response, 'setup/config.html')
|
||
|
self.assertFormError(response, 'form', 'logo', 'This field is required.')
|
||
|
|
||
|
def test_get_email_config_success(self):
|
||
|
response = self.client.get(reverse('setup-mailings'))
|
||
|
self.assertEqual(response.status_code, 200)
|
||
|
self.assertTemplateUsed(response, 'setup/mailing.html')
|
||
|
|
||
|
def test_post_email_config_success(self):
|
||
|
response = self.client.post(reverse('setup-mailings'), data={
|
||
|
key: SimpleUploadedFile(
|
||
|
f'{key}.html', content=b'<html></html>', content_type='text/html'
|
||
|
) for key, _ in SHOP_ESSENTIAL_MAIL_TEMPLATES.items()
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(response.status_code, 302)
|
||
|
self.assertEqual(response.url, reverse('setup-complete'))
|
||
|
self.assertEqual(MailTemplate.objects.count(), 3)
|
||
|
self.assertEqual(MailTemplate.objects.filter(template_name__in=SHOP_ESSENTIAL_MAIL_TEMPLATES.keys()).count(), 3)
|
||
|
|
||
|
def test_post_email_config_failure(self):
|
||
|
response = self.client.post(reverse('setup-mailings'))
|
||
|
self.assertEqual(response.status_code, 200)
|
||
|
self.assertEqual(MailTemplate.objects.count(), 0)
|
||
|
self.assertTemplateUsed(response, 'setup/mailing.html')
|
||
|
self.assertFormError(response, 'form', None, None, 'This field is required.')
|