Jak przetestować format danych w bazie danych ?

Jak przetestować format danych w bazie danych ?
PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 69
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 ?

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
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.

PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 69
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 ?

markone_dev
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 833
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.

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 681
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.

EH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1208
0

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

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8488
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…

CH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 449
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.

EH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1208
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.