Jak przetestować format danych w bazie danych ?

0

Cześć, w jaki sposób mogę podczas testów w Laravel sprawdzić czy dane kolumnie jakiejś tabeli są wstawiane według pewnego formatu ? Np chce sprawdzić czy numer telefonu w bazie danych jest w formacie 111-111-111. czy jest do tego jakaś assercja ?

2
phpowiec napisał(a):

Cześć, w jaki sposób mogę podczas testów w Laravel sprawdzić czy dane kolumnie jakiejś tabeli są wstawiane według pewnego formatu ? Np chce sprawdzić czy numer telefonu w bazie danych jest w formacie 111-111-111. czy jest do tego jakaś assercja ?

Taki test nie za bardzo ma sens, nie potrzebujesz sprawdzać co siedzi w bazie.

0
Riddle napisał(a):
phpowiec napisał(a):

Cześć, w jaki sposób mogę podczas testów w Laravel sprawdzić czy dane kolumnie jakiejś tabeli są wstawiane według pewnego formatu ? Np chce sprawdzić czy numer telefonu w bazie danych jest w formacie 111-111-111. czy jest do tego jakaś assercja ?

Taki test nie za bardzo ma sens, nie potrzebujesz sprawdzać co siedzi w bazie.

To jak wprowadzam numer w formacie 111222333 to jak mogę sprawdzić czy zapisał się w formacie 111-222-333 ?

3

Wygląda mi to na próbę implementacji logiki po stronie bazy danych co nie jest dobrą opcją i tak jak napisał @Riddle nie powinieneś tego robić. Konwersja typu/formatu powinna odbywać się po stronie aplikacji.

Ale jeżeli się upierasz to rozwiązaniem byłby test integracyjny w którym pod spodem masz prawdziwą bazę danych lub jakąś wersję in-memory o ile istnieje. W teście wstawiasz do bazy rekord zawierający wspomniany numer i po zapisie pobierasz ten rekord i sprawdzasz czy ma format taki jaki oczekujesz.

0

Jeżeli koniecznie chcesz to robić po stronie bazy, co CZASAMI może mieć sens w specyficznych przypadkach to możesz to zrobić przez wyzwalacz / trigger odpalany przed stawieniem danych (BEFORE INSERT) lub przed edycją danych (BEFORE UPDATE) który przy pomocy odpowiedniej funkcji np. języka PL/SQL sprawdzi czy format jest odpowiedni i dopuści lub nie dopuści do wstawienia lub edycji danych.

0

assertDatabaseHas - sprawdzasz czy podane wartości łącznie występują w jakimś rekordzie. https://laravel.com/docs/10.x/database-testing#available-assertions

1
phpowiec napisał(a):

Cześć, w jaki sposób mogę podczas testów w Laravel sprawdzić czy dane kolumnie jakiejś tabeli są wstawiane według pewnego formatu ? Np chce sprawdzić czy numer telefonu w bazie danych jest w formacie 111-111-111. czy jest do tego jakaś assercja

Skąd ci się wzięło 111-111-111? Wydaje się jak błąd na poziomie samych założeń, że numer telefonu musi mieć 9 cyfr i że będzie się je oddzielać w ten sposób.

Może dla polskich komórek się to sprawdzi, ale telefony mogą być zagraniczne, stacjonarne…

0

do bazy wrzucasz normalnei numer np ciagly. gdy wpisujesz numer to w polu do wpisywania zakladasz filtr ktory zmienia ci numer na dany format wizualnie, albo jak pobierasz z bazy to dajesz do filtra wlasnego ktory wysle to do widoku, albo do textfield ktory ma juz filtr np gdy edytujesz kontakt.

1

@chomikowski: lepiej custom accessora jeśli już. To jest laravel :p

1 użytkowników online, w tym zalogowanych: 0, gości: 1