From 35b1eb7a28f0a770ed70661ad11b4dc31f4f0579 Mon Sep 17 00:00:00 2001 From: Almad Date: Sun, 18 Aug 2024 17:42:07 +0200 Subject: [PATCH] Add test to signup, and disable transitions --- ddcz/forms/signup.py | 1 + ddcz/migrations/0002_auto_20240818_1740.py | 26 ++++++++ ddcz/models/used/users.py | 1 + ddcz/tests/test_ui/test_signup.py | 30 +++++---- static/common/css/registration.css | 71 +++++++++++----------- 5 files changed, 82 insertions(+), 47 deletions(-) create mode 100644 ddcz/migrations/0002_auto_20240818_1740.py diff --git a/ddcz/forms/signup.py b/ddcz/forms/signup.py index fbf6538c..7e7e506b 100644 --- a/ddcz/forms/signup.py +++ b/ddcz/forms/signup.py @@ -153,6 +153,7 @@ class Meta: "patron", "supporters", "description", + "age", ] def clean(self): diff --git a/ddcz/migrations/0002_auto_20240818_1740.py b/ddcz/migrations/0002_auto_20240818_1740.py new file mode 100644 index 00000000..11cc0e01 --- /dev/null +++ b/ddcz/migrations/0002_auto_20240818_1740.py @@ -0,0 +1,26 @@ +# Generated by Django 3.1.14 on 2024-08-18 15:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ddcz', '0001_initial-post-switch-setup'), + ] + + operations = [ + migrations.DeleteModel( + name='PutykaNeoblibene', + ), + migrations.AlterModelOptions( + name='awaitingregistration', + options={'verbose_name': 'Uživatel ke schválení', 'verbose_name_plural': 'Uživatelé ke schválení'}, + ), + migrations.AddField( + model_name='awaitingregistration', + name='age', + field=models.IntegerField(db_column='vek', default=0), + preserve_default=False, + ), + ] diff --git a/ddcz/models/used/users.py b/ddcz/models/used/users.py index eb7bc8f6..104d6452 100644 --- a/ddcz/models/used/users.py +++ b/ddcz/models/used/users.py @@ -305,6 +305,7 @@ class AwaitingRegistration(models.Model): name_family = models.CharField(max_length=40, db_column="prijmeni") gender = models.CharField(max_length=4, db_column="pohlavi") date = models.IntegerField(db_column="datum") + age = models.IntegerField(db_column="vek") patron = models.IntegerField(db_column="patron") supporters = models.IntegerField(db_column="primluvy") salutation = models.CharField( diff --git a/ddcz/tests/test_ui/test_signup.py b/ddcz/tests/test_ui/test_signup.py index 2fc2120c..cb77d510 100644 --- a/ddcz/tests/test_ui/test_signup.py +++ b/ddcz/tests/test_ui/test_signup.py @@ -4,6 +4,7 @@ from selenium.webdriver.support.ui import Select from .cases import SeleniumTestCase, MainPage +from ddcz.models import AwaitingRegistration class SignUpPage(Enum): @@ -25,9 +26,7 @@ def setUp(self): super().setUp() self.selenium.get("%s%s" % (self.live_server_url, "/registrace/")) - self.fill_valid_data() - - def fill_valid_data(self): + def fill_signup_form(self): self.nick = "přílišžluťoučkýkůňúělďábelskéó" self.el(SignUpPage.NICK).send_keys(self.nick) @@ -41,19 +40,26 @@ def fill_valid_data(self): Select(self.el(SignUpPage.GDPR)).select_by_value("T") - def test_submission(self): - # TODO: `text` does not contain the nick, and `get_css_attribute("::before") doesn't work + def assert_registration_saved(self): + self.assertEquals( + 1, AwaitingRegistration.objects.filter(nick=self.nick).count() + ) + awaiting_registration = AwaitingRegistration.objects.get(nick=self.nick) + self.assertEquals(self.nick, awaiting_registration.nick) + self.assertEquals(self.nick, awaiting_registration.name_given) + self.assertEquals(self.nick, awaiting_registration.name_family) + self.assertEquals(self.nick, awaiting_registration.salutation) + self.assertEquals(50, awaiting_registration.age) - # page_character_name = self.els(SignUpPage.CHARACTER_PARAGRAPHS)[0].text[ - # 0 : len(self.nick) - # ] - # self.assertEquals(self.nick, page_character_name) + def test_submission(self): + self.fill_signup_form() + # wait for transition + sleep(0.1) - # This should wait implicitly in the modern selenium, but if flaky, add explicit wait self.el(SignUpPage.POST_SUBMIT).click() - sleep(0.1) - self.assertEquals( f"Vítej ve Městě, {self.nick}!", self.el(MainPage.MAIN_TITLE).text ) + + self.assert_registration_saved() diff --git a/static/common/css/registration.css b/static/common/css/registration.css index 7702048f..577b3eaa 100644 --- a/static/common/css/registration.css +++ b/static/common/css/registration.css @@ -1,23 +1,23 @@ -#registration_page { - text-align: justify; - font-size: 1rem; - width: calc(100% - 10rem); - max-width: 1024px; - letter-spacing: 0.05em; - line-height: 1.5rem; - margin: 1rem auto; - padding: 2rem; - border-radius: 1rem; -} - -#registration_page .first_paragraph{ +#registration_page { + text-align: justify; + font-size: 1rem; + width: calc(100% - 10rem); + max-width: 1024px; + letter-spacing: 0.05em; + line-height: 1.5rem; + margin: 1rem auto; + padding: 2rem; + border-radius: 1rem; +} + +#registration_page .first_paragraph { text-indent: 0rem; } .caps { border: 0.2rem solid var(--page_txt_color); border-radius: 0.5rem; - float:left; + float: left; font-size: 3.5rem; line-height: 3.5rem; padding: .2rem 1rem; @@ -26,103 +26,104 @@ p.guard, p.merchant, -p.character{ +p.character { margin-left: 3rem; text-indent: 0rem; } p.guard::before, p.merchant::before, -p.character::before{ +p.character::before { font-weight: bolder; font-variant: small-caps; } -p.guard::before{ +p.guard::before { content: "Strážný Enda Bhůt: "; } -p.merchant::before{ +p.merchant::before { content: "Virga Tenson: "; } -.ds::before{ +.ds::before { content: "\201E"; } -.ds::after{ +.ds::after { content: "\201C"; } #registration_form input, -#registration_form select{ +#registration_form select { background: transparent; border: none; border-bottom: 3px solid var(--page_txt_color); text-align: center; } -#registration_form input[id="age"]{ +#registration_form input[id="age"] { width: 5rem; } -#registration_form textarea{ +#registration_form textarea { margin: 0rem auto; margin-left: 3rem; width: calc(31% - 3rem); } -#registration_form [id=gdpr]{ +#registration_form [id=gdpr] { text-align: left; width: calc(100% - 10rem); } -#registration_form span#drd{ +#registration_form span#drd { font-weight: bold; } -#registration_form .story_break{ +#registration_form .story_break { text-indent: 0rem; text-align: center; } -#registration_form #after_signature{ +#registration_form #after_signature { opacity: 0; transition: opacity 3s; } -#registration_form #sign{ +#registration_form #sign { text-align: right; vertical-align: middle; } -#registration_form #signature{ +#registration_form #signature { display: inline-block; - font-family: 'Great Vibes'; + font-family: 'Great Vibes', 'Arial', sans-serif; font-size: 6rem; line-height: 6rem; margin: 3rem 1rem; } -#registration_form #seal{ +#registration_form #seal { height: 12rem; float: right; } -#registration_form input[type=submit]{ +#registration_form input[type=submit] { width: calc(100% - 2rem); margin: 0rem; padding: 0.5rem 1rem; border: 2px outset var(--page_txt_color); - transition: background-color .5s, letter-spacing 1s; + /* transition disabled for now because it breaks layout */ + /* transition: background-color .5s, letter-spacing 1s; */ } -#registration_form input[type=submit]:hover{ +#registration_form input[type=submit]:hover { cursor: pointer; background-color: rgba(255, 255, 255, 0.2); border-style: inset; letter-spacing: .3rem; -} +} \ No newline at end of file