3. We practice our craft.
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
4. Like an 80s movie
Training Montage
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
5. Today's Kata:
Magento 2 Total Model
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
6. Training Module: Example_GiftItem
Add a free water bottle to the cart
when the customer adds a product from the
sample data Bags attribute set.
https://github.com/Vinai/module-example-giftitem
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
7. Training Module: Example_GiftItem
The gift item total model is responsible for
setting the price of gift items to zero.
https://github.com/Vinai/module-example-giftitem
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
8. What does this
kata teach?
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
9. (1/2) Generic skills:
4 TDD Red-Green-Refactor process
4 Working with stubs & mocks
4 Separating pure functions and
side effects
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
10. (2/2) Magento 2 skills:
4 Test driving Magento code
4 Memorizing the total model architecture
4 Dealing with Law of Demeter violations
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
11. Getting started:
# Create module dir
mkdir -p app/code/Example && cd app/code/Example
# Clone repo
git clone https://github.com/Vinai/module-example-giftitem.git GiftItem
cd GiftItem
# Check out git tag
git checkout beginning-of-kata
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
12. Kata Task:
Test drive the Example_GiftItem total model
ModelTotalsGiftItemAddressTotal
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
13. Target collect() behavior:
4 Subtract gift item row totals and base row totals
from the subtotal
4 Set calculation_price
and base_calculation_price
of every gift item to zero
4 Call calcRowTotal on each item
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp
14. Enjoy the session and feel
those reflexes get sharper!
TDD Magento 2 Kata - #MageTestFest, Nov. 2017 - contact@vinaikopp.com - twitter://@VinaiKopp