From c15eeb6e644a1e513996772fb9f5d3e43240894e Mon Sep 17 00:00:00 2001 From: KarolG Date: Thu, 6 Jul 2023 02:44:49 +0200 Subject: [PATCH] Wrote unit tests, added styling, deleted garbage, fixed small stuff --- .../templates/menu/custom_main_menu.html | 1 - artel/setup/forms.py | 3 +- artel/setup/templates/skin_changer.html | 59 +++++++------ artel/setup/tests.py | 82 ++++++++++++++++++- artel/setup/views.py | 29 ++++--- 5 files changed, 134 insertions(+), 40 deletions(-) diff --git a/artel/artel/templates/menu/custom_main_menu.html b/artel/artel/templates/menu/custom_main_menu.html index 9dcc3c4..1a01b8f 100644 --- a/artel/artel/templates/menu/custom_main_menu.html +++ b/artel/artel/templates/menu/custom_main_menu.html @@ -25,5 +25,4 @@ {% if store_enabled %} Koszyk {% endif %} - TEST diff --git a/artel/setup/forms.py b/artel/setup/forms.py index 57d5f24..75b83a2 100644 --- a/artel/setup/forms.py +++ b/artel/setup/forms.py @@ -44,5 +44,6 @@ class SkinChangerForm(forms.Form): background_color = ColorField(samples=COLOR_PALETTE) font_color = ColorField(samples=COLOR_PALETTE) - button_color = ColorField(samples=COLOR_PALETTE) + hr_color = ColorField(samples=COLOR_PALETTE) link_color = ColorField(samples=COLOR_PALETTE) + hover_on_link_color = ColorField(samples=COLOR_PALETTE) diff --git a/artel/setup/templates/skin_changer.html b/artel/setup/templates/skin_changer.html index 6205868..f6d82da 100644 --- a/artel/setup/templates/skin_changer.html +++ b/artel/setup/templates/skin_changer.html @@ -1,29 +1,42 @@ {% extends 'base.html' %} {% block content %} -
- {% csrf_token %} -
- - +
+
+
+
+ + {% csrf_token %} + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
- - -
- -
- -
- - -
- -
- - -
- - - +
{% endblock content %} diff --git a/artel/setup/tests.py b/artel/setup/tests.py index a035c1c..ee066f1 100644 --- a/artel/setup/tests.py +++ b/artel/setup/tests.py @@ -2,8 +2,8 @@ from django.test import TestCase from django.urls import reverse import json import os - -from .forms import SiteConfigurationForm +from .forms import SiteConfigurationForm, SkinChangerForm +from .views import generate_css_content class SetupPageViewTestCase(TestCase): @@ -13,12 +13,14 @@ class SetupPageViewTestCase(TestCase): self.assertIsInstance(response.context['form'], SiteConfigurationForm) def test_post_valid_form(self): + logo_path = '/app/artel/static/images/icons/las_ruinas_PL.png' logo_file = open(logo_path, 'rb') form_data = { 'logo': logo_file, 'shop_enabled': False, - 'navbar_position': 'left' + 'navbar_position': 'left', + 'skin': 'dark', } response = self.client.post(reverse('setup'), data=form_data, follow=True) self.assertEqual(response.status_code, 200) @@ -30,6 +32,7 @@ class SetupPageViewTestCase(TestCase): self.assertEqual(json_data['logo'], 'media/images/icons/las_ruinas_PL.png') self.assertFalse(json_data['shop_enabled']) self.assertEqual(json_data['navbar_position'], 'left') + self.assertEqual(json_data['skin'], 'dark') os.remove('config.json') def test_post_invalid_form(self): @@ -37,7 +40,6 @@ class SetupPageViewTestCase(TestCase): response = self.client.post(reverse('setup'), data=form_data) self.assertEqual(response.status_code, 200) self.assertFalse(os.path.exists('config.json')) - self.assertContains(response, 'This field is required') class CheckSetupMiddlewareTestCase(TestCase): @@ -62,9 +64,81 @@ class SetupContextProcessorTestCase(TestCase): settings.NAVBAR_POSITION = 'left' settings.LOGO = 'media/images/icons/logo.png' settings.SHOP_ENABLED = True + settings.SKIN = 'none' response = self.client.get(reverse('setup')) self.assertEqual(response.status_code, 200) self.assertEqual(response.context['navbar_position'], 'left') self.assertEqual(response.context['logo_url'], 'media/images/icons/logo.png') self.assertTrue(response.context['shop_enabled']) + self.assertEqual(response.context['skin'], 'none') + + +class SkinChangerViewTest(TestCase): + def test_get_request(self): + if not os.path.exists('config.json'): + with open('config.json', 'w') as file: + file.write('{}') + response = self.client.get(reverse('skin')) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'skin_changer.html') + self.assertIsInstance(response.context['form'], SkinChangerForm) + os.remove('config.json') + + def test_post_request_with_valid_form(self): + if not os.path.exists('config.json'): + with open('config.json', 'w') as file: + file.write('{}') + form_data = { + 'background_color': '#FFFFFF', + 'font_color': '#000000', + 'hr_color': '#FFFFFF', + 'link_color': '#000000', + 'hover_on_link_color': '#FFFFFF', + } + response = self.client.post(reverse('skin'), form_data) + self.assertEqual(response.status_code, 302) + self.assertRedirects(response, '/') + os.remove('config.json') + + def test_post_request_with_invalid_form(self): + if not os.path.exists('config.json'): + with open('config.json', 'w') as file: + file.write('{}') + form_data = {} + response = self.client.post(reverse('skin'), form_data) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'skin_changer.html') + self.assertIsInstance(response.context['form'], SkinChangerForm) + os.remove('config.json') + + +class GenerateCSSContentTest(TestCase): + def test_generate_css_content(self): + form_data = { + 'background_color': '#FFFFFF', + 'font_color': '#000000', + 'hr_color': '#FFFFFF', + 'link_color': '#000000', + 'hover_on_link_color': '#FFFFFF', + } + expected_css_content = """ + body { + background-color: #FFFFFF; + color: #000000; + } + + hr { + background-color: #FFFFFF; + } + + a[href] { + color: #000000; + } + + a[href]:hover { + color: #FFFFFF; + } + """ + css_content = generate_css_content(form_data) + self.assertEqual(css_content, expected_css_content) diff --git a/artel/setup/views.py b/artel/setup/views.py index 5095405..1b84e74 100644 --- a/artel/setup/views.py +++ b/artel/setup/views.py @@ -24,11 +24,12 @@ class SetupPageView(View): form_data['logo'] = None json_data = json.dumps(form_data, indent=4) - with open('config.json', 'w') as file: file.write(json_data) + if form_data['skin'] == 'custom': return redirect('/skins') + return redirect('/') else: return render(request, self.template_name, {'form': form}) @@ -45,13 +46,13 @@ class SkinChangerView(View): form = SkinChangerForm(request.POST) if form.is_valid(): form_data = form.data - css_content = generate_css_content(form_data) - file_name = 'custom.css' - css_file_path = os.path.join(settings.MEDIA_ROOT, 'css', file_name) - with open(css_file_path, 'w') as css_file: - css_file.write(css_content) - return redirect('/') - else: + if form_data: + css_content = generate_css_content(form_data) + file_name = 'custom.css' + css_file_path = os.path.join(settings.MEDIA_ROOT, 'css', file_name) + with open(css_file_path, 'w') as css_file: + css_file.write(css_content) + return redirect('/') return render(request, self.template_name, {'form': form}) @@ -61,11 +62,17 @@ def generate_css_content(form_data): background-color: {form_data['background_color']}; color: {form_data['font_color']}; }} - .btn {{ - background-color: {form_data['button_color']}; + + hr {{ + background-color: {form_data['hr_color']}; }} - a {{ + + a[href] {{ color: {form_data['link_color']}; }} + + a[href]:hover {{ + color: {form_data['hover_on_link_color']}; + }} """ return css_content