Regulní výraz pro flash zprávy | mrtnzlml/testbench

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Iva Phamová
Člen | 6
+
0
-

Přeji krásný sluníčkový den.
Při brouzdání a pročítání článků na tomto fóru jsem narazila na rozšíření pro nette tester a to mrtnzlml/testbench.
Zkusila jsem si otestovat formulář pro přihlašování uživatelů s následujícím kódem.

$this->checkForm('Sign:in', 'login', [data v mětodě post], 'sem nevím, co napsat');

Jelikož nejsem ještě tolik zběhlá v PHP, tak mi dělá problém napsat regulární výraz pro url, kterou generuje nette pro flash zprávy.
Zkoušela jsem tam hodit nějaký svůj výtvor, ale bez úspěchu. (/[=?_a-zA-Z0–9]+)
Redirect má být normálně na Homepage:default, což funguje. V phpstormu mi to vyhazuje následující chybu.

Failed:   path '/[=?_a-zA-Z0-9]+' doesn't match
'http://localeshop.cz/?_fid=o0ZK'
after redirect in testSignInForm()

Mohla bych váš poprosit, jestli byste mi napsali ten regulární výraz, co tam mám napsat?
Děkuji moc!

  • Iva

Editoval Iva Phamová (6. 8. 2017 17:37)

Tharos
Člen | 1030
+
+1
-

Vyzkoušej tohle:

$this->checkForm('Sign:in', 'login', [data v mětodě post], '/\?_fid=[a-zA-Z0-9]+');

Myslím, že by to mělo fungovat (propluje to sem )…

Iva Phamová
Člen | 6
+
0
-

Díky moc za odpověď, ale bohužel mi to nefunguje :(
Opět vyskočí chybová hláška:

Failed:   path '/\?_fid=[a-zA-Z0-9]+' doesn't match
'http://localeshop.cz/?_fid=nk3p'
after redirect in testSignInForm()

Editoval Iva Phamová (6. 8. 2017 23:09)

Iva Phamová
Člen | 6
+
0
-

Popřípadě čím testujete třeba formuláře? Našla jsem na internetu tuhle knihovnu , ale nevím, zda je to ta správná volba.
Opravdu bych potřebovala začít psát ty testy.

Editoval Iva Phamová (7. 8. 2017 9:06)

matopeto
Člen | 395
+
+2
-

Je nutne testovat vobec to presmerovanie az do urovne kontroly fidu? podla mna nie :)

regex bohuzial nejde preto lebo path je prazdna pripadne / a to ostatne je query, co ten framework nekontroluje.

Takze zadaj iba: $this->checkForm('Sign:in', 'login', [data v mětodě post]);

Editoval matopeto (7. 8. 2017 9:45)

Iva Phamová
Člen | 6
+
0
-

Nechala jsem to bez toho posledního parametru a stejně to neprojde :/

Failed:   path '/' doesn't match
'http://localeshop.cz/?_fid=5slq'
after redirect in testSignInForm()
Tharos
Člen | 1030
+
+1
-

Chtělo by ve tvém projektu nastavit breakpoint debuggeru na tento řádek a podívat se, co přesně za hodnoty tam přijde.

Je to totiž takové trochu zvláštní, protože když si vydestiluji bokem tohle, tak to funguje podle očekávání:

$url = 'http://test.bench/?_fid=nk3p';

$path = '/\?_fid=[a-zA-Z0-9]+';

var_dump(\Tester\Assert::isMatching("~^https?://test\.bench{$path}(?(?=\?).+)$~", $url));
// bool(true)

Chtěl jsem si tu tvou chybku nasimulovat lokálně, ale když jsem nainstaloval přes Composer aktuální nette/web-project, tak ten si s mrtnzlml/testbench bohužel nerozumí…

Problem 1
    - mrtnzlml/testbench v2.4.2 requires nette/tester 2.0.x-dev as v1.7 -> satisfiable by nette/tester[2.0.x-dev] but these conflict with your requirements or minimum-stability.
    - mrtnzlml/testbench v2.4.1 requires nette/tester 2.0.x-dev as v1.7 -> satisfiable by nette/tester[2.0.x-dev] but these conflict with your requirements or minimum-stability.
    - mrtnzlml/testbench v2.4 requires nette/tester 2.0.x-dev as v1.7 -> satisfiable by nette/tester[2.0.x-dev] but these conflict with your requirements or minimum-stability.
    - Installation request for mrtnzlml/testbench ^2.4 -> satisfiable by mrtnzlml/testbench[v2.4, v2.4.1, v2.4.2].
matopeto
Člen | 395
+
+2
-

Problem vidim i v tom ze ten test banch testuje napevno url: https?://test\.bench ale vam to chodi na localeshop.cz nebude problem v konfiguracii?

Editoval matopeto (7. 8. 2017 10:44)

Iva Phamová
Člen | 6
+
+2
-

Aha … tak už vím kde byla chyba. Opravdu v té konfiguraci :/
Moc se tedy omlouvám za zrdžení, ale myslela jsem si, že si mám přepsat to

testbench:
	url: http://test.bench

na url, na které mi běží ten web.
Díky moc za rady.