Wednesday, October 12, 2011

Jedna z zasad Agile: zrób minimum by osiągnąć cel i nic poza tym.

Brzmi logicznie. I mimo, że ją znam i staram się stosować, to dziś dostałem w tyłek od samego siebie, bo ją złamałem. Spędziłem trochę czasu szukając przyczyny błędu (w tym wypadku regresji, bo funkcjonalność już działała). Błąd polegał na tym, że z wypełnionego formularza po operacji zapisu pobierałem stan flagi i emitowałem event z tą flagą w środku. Wszystko działało do niedawna prawidłowo. Przestało, bo ostatnio flaga zawsze była false. Prawidłowa sekwencja kodu była

eventBus.fireEvent(formSavedEvent);
display.hide();

Czyli najpierw informuję o zapisie (w evencie był stan flagi z formularza), a potem zamykam okienko.
Ale nie! Byłem mądrzejszy i w ramach jakichś innych zmian w klasie postanowiłem zamienić kolejność operacji 

display.hide();
eventBus.fireEvent(formSavedEvent);


Bo przecież lepiej najpierw schować okienko, a potem puścić eventa. Zrobiłem to zupełnie nieroztropnie, bez zastanowienia - niepotrzebnie! Nikt o to nie prosił. Żaden CR tego nie zakładał.

Przed chwilą odkryłem, że hide() czyści formularz (i flagę!), aby był gotowy na ponowne otwarcie. I tak sobie narobiłem do własnego gniazda. I wyobraźcie sobie, że testy też miałem i przechodziły, bo prezenter odpowiedzialny za tą logikę działał poprawnie. Czyszczenie następowało w display, a ten z kolei w testach był zamockowany. Powinienem zatem napisać testy integracyjne FE lub użyć selenium (tego nie stosujemy).

No comments:

Post a Comment