Zadanie #1850
Walidacja yelementu po stronie serwera
Status: | Zamknięty | Start date: | 2017-10-13 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | ||
Assignee: | Łukasz Waśkiewicz | % Done: | 100% | |
Category: | backend | |||
Target version: | 0.3 | |||
Developer: | Łukasz Waśkiewicz | Tester: | Jarosław Bąbel |
Description
Podczas save'owania należy zweryfikować poprawność elementu. Po otwarciu w UI, zapisany element powinien być zawsze poprawnie zwalidowany
Associated revisions
refs #1850 walidacja + testy
refs #1850 walidacja, poprawa na contributora bez identity
refs #1850 poprawa testu pod wymagania walidacji
refs #1850 poprawa cermine i testu pod wymagania walidacji
refs #1850 przeniesienie walidacji do stateMachineAction
refs #1850 przeniesienie walidacji do stateMachineAction, poprawka
refs #1850 poprawa komunikatów
refs #1850 poprawa konfiguracji dla fullWorkflow
refs #1850 przetwarzanie name.type i YLanguage.undefined
refs #1850 poprawki przetwarzania type w name i description
refs #1850 poprawa IT, optymalizacja kasowania z infony
refs #1850 poprawki przetwarzania type w description
refs #1850: Poprawienie identyfikatorów. Dodanie walidacji na tagach
Musiałem podbić wersję material i przepiąć się na mat-chips. Drugą
bardzo istotną zmianą było dodanie w text-field.component funkcji
registerOnChange i registerOnDisabledChange na FormArray - będzie można
to usunąć, gdy bug na material zostanie poprawiony
refs #1850: Podbicie mdl-select
History
#1 Updated by Michał Komar over 7 years ago
- Description updated (diff)
- Category set to backend
- Assignee set to Łukasz Waśkiewicz
- Target version set to 0.3
- Developer Łukasz Waśkiewicz added
- Tester Michał Komar added
#2 Updated by Łukasz Waśkiewicz over 7 years ago
- Status changed from Nowy to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Michał Komar
- % Done changed from 0 to 100
#3 Updated by Łukasz Waśkiewicz over 7 years ago
walidacja przeniesiona do stateMachine
#4 Updated by Michał Komar over 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Michał Komar to Łukasz Waśkiewicz
Podczas serializacji do jsona należy odpowiednio przetworzyć language -> żeby undefined się nullował. Dodatkowo, gdy typ jest null, żeby ustawiać go na canonical.
Dodać ładniejsze opisy błędów, żeby dało się po informacji z wyjątku, mniej więcej określić o jakie pole chodzi -> może dałoby się stworzyć coś w stylu breadcrumba?
#5 Updated by Łukasz Waśkiewicz over 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Michał Komar
poprawione
#6 Updated by Michał Komar over 7 years ago
- Assignee changed from Michał Komar to Jarosław Bąbel
#7 Updated by Jarosław Bąbel about 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Jarosław Bąbel to Michał Komar
Sam mechanizm walidacji po stronie serwera jest ok, uruchamia się, zatrzymuje i loguje na pierwszym błędzie, działa też przy importach.
Jednak mam za mało wiedzy o projekcie, żeby rozumieć jak powinny działać poszczególne walidatory. Trzeba znać założenia i dobrze rozumieć jak działa walidacja w UI. Nie ma sensu, żebym się Was pytał o każdy walidator osobno, jak jest zbudowany w UI i dlaczego sprawdza to, a nie co innego.
Ewentualnie podpowiedz proszę jak do tego podejść.
#8 Updated by Michał Komar about 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Michał Komar to Jarosław Bąbel
Spróbuj edytować różne pola w dokumencie - jeżeli zapis się uda, nigdy nie powinno się zdarzyć, że podczas wyświetlania będzie błąd walidacji. W tym momencie walidacja po stronie klienta jest uboższa, więc można próbować zapisywać elementy, które powinny zwrócić błąd. Wcześniej błędy na UI powodowały zapisanie błędnych danych i wszystko się rozjeżdżało - walidacja po stronie serwera ma przeciwdziałać takim sytuacjom, szczególnie, że w przyszłości będzie można wołać API bezpośrednio.
#9 Updated by Jarosław Bąbel about 7 years ago
- Status changed from Testowanie to Odpowiedź
W okolicy walidacji po stronie UI i serwera znalazłem poniższe problemy:
- można uruchomić zapis elementu z pustym słowem kluczowym (wybrać język i zostawić pustą wartość) - prawidłowo pojawia się okno "błąd serwera" (tutaj brak walidacji UI)
- problemy z datami:
- można uruchomić zapis elementu z datą z przyszłości - pojawia się okno "błąd serwera"
- w dzień 14.12.2017 walidacja po stronie serwera akceptuje daty do końca 12.2017, dopiero 01.01.2018 jest odrzucany przez walidację serwera jako data z przyszłości
- nie można zapisać daty 31.12.2017 - błąd serwera, błędna data (inny błąd niż przy dacie z przyszłości):
YDate.value is invalid at pl.edu.icm.jupiter.services.storage.validation.ElementDatesValidator.validate(ElementDatesValidator.java:46)
- poniższe typy identyfikatorów są dopuszczalne przez UI dla artykułu, ale są odrzucane przez walidację serwera jako
YId.schema is not supported at pl.edu.icm.jupiter.services.storage.validation.ElementIdsValidator.validate(ElementIdsValidator.java:72)
- BwMeta
- Mhp
- BazTechImport
- Ovid Import
- Icm
- BazTech
#10 Updated by Jarosław Bąbel about 7 years ago
- Assignee changed from Jarosław Bąbel to Michał Komar
#11 Updated by Michał Komar about 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Michał Komar to Jarosław Bąbel
- Tester Jarosław Bąbel added
Identyfikatory poprawione. W przypadku dat zostanie wyłączona walidacja. Dodałem też walidację tagów. Można przetestować.
#12 Updated by Jarosław Bąbel about 7 years ago
- Status changed from Testowanie to Rozwiązany
- Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz
#13 Updated by Łukasz Waśkiewicz about 7 years ago
- Status changed from Rozwiązany to Zamknięty