Wrote unit tests, added styling, deleted garbage, fixed small stuff

feature/optionalization
KarolG 2023-07-06 02:44:49 +02:00
rodzic 70a5b8723c
commit c15eeb6e64
5 zmienionych plików z 134 dodań i 40 usunięć

Wyświetl plik

@ -25,5 +25,4 @@
{% if store_enabled %}
<a href={% url 'cart' %} alt="Koszyk" > Koszyk </a>
{% endif %}
<a href="/" alt="TEST"> TEST </a>
</div>

Wyświetl plik

@ -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)

Wyświetl plik

@ -1,29 +1,42 @@
{% extends 'base.html' %}
{% block content %}
<form method='POST'>
{% csrf_token %}
<div class="form-group mb-4">
<label for="{{ form.background_color.id_for_label }}">Background Color</label>
<input type="color" name="background_color" value="{{ form.background_color.value }}">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="border p-4">
<form method='POST'>
{% csrf_token %}
<div class="form-group mb-4">
<label for="{{ form.background_color.id_for_label }}">Background Color</label>
<input type="color" name="background_color" value="{{ form.background_color.value }}">
</div>
<div class="form-group mb-4">
<label for="{{ form.font_color.id_for_label }}">Font Color</label>
<input type="color" name="font_color" value="{{ form.font_color.value }}">
</div>
<div class="form-group mb-4">
<label for="{{ form.hr_color.id_for_label }}">HR Color</label>
<input type="color" name="hr_color" value="{{ form.hr_color.value }}">
</div>
<div class="form-group mb-4">
<label for="{{ form.link_color.id_for_label }}">Link Color</label>
<input type="color" name="link_color" value="{{ form.link_color.value }}">
</div>
<div class="form-group mb-4">
<label for="{{ form.hover_on_link_color.id_for_label }}">Hover on link Color</label>
<input type="color" name="hover_on_link_color" value="{{ form.hover_on_link_color.value }}">
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
</div>
<div class="form-group mb-4">
<label for="{{ form.font_color.id_for_label }}">Font Color</label>
<input type="color" name="font_color" value="{{ form.font_color.value }}">
</div>
<div class="form-group mb-4">
<label for="{{ form.button_color.id_for_label }}">Button Color</label>
<input type="color" name="button_color" value="{{ form.button_color.value }}">
</div>
<div class="form-group mb-4">
<label for="{{ form.link_color.id_for_label }}">Link Color</label>
<input type="color" name="link_color" value="{{ form.link_color.value }}">
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
{% endblock content %}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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