Zadanie #1850

Walidacja yelementu po stronie serwera

Added by Michał Komar over 6 years ago. Updated over 6 years ago.

Status:ZamkniętyStart date:2017-10-13
Priority:NormalnyDue 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

Revision 7a614a10
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 walidacja + testy

Revision 4fb4e212
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 walidacja, poprawa na contributora bez identity

Revision 89d6a539
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 poprawa testu pod wymagania walidacji

Revision d02fac35
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 poprawa cermine i testu pod wymagania walidacji

Revision f719ad30
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 przeniesienie walidacji do stateMachineAction

Revision e7b2c515
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 przeniesienie walidacji do stateMachineAction, poprawka

Revision 9cad71e1
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 poprawa komunikatów

Revision 93642931
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 poprawa konfiguracji dla fullWorkflow

Revision d3c47152
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 przetwarzanie name.type i YLanguage.undefined

Revision 88947331
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 poprawki przetwarzania type w name i description

Revision 3b1aa239
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 poprawa IT, optymalizacja kasowania z infony

Revision 231bcf7d
Added by Łukasz Waśkiewicz over 6 years ago

refs #1850 poprawki przetwarzania type w description

Revision f7a7fc5c
Added by Michał Komar over 6 years ago

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

Revision bd920596
Added by Michał Komar over 6 years ago

refs #1850: Podbicie mdl-select

History

#1 Updated by Michał Komar over 6 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 6 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 6 years ago

walidacja przeniesiona do stateMachine

#4 Updated by Michał Komar over 6 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 6 years ago

  • Status changed from Odpowiedź to Testowanie
  • Assignee changed from Łukasz Waśkiewicz to Michał Komar

poprawione

#6 Updated by Michał Komar over 6 years ago

  • Assignee changed from Michał Komar to Jarosław Bąbel

#7 Updated by Jarosław Bąbel over 6 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 over 6 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 over 6 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:
    1. można uruchomić zapis elementu z datą z przyszłości - pojawia się okno "błąd serwera"
    2. 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
    3. 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)
    
    1. BwMeta
    2. Mhp
    3. BazTechImport
    4. Ovid Import
    5. Icm
    6. BazTech

#10 Updated by Jarosław Bąbel over 6 years ago

  • Assignee changed from Jarosław Bąbel to Michał Komar

#11 Updated by Michał Komar over 6 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 over 6 years ago

  • Status changed from Testowanie to Rozwiązany
  • Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz

Testowane na wersji 3fcd96a.

Temat wyłączenia walidacji dat przeniesiony do #1923.
Przy okazji znaleziony błąd z usuwaniem słów kluczowych #1924.

#13 Updated by Łukasz Waśkiewicz over 6 years ago

  • Status changed from Rozwiązany to Zamknięty

Also available in: Atom PDF