simple_cart 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -7
- data/Rakefile +1 -10
- data/app/controllers/simple_cart/checkout_controller.rb +2 -2
- data/app/models/simple_cart/cart.rb +9 -4
- data/app/views/simple_cart/carts/_buy.html.haml +1 -2
- data/app/views/simple_cart/checkout/payment.html.haml +1 -1
- data/lib/generators/simple_cart/install_generator.rb +19 -0
- data/lib/generators/simple_cart/views_generator.rb +12 -0
- data/lib/simple_cart.rb +2 -1
- data/lib/simple_cart/acts_as_simple_cart.rb +15 -0
- data/lib/simple_cart/engine.rb +0 -1
- data/lib/simple_cart/version.rb +1 -1
- data/spec/controllers/{carts_controller_spec.rb → simple_cart/carts_controller_spec.rb} +0 -1
- data/spec/controllers/simple_cart/checkout_controller_spec.rb +206 -0
- data/spec/controllers/simple_cart/orders_controller_spec.rb +91 -0
- data/spec/dummy/app/models/thing.rb +1 -0
- data/spec/dummy/app/views/simple_cart/carts/_buy.html.haml +6 -0
- data/spec/dummy/app/views/simple_cart/carts/show.html.haml +64 -0
- data/spec/dummy/app/views/simple_cart/checkout/_address.html.haml +21 -0
- data/spec/dummy/app/views/simple_cart/checkout/_overview.html.haml +53 -0
- data/spec/dummy/app/views/simple_cart/checkout/_progress.html.haml +13 -0
- data/spec/dummy/app/views/simple_cart/checkout/_summary.html.haml +14 -0
- data/spec/dummy/app/views/simple_cart/checkout/billing.html.haml +35 -0
- data/spec/dummy/app/views/simple_cart/checkout/confirm.html.haml +68 -0
- data/spec/dummy/app/views/simple_cart/checkout/delivery.html.haml +52 -0
- data/spec/dummy/app/views/simple_cart/checkout/payment.html.haml +69 -0
- data/spec/dummy/app/views/simple_cart/checkout/shipping.html.haml +34 -0
- data/spec/dummy/app/views/simple_cart/orders/index.html.haml +105 -0
- data/spec/dummy/app/views/simple_cart/orders/show.html.haml +117 -0
- data/spec/dummy/config/routes.rb +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +4027 -0
- data/spec/dummy/log/test.log +97712 -0
- data/spec/dummy/spec/rails_helper.rb +57 -0
- data/spec/dummy/spec/spec_helper.rb +92 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0FcPYfgadHFgNn9gK63tPFKK4H2rO_URr3EUuAvjYp0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0dg7p5gOV72Ny6Ny3IKpkgU_8IqvTZHmHOy8n4Xsw2M.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0xSsQhDI_wNg72JlfvBHjLv4Me0vFWcjQ1xhk7pisd4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/159JFhfdHp_thKe1wRsdwEteUCPmWAuYIWv5RFKMBlo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1wFFAPFWt-iKxnXTLTwYEd83jWSCK0LU9cTDV2Wjfu8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/27doQdGOX7PfBAEE47N_lakWMKG6mBGe09j-nWAm7z4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2Czere6jw0cSz7pT7ovQ4KP6Lc2mduP3Px1TjETTO1I.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2do6_0BJY_m-WISNQO55OL7r8EryK6F5GT875Vmdr_I.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2eVKX64lK8KwJimF95vGARhITDI8ts-3JJdUU3gj1tY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4JdgN7EfuotoXyxsvvpW_aG55aua0gXBz7e6JYCxo60.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4UaD8nfLrD1nBKoNVzfk3-uO8TW1Vh_QzBOjJNPJ_8g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4dJ9VizO6nnTjEMG4e6amMeLuDm_0KV4S4Y4gLJGHko.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/52wRk3NuutEVedxEd5YZyc57yxugisJTjw7z8MvwLU0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/553ZiZnM1LaMiT4BpPBrFsovmtA4vtM54UJ1Di6wO7c.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5JNk129FFNojsMghwhEW89dWvfrz_aP3Wagg6vw-MpE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6-aKszuTNRunG5-OdaDZQes4n5N2dlFZl0mB2J3-hOc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/60OKggXvrz1fZ0Ex_PWiO5LZsEPpnkDvls8B9HKYCRo.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6QYppJ-vGlbXWmdNYojVbVFiu5LLTRXsFeB9SBKS7ZU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6VccdRj0fepqPF8jSMe2ybKR1J8HdiNOewoRN3BZTy0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6Wv6jl5BiVaaR2aqwiOwU8x7jM61Z2Vny9_V2Hv5LlU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6jvVqJtCEdkG_UPs5qcz1dFvfpPV0Iy-IesjuTZTIpI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6ppxZcpVzwRyTEua4d9btfhtc_elKSSbfASuwv8mI8U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/77T6xpTdKV9I7w40WNKaTmM97aa-VHvaWMo7fhVWg_E.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7Hmk8E3VtiYc0FG2kpeeS6HrHthClevGfGVSp-Wa4YA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7fVX6ugowWcFdFjl-6cg_mVIWZkn24Q8K3TCJwCN-y8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/88QUzbOCBedH8sqg2WSFRU-qN0kDdlSj8Su5vqq6ASI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8DXxFxOs3XK06Mxa2Ob19isXxUDJ28PqKZkHvaWv75Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8HxGo3Te8bOtmadYIfFbYjik4KZtw_LBEDTmYC7VcXQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8I9atE6L39Q_9omFaJZ0-vFeV4xysOPZs93168JELvQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8jH3Rwu59cMqVaRgrEZUNIu9oT_2_JLiJ69qen9-MaA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9IpG4YfpA6l1omnbIXRje0q5lFCxIiDaRwTJATy5b6s.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9UKUsNamaoZa3e9qt8Cbl6GE4qT6KkBzMIjmmjqymPU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9deC_bZts_B1wiNhDTYIa73Lqtvd1fNXKFV7dUvGTnI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/A7lfpdskVsNs-fivGho7PGCalmbDbtc4Vx5EmSYgFko.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ActDOWSbajJnfMGBKwnDmANleFJUxDecSrg45RkJp6I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Al85QlZMTIFVx8uNfwPnn1FsUk8RMvljZmBQtxT4E2U.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/B21vGy3Ls1ldep-Xz7OkP0Npg3wwDQAj_md7jre1x6c.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BvBz5jnX9Os-394CpQlFUHPOd4ftIJSSF70DWiIH_80.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BwRh-YE99DV7hTWKWZJFKpOSqZIX3B8Y5ThzlDKYS6s.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C2mZ2drUiVMlZGEy154D3ggaKbu88sMVWZEWI1DcZKY.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C5Xl0bgiTKnYcysKQucSHv4f9nC3kpn-iB3kBOhWo-A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cf3olB5bXJrBdGWoyhZD8eFuXWPaLtBEwBTLWQ99VIg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ClhULyYJqmCEpax2xwneLE3XlcHbM_og3nR19y2h5h8.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DSOLSc6A5RVSmvM415eEWAWG_AgOvZcLZOXQjsXyWQA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DbsiS9HoG5w2-Rmjo2Hu_3C4Nk1KppbqKwU_z7llEZQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DoG68m50DoV3kgn1vR6xyXYeoH-MB6ybg4f66G2oIMY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DvJSPJyLLP6k8NeTNuTYbSzc8VgOSzR8upe9q5MWbkI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DxtO-lrFqTip-QyvxhYv7s3KvJPhTJSfIdHt0VIwyrs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EGe2TaC_TKY5fjfs_3HOnHqSNS9k6WJfA1OB6cVWiUI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FgKC9us43PbrHYAiLZ__S-kGGy6EVvbwYtMMuo5JIRk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/G1u_i1slQKOM1k_YCtBSx9TiYboEHoJ79ycS8MJQlRI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gc-AsCjiq3nVDfX8tPYCuZshMJ_WrA0Vd3mx7wXHN5k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ghh84oB0RGBtAS_4-kThje9nc1W-y41Mvz5NEG7rQRA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HMBW-ITK3KFQ3UgES5Pn8DJ39kF3JsDs7ddwBeCwWYk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HSoyFwmngYiRfL63cWe_Es6VIDES_lGxINmJCRfcsZU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HufrcmJ0KHflG7-KRm6EAR5g0K4FkH3P8Ud7Y6JX8ic.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I4dLQ-srO9IdywOz3Z_i8pRV7QXEMqLl1F90cd2rSlg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I6Oq-RgyVljdlYv12gHvl892h3tBNvu94D-nxtw8Gpo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IRJHT7e-lxidIGcFuffgiDTMQ48dxBmwn3PsF9tE1yU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J2YySW2Sxol7U2snkQJGZUzJ0xZiBRQPlfjuTokB9PQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J8kpR2tHAmZfVEWNzPNGDkkdJ67YziGXrsExDH37LP4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JO9sST24rwIGbAobkQBEiX57pm89e8yOR-p0AojiWVE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JZsdqpPuhZUMRn9NNZOFt8G732JKPZYKfScHapgwa4Y.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ju6cEU7JJvSuX74lGKF-PrurWhsq1JzQNNbaZq_GPww.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K1Pm-Lb5Yo5sJOy3OZq7ydyreN1z5foaAaTL4V5jq54.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K5TLbb83mthCDcHqUxsw1-KOCjurz2IOUz2OaH0UKE4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KHSjx56ObyOzcy3X9_eHjPVt0ziJZkp_W6_QSXSafD0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KXD3GZ_7roadNSuv9bzVFY5rm66FRL_vYUpRFqFFpeA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KXa8sq1TIqZ0OwRj7yswNaicPeh7wSXbwgdjb_qEteU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KaAKYXUyYoCxczl3wqmVcaDG5yCmMSIe6FOExd05V6o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KdOWD9jQq7dNL-vge4-NJRBK9bUWHo-5nYnzcCx2mmk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kl_FO2rhb9hUGWQbT3Qh9RYBscEzY97yUrj7JGhlo2I.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L33lPPj2uVFqqkS3vVIflzKgJ2oSCUz_nFvFtVv3UJg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LRiYZZ1PWTYQlhncLmfuyIZdiM1pL8HIzJz9_rAlfTk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LUTVQqelOCK7OiooeWo6muRrw2UkRAnt6iVt-rQUxVg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LUa0T242XccAbc16vt7CQPcn8fe5uuzsJttxTYei9Ro.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LlmXxORiI5shbl7RZ6XgmLoIm6SALto-tFhI-gUQfag.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LtZHoZ79qnv91QeHfmqsCajzZUD6lpH4xZZsGmgirxA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LuZkT6shqLOUMoPGsyuZG3JfCINpdkDrxAgejRdrbKg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MOUWowPMAsedrv19x8tcF3tnX3MmPskbzJ46ri0jWD8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MacQy3xktf9oEct-E7lJvgf2eWpW3JZ5ydxNdUFKWbE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MqQJ1BGUyGNW6X7ikl3zf8Jo-g8ped3YGRKwydmw_NQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N4NjOSCa6YJpo0ZTmlLuAHKtAYNGsTTkLpMmmbcFvPI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NIrYu-ybQ93OYZkS29-DRtRTHOi69NBttITYYDIt8qM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NdHV2_WbxTlIY928ydLeOndno4ng2wGXgOIdwRH4C3o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O1oq3VBWIXCRZOcEODKVsPQh9JhbxpGL8kxdoUNA2Xk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O2JIfIPAbNU_AyrIu3ITeqlnbl-vWyXf-t1EMSJmOsg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OBerTNSTXzIbX0mxMxa5-rNM4Ac4UE4kqG7MKCzBCW8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ORnJ_m3WdZwfH2bWBatZYBvNAwCJVkkVnM2LFSXez_k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Odi8eG0T-hacLQdjMsClrOIJKeHyY_i7igUyfhzhYQI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P7bTZBQIN0DUvh7TBnru8TPAvlVb9lhvL7dgFP1uHfU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PBEpQ017z0XtT-PsIAJgUhljqbaQgpZE1nVEBJd12MY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q59IhZoGUcaZFUtCZB20KJFkmSdkl2_gA1V5L7yJGfk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QINpVmB_ZIDA8lOKtpjtWXenmF-iXN7quP3wTUzsN-U.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QWbWHsxurDlFdxuxXJdG_GvDcg7agUeoDRzv8R8zbHQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RR0v7bXnkw_DAIqKQUStbF0O5ytMAK_7OZp-5hCVzm0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rj42BFwHvQpHPnt1iAOPi89OYrjqGtGG_4wceo2BBJU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SLDGZ9eYf8c8WiF5yyCfRoNFoLHRSXWrARuMCblGqtk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SULF3NQxB6qO8JJnI5rRyD6rei-J60aW4rraimqf6hk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TJhYo1hoREPI5GIy024MsD1WDV-KFzAQ-9qxDBPyNVI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TWgbWSCl7nRMKksNZWx2gERqMzVoc8vH4GTWuAu0154.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TbRETg3JdW9nRXuEyzoW7fZn2Gs22HedMxdluZ3Pk-o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TqoiNVS_JI8-efr0qvvDlXUCnSigB1iZGltIJprRQ8c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TzlFnGHSbzTW25btAhrvA2pw5ihmGbN09P3Rrhu5mIQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U4CxtV5X10FdgYubaBda5c8_s2q6zlZB6kavI6otXB8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U7EN8_xFBne9oZCIkCgLEiKMjwtHvKIRczjokWdFLCY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UHMAwy27koeiLUhw5UYw8HVhK5HtgF7ePqguvCyrsEA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/US8iBwx5NDKUDlUSUQgeto6oyF3OraYtysS7f7KE5t8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UbPESDvcrSQKrcCQxpkYhPmAynBLWdbcNBIpk18kMCg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UeY4IPP6X3MGYFy722I41ZTbl-iaYL8IWgSiojNWXGA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UxsyM4_qLbZJmH4OH1lZBfY4pUvXgiut2oKUFUCRaMo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WVf3YD9mocylpbI8QR2n9V6j3Dru7LpfzqQgHhe6swA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W_oE5NUcqzBLMP6yl6RuhR_a-FTgjBG8SOAKP7E_L8o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WbHKwnC6PqtSmH3GzgZxNoEZ9guk2ovTMX0TqrSXlno.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WbhukjTJe2y7m7NIPtqnTU5fjqTJBiKy3LnqJAo2ZiM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WjJNxRO53_FsR3YzbsWpP6ZaOlqMcZh8uB9A1arbXy4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wxwqx9HQEeTIByaDG6SofLH78EyRKP1RWMRa75Vojmk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X-CgAk4J5uL3mAEfDhZN2HOe_nMblAiMQhbY63tDC2g.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X1EP5y_ZQxqgpQdYFO40WrNWrp8zlKOiQH62WfX_k9o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XTS3kY6cfnC-jQP99MzE045LRqQc20dGPmSJ-rwKcaQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y3iGVPSMAEadLpqj1Fr_Rh65TEdx7NQ31BUL_mkvHGQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y7LIPjdg4ZNJJmw9l9e0xDQCGkvxNjfoE-Vju2PgwK8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YGTNO43Also85pe9ZS76Q1adI9YK6kjdLZkdfUIEMh4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YQIUs0lUtsQcjUrYLQmPgw-F6Wpn8ZOcHP-gcG8rIX4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ybv2APOiKjgjEHSpzZs2mJH_JEeNr7OCQ955fCdOLsk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Z95Nkl-1ZNwDFnlxX6wOAIui1B9kHfH0Kg6beVDsoIc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZDXgFaKLUP-qzD5lSx9fNPWhC3p58KhciyGB7TykNJ8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZGq7MOKMLzCiR1Z4oo33rzFPzmxaOyYWdTsYOmAjKlM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZYoVi3M2mzdwCsjS4hzVtP9ZNBWCnBJrXXf-5Hhm14s.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ze4_lzHgd8DPMa09CZ9kktymXe5QX_iBXCItee1lQGY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zipyyq6itMyZhc6YUAQX1ctdhwcYD2Hmm5BMm7uP53A.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_nD_mnkybh4QS7c3pxosM2Jv4bhzKHv4zPZy2NfwJik.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a-QY9no1r9wESk0XVZMU9-j4ILaT0dYl4wZXDp81u-Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a3rqfUDI5k3tIDAdRc821L2zpk1g6WrmfBvtBlVnEgI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a5QEJSZhYBkNk1C52Trj85jUyIJcgFE8YFbg6XumdTw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aMJWLCvS9eTggheJfpJ6gUdxsKsYMbflLx1_MJ24ZKw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/adVVa38KCDY87GzjXpzoGgPvNxJbpqXQP4qyVKorPd4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bJNhvxxAZ5DVoCVfFAfma0Q3igFNdO018d9XPXGh63o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bUQP6ANjTKNXYQDMNz3PWpFWTF5SivR6uyYkW8BP_Gw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bbwkzDKpUKATPq1GRFiMPj2G42FE46ZCNfZAgLqLMRQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bmZk6kPconCKMdMNPY6ge5xlYPM-NQIZXYf5tVDlkXw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bvqtvdW959hJYsCSqdsI9Y724kgtSkW1sosYSN62nVo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cHt0mH_R8BuiIH1cEUjYkjqVjhH8RPhZeXs0zb3_4_c.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/d9L2wE9I51-s1p7CTgQWputeuJCIKyRvhpm3fR07VNc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dfrvxDyfk67Os53_mjIn3hlOfRxqLKK6Ka-CaxTooe4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dqOO06mYDk0wRgPf1Ziyi32XryK_a018r7Ik0uit02Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dvfOC1uAjTmhh2f0HAzarTv5_pS4yc3KaLR75Fit-qM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eaQa3YKQ2tB-oxeXJEOnoDd1G_AxpmbUDA7M8ePerD8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/emtU-J87p8RjW3dlyMesXKApGbGgOas7wH_lnbWKHs0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/etla6RgCcLhinP2_LK4J-fcNd7zL6Zsv3TuaU4Dp3nM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f0Jm47tmsqZA-EQsCGB7qZ4pCA8PcViRHwRfkn4SCi4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fGHWXX_znE2IeH4OVEwaT-hnI07M7LQwb4wWeTMJRro.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fQ3tndxY5LM8i4kyzpKDrFfL_DjRNCfkuAAGs8FrJzU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fhCnloZi1iA-7V3BC8RI6xXWInPaaahS29iDlaPl5AA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gNL-C_p_NsiDm86EYnStDdHnb_J0gwJDgsm6p-x4bPw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gZp3uXMHuYQC4hzCr7bQfetKNdJAtbQmg3so2KpW1Dw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gfj0cNpszRV54KNOJl36bresYupjtNETPwU2DetRc9k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hP-NOEvXiOPZorwh3pqVCBL8vKPuRlIDwTHqyprLVoc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hhaE1adQGmXVNIJKHKVZbaIPBXTUhK6SFO714rCx5ko.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hm6-kyB9LxlX-CzWtwTNomSbSEMuwwoVr_3foQ75GmI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i8xvGmXJllRh_504HEHUD1D23PNMOSApRFN6VxaAGeo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i9gVzGFdYf8tBYY5zLGbiPPXDvRZtvx_1mtjyYAzGFk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iDT6fOlRmL7PP4VJ4SpONzU8ZkY8gg9feff2z_2j7mQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iNYpWOT4gj3gjeaEngMxlmKOX2jQ5kyS1WMsZhjJAtk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/j6D8EPFTb0SpSLvYHCYROUOEDZqM5WlinRPlGPtN_Xw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k4KOaVr9wMGHtsRVXYsTedjUrT_W3sueQj87SiLmgW8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kAOU5FCvxF0g8ScWFZnLfuVMXcwQJkM2k75kf3kbpFo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kz_ifS6iuSrtVYG78G7QIv7rEL4CKPAkG_mtnZcQWIk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lFy-5JQVp3qiNKqL1UVqYkv2JKCV6ltXcPDtdKG7V54.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lK1OKrUN4Aa4ULF5iC8LIO9b_8pD6VtM7QmFoR_Hyq4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lL53cm_saG1cEdc_0TGdAq7tkJ9bY9yXRBIUsR7D8UI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lLcLuHAD8NB0iohQeabHp4dk298iIqeePqXVeuK_3H0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lQjsQ32aYeM4nY8qVi9YPKXqj_2L6xaoKIeIkFS3jWY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lWCdGefGeej2lRA8Gd08bV33SOp8tbEfqqz3Khl78oM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ll6Sc5xrZqzzpgpCPJyeTCs8IODJcalFH8XZZZPfkAY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m1e6jwxRs_JtIZbbRBAxGQj3ds0Xxa5vKED1JPBKbg8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mdQzbY0SX_-f0tvLBNm7fWC40lqQuyho7zhUJ7ckA-A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nC355jeTqAEoFFK-TABMGHdsHx74SjeE7DBq8xM4Dhk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nC49DzQcJoB-xvh15KbC4AUQA_GA7ivrufj1E3mU3zg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/o5HX-kg2EODqzNhkW_ZAahHuB4yVPP8L5uOFVH8IW-U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oLDYrqmRAjrPRuhGdX6H1JQeHNOmLTow4Eel5UwH9-4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oiZfRfZUr3qevC6e8k4q1_Y1KeLkrQnabK8XvtQUEdM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oia1xdTfARSP0QPx-08rdbJgtwgivmbJPpE9ZIWHRWI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pDCtCFl3JoTIR1MlLiDOzshquvlPpsMw1yjJ8LUwZoc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/p_H61N5uq7AtqCDaaabvjftQdFUpRFgVngUUQoWgonM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pbJWIv8m4Zpz2Vdg_dct0jTcXyyF5C_0qCFMnrfzQhs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q1eWeFH4Ko50zNfNpD0AHOigO-Dl-IY62iz59wxjyB0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r-umRmbhYnDarxdLHW5j9Ya_kstiUKaW_wRSCCEnWXc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r9c5JJA88ftlHtJsLKcFJZPZGR3GqsygNyRCMfV1wHs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rHVh31TC4HKKMY-bqx5PCfr3jxc5lwdEripG-OobWMU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rJI5GE_7XaOoa6Tf7NYEISqT7721LVG7poLUF_31-vk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rKZwg5I56SY7UzS6nJb-HhGNojSbnd4thzevRVqjrM4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rrhf-39OhBdaZAyMckqVYYpeo5wOlz7ZF1A5dXTzHyk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s5WdYMy1zZQyLQ3jgMjyG2nX1lO6T0H6WjDHiIZud-4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sFtUj5nkFtxTPes_76ayDdPoRK5PrNc-85cy8VpguKo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sie-V3ITyZKtkQXFDHqsuBj63wj-vj3KqyZEZnXrDDs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sly1iOCf3l3QeGAfR54WjZQENHSgvySjx1bqYJufS9U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ssAxKsbsLWPM72bir14WKuhev6AdNBDMeaKwAfBLVbM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tahxNHp-Nubl9PZYv54PoDWwOWBafDdePsdGWgRvxRs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/u2dcdVvrMTVSZ5YM7_utAYZmJdnupBvRHQiNz_VxVNU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/upCRdLKCQ_LMJvznkBqZv3BLnc61IeBeuz1uCClUiXk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vA0eFV_bRhR8l7WhyElPZZM7novqeS1hs7KLtwEisB0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vjPguchHWdt-YK2EYQ9QRKlqa50p-qstw6XHWFpi-TQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vnEp_XTpvwYSWfGJSwbHT-Ga4Y8-E4XFowfSeG3PHlc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w23Vh5f9T1XBR0iY2GvglM6ZnVU3s-UfqM7KRvPhE-k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w8soQF6_YAg_K7mm0Yt3JPY111kY76FabdY8vbI7AeI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wc53Zkd85TBeGzckO-CbTd5O2OAJYikiGFKHX4BAglo.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wgvcchilGiqf57VaXODqv2ciHGo3kkyL5ntttb4AYRM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wshkkfg_d4VBJnagVOHTQN1ta0hl5JOCCvr8KVcH7rU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wvSMeOG_o73wgdwwrFF7A1-9jU014gjXk-eMKAcLGrk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xPmaTlc5nbaEOxlZXH3InaKfo1PNX9VW0_scNelg7zI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xYFdXkHU4uyzJp5yO_cL8KnYI0FbOjBznbzUSoZW_Jo.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zE9RWNhH3MoYHJkGpFhH69ThF5w97GamQ6V_d1hZRyk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zJhGRCzO2SKJ9xpszxe1bgNXQ3jKOM-Sp_VQ-FcKw08.cache +0 -0
- data/spec/dummy/tmp/capybara/capybara-201603221359263765142952.html +102 -0
- data/spec/dummy/tmp/capybara/capybara-201603221400062416605027.html +102 -0
- data/spec/dummy/tmp/capybara/capybara-201603221401176508690898.html +102 -0
- data/spec/dummy/tmp/pids/server.pid +1 -1
- data/spec/factories/simple_cart/credit_cards.rb +11 -0
- data/spec/factories/simple_cart/deliveries.rb +6 -0
- data/spec/features/simple_cart/cart_feature_spec.rb +47 -0
- data/spec/features/simple_cart/checkout/1.0_billing_address_feature_spec.rb +54 -0
- data/spec/features/simple_cart/checkout/1.5_shipping_address_feature_spec.rb +43 -0
- data/spec/features/simple_cart/checkout/2_delivery_feature_spec.rb +45 -0
- data/spec/features/simple_cart/checkout/3_payment_feature_spec.rb +46 -0
- data/spec/features/simple_cart/checkout/4_confirmation_feature_spec.rb +36 -0
- data/spec/rails_helper.rb +0 -1
- metadata +467 -25
- data/db/migrate/20160314183842_create_simple_cart_asdas.rb +0 -10
- data/spec/dummy/db/migrate/20160314184432_create_simple_cart_order_item.simple_cart.rb +0 -17
- data/spec/dummy/db/migrate/20160314184433_create_simple_cart_order.simple_cart.rb +0 -13
- data/spec/dummy/db/migrate/20160314184434_create_simple_cart_address.simple_cart.rb +0 -20
- data/spec/dummy/db/migrate/20160314184435_create_simple_cart_delivery.simple_cart.rb +0 -12
- data/spec/dummy/db/migrate/20160314184436_create_simple_cart_credit_card.simple_cart.rb +0 -18
- data/spec/dummy/db/migrate/20160314184437_create_simple_cart_asdas.simple_cart.rb +0 -11
- data/spec/dummy/db/migrate/20160314184745_create_things.rb +0 -11
- data/spec/dummy/db/migrate/20160314195958_create_kks.rb +0 -11
- data/spec/features/checkout/1.0_billing_address_feature_spec.rb +0 -52
- data/spec/integration/navigation_test.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c077dcd7475c05441cf80c2e110eb16cbd448e67
|
4
|
+
data.tar.gz: 7ea287086d37c383a5f1ee7ac33df4afe5adef9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b8ba6afe81a8bfced0bdec02e51cc49fe36170c1d206254bbc95a42718be32e14ac26101d9525e57e6dc2849e80314fbecfecdde85147d10518d12130d9ba1e
|
7
|
+
data.tar.gz: a52d65f59679bf1ee0efd275048e0ce4c7a669b62fe103dfcb3719c06ad586620118125054a9a821e1c2c48904d4fa20238adf6fa853d6bf8f5fe172adb254fd
|
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
[![Build Status](https://travis-ci.org/leksster/SimpleCart-engine.svg?branch=master)](https://travis-ci.org/leksster/SimpleCart-engine)
|
2
|
+
|
1
3
|
## SimpleCart
|
2
4
|
|
3
5
|
### Installation:
|
@@ -8,29 +10,38 @@ gem 'simple_cart'
|
|
8
10
|
|
9
11
|
### Usage:
|
10
12
|
|
11
|
-
|
13
|
+
##### Your model should contain fields:
|
12
14
|
- name (sting)
|
13
15
|
- price (decimal)
|
14
16
|
- qty (integer)
|
17
|
+
```html
|
18
|
+
<%= add_to_cart(object) %>
|
19
|
+
```
|
15
20
|
|
16
|
-
|
21
|
+
##### After you install SimpleCart and add it to your Gemfile, you need to run the generator:
|
17
22
|
```ruby
|
18
|
-
|
23
|
+
rails generate simple_cart:install
|
19
24
|
```
|
20
|
-
|
25
|
+
|
26
|
+
##### Run migrations task
|
21
27
|
```ruby
|
22
|
-
rake simple_cart:install:migrations
|
23
28
|
rake db:migrate
|
24
29
|
```
|
25
|
-
|
30
|
+
|
31
|
+
##### You can manage delivery services in the database using rake tasks. You need to create one in order to use checkout procedure properly.
|
26
32
|
```ruby
|
27
33
|
rake simple_cart:create_delivery [NAME] [COSTS]
|
28
34
|
rake simple_cart:delete_delivery [NAME]
|
29
35
|
rake simple_cart:delete_all
|
30
36
|
```
|
31
37
|
|
32
|
-
Use view helper method to add 'buy' button with required object:
|
38
|
+
##### Use view helper method to add 'buy' button with required object:
|
33
39
|
```html
|
34
40
|
<%= add_to_cart(object) %>
|
35
41
|
```
|
42
|
+
|
43
|
+
##### If you want to customize views
|
44
|
+
```ruby
|
45
|
+
rake simple_cart:views
|
46
|
+
```
|
36
47
|
:trollface:
|
data/Rakefile
CHANGED
@@ -14,7 +14,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
14
14
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
15
|
end
|
16
16
|
|
17
|
-
APP_RAKEFILE = File.expand_path("../
|
17
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
18
18
|
load 'rails/tasks/engine.rake'
|
19
19
|
|
20
20
|
|
@@ -24,14 +24,5 @@ load 'rails/tasks/statistics.rake'
|
|
24
24
|
|
25
25
|
Bundler::GemHelper.install_tasks
|
26
26
|
|
27
|
-
require 'rake/testtask'
|
28
|
-
|
29
|
-
Rake::TestTask.new(:test) do |t|
|
30
|
-
t.libs << 'lib'
|
31
|
-
t.libs << 'test'
|
32
|
-
t.pattern = 'test/**/*_test.rb'
|
33
|
-
t.verbose = false
|
34
|
-
end
|
35
|
-
|
36
27
|
|
37
28
|
task default: :test
|
@@ -31,7 +31,7 @@ module SimpleCart
|
|
31
31
|
when :shipping
|
32
32
|
@order.update(order_params)
|
33
33
|
when :delivery
|
34
|
-
@order.delivery = Delivery.find(params[:order][:delivery_id])
|
34
|
+
@order.delivery = SimpleCart::Delivery.find(params[:order][:delivery_id])
|
35
35
|
when :payment
|
36
36
|
@order.update(order_params)
|
37
37
|
end
|
@@ -41,7 +41,7 @@ module SimpleCart
|
|
41
41
|
private
|
42
42
|
|
43
43
|
def set_order
|
44
|
-
@order = Order.find(params[:order_id])
|
44
|
+
@order = SimpleCart::Order.find(params[:order_id])
|
45
45
|
end
|
46
46
|
|
47
47
|
def order_params
|
@@ -11,8 +11,8 @@ module SimpleCart
|
|
11
11
|
def subtotal
|
12
12
|
subtotal = 0
|
13
13
|
unless @session.nil?
|
14
|
-
@session.each do |
|
15
|
-
subtotal +=
|
14
|
+
@session.each do |klass_with_id, qty|
|
15
|
+
subtotal += find_in_model(klass_with_id).price * qty
|
16
16
|
end
|
17
17
|
subtotal -= @discount unless @discount.nil?
|
18
18
|
subtotal
|
@@ -22,8 +22,8 @@ module SimpleCart
|
|
22
22
|
def items
|
23
23
|
unless @session.nil?
|
24
24
|
arr = []
|
25
|
-
@session.each do |
|
26
|
-
arr <<
|
25
|
+
@session.each do |klass_with_id, qty|
|
26
|
+
arr << find_in_model(klass_with_id)
|
27
27
|
end
|
28
28
|
arr
|
29
29
|
end
|
@@ -70,5 +70,10 @@ module SimpleCart
|
|
70
70
|
coupon = SimpleCart.coupon_class.find_by(code: code)
|
71
71
|
self.subtotal * (coupon.discount / 100.0) unless coupon.nil?
|
72
72
|
end
|
73
|
+
|
74
|
+
private
|
75
|
+
def find_in_model(klass_with_id)
|
76
|
+
klass_with_id.split('_')[0].constantize.find(klass_with_id.split('_')[1])
|
77
|
+
end
|
73
78
|
end
|
74
79
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
= form_for item, :url => simple_cart.add_to_cart_path(item), :html => {:class => 'form-inline one-line text-center'}, method: :post do |f|
|
1
|
+
= form_for item, :url => simple_cart.add_to_cart_path(item, klass: item.class), :html => {:class => 'form-inline one-line text-center'}, method: :post do |f|
|
2
2
|
%h2
|
3
3
|
= number_to_currency(item.price)
|
4
4
|
.form-group.integer.required.one-line
|
5
5
|
= number_field_tag :qty, '1', class: 'form-control one-line', value: '1', min: '1', max: '99'
|
6
|
-
= hidden_field_tag(:klass, :item, :value => item.class)
|
7
6
|
= f.submit 'Add to cart', class: 'btn btn-default btn btn-primary'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module SimpleCart
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
def test
|
8
|
+
puts 'hi'
|
9
|
+
end
|
10
|
+
|
11
|
+
def copy_migration
|
12
|
+
rake 'simple_cart:install:migrations'
|
13
|
+
end
|
14
|
+
|
15
|
+
def init_routes
|
16
|
+
route 'mount SimpleCart::Engine, at: "/shop"'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module SimpleCart
|
4
|
+
class ViewsGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path("../../../../app/views/simple_cart", __FILE__)
|
6
|
+
def copy_views
|
7
|
+
directory 'carts', 'app/views/simple_cart/carts'
|
8
|
+
directory 'checkout', 'app/views/simple_cart/checkout'
|
9
|
+
directory 'orders', 'app/views/simple_cart/orders'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/simple_cart.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
module SimpleCart
|
2
|
+
module ActsAsSimpleCart
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
module ClassMethods
|
6
|
+
def acts_as_product
|
7
|
+
class_eval do
|
8
|
+
has_many :order_items, class_name: 'SimpleCart::OrderItem', as: :itemable
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
ActiveRecord::Base.include(SimpleCart::ActsAsSimpleCart)
|
data/lib/simple_cart/engine.rb
CHANGED
data/lib/simple_cart/version.rb
CHANGED
@@ -0,0 +1,206 @@
|
|
1
|
+
require 'byebug'
|
2
|
+
module SimpleCart
|
3
|
+
RSpec.describe CheckoutController, type: :controller do
|
4
|
+
let(:order) do
|
5
|
+
FactoryGirl.create( :order,
|
6
|
+
order_items: [FactoryGirl.create(:order_item)],
|
7
|
+
billing_address: billing_address,
|
8
|
+
shipping_address: shipping_address,
|
9
|
+
delivery: FactoryGirl.create(:delivery),
|
10
|
+
credit_card: FactoryGirl.create(:credit_card) )
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:shipping_address) { FactoryGirl.create(:shipping_address) }
|
14
|
+
let(:billing_address) { FactoryGirl.create(:billing_address) }
|
15
|
+
let(:credit_card) { FactoryGirl.create(:credit_card) }
|
16
|
+
let(:order_in_queue) { FactoryGirl.create(:order, :aasm_state => 'in_queue') }
|
17
|
+
let(:steps) { [:billing, :shipping, :delivery, :payment, :confirm] }
|
18
|
+
|
19
|
+
routes { SimpleCart::Engine.routes }
|
20
|
+
|
21
|
+
describe "GET #show" do
|
22
|
+
|
23
|
+
before(:each) do
|
24
|
+
allow(SimpleCart::Order).to receive(:find).and_return(order)
|
25
|
+
end
|
26
|
+
|
27
|
+
shared_examples "receives build_or_find methods" do
|
28
|
+
it "#build_or_find_billing_address" do
|
29
|
+
expect(order).to receive(:build_or_find_billing_address)
|
30
|
+
get(:show, step_params)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "#build_or_find_shipping_address" do
|
34
|
+
expect(order).to receive(:build_or_find_shipping_address)
|
35
|
+
get(:show, step_params)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "#build_or_find_credit_card" do
|
39
|
+
expect(order).to receive(:build_or_find_credit_card)
|
40
|
+
get(:show, step_params)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "assignes @order" do
|
44
|
+
get :show, step_params
|
45
|
+
expect(assigns(:order)).to be_a(SimpleCart::Order)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "Steps" do
|
50
|
+
|
51
|
+
it_behaves_like "receives build_or_find methods" do
|
52
|
+
[:billing, :shipping, :delivery, :payment, :confirm].each do |step|
|
53
|
+
let(:step_params) {{ :order_id => order.id, :id => step }}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "http success" do
|
58
|
+
it "returns http success on every step" do
|
59
|
+
steps.each do |step|
|
60
|
+
get :show, { :order_id => order.id, :id => step }
|
61
|
+
expect(response).to have_http_status(:success)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "render the page" do
|
67
|
+
it "renders specific view for the current step" do
|
68
|
+
steps.each do |step|
|
69
|
+
get :show, { :order_id => order.id, :id => step }
|
70
|
+
expect(response).to render_template step
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context "redirects" do
|
76
|
+
it "redirects to previous step if current is not valid" do
|
77
|
+
steps = [:delivery, :payment, :confirm]
|
78
|
+
steps.each_with_index do |step, index|
|
79
|
+
order = FactoryGirl.create(:order)
|
80
|
+
allow(Order).to receive(:find).and_return(order)
|
81
|
+
get :show, { :order_id => order.id, :id => step }
|
82
|
+
expect(response).to redirect_to order_checkout_path(:order_id => order.id, :id => [:billing, :delivery, :payment][index])
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "PUT #update" do
|
90
|
+
|
91
|
+
before(:each) do
|
92
|
+
allow(SimpleCart::Order).to receive(:find).and_return(order)
|
93
|
+
allow(order).to receive(:update).and_return(true)
|
94
|
+
allow(order).to receive(:build_shipping_address).and_return(shipping_address)
|
95
|
+
allow(order).to receive(:billing_address).and_return(billing_address)
|
96
|
+
end
|
97
|
+
|
98
|
+
context ":billing step" do
|
99
|
+
let(:step_params) do
|
100
|
+
{
|
101
|
+
:order_id => order.id,
|
102
|
+
:id => :billing,
|
103
|
+
:order => { :billing_address_attributes => FactoryGirl.attributes_for(:billing_address) },
|
104
|
+
:shipping => checked
|
105
|
+
}
|
106
|
+
end
|
107
|
+
|
108
|
+
before do
|
109
|
+
allow(order).to receive(:update).and_return(true)
|
110
|
+
put :update, step_params
|
111
|
+
end
|
112
|
+
|
113
|
+
after { put :update, step_params }
|
114
|
+
|
115
|
+
context "without billing address checkbox checked" do
|
116
|
+
let(:checked) { nil }
|
117
|
+
|
118
|
+
it "#update order" do
|
119
|
+
expect(order).to receive(:update).with(step_params[:order].with_indifferent_access)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "redirects to :shipping" do
|
123
|
+
expect(response).to redirect_to order_checkout_path(:order_id => order.id, :id => :shipping)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context "with billing address checkbox checked" do
|
128
|
+
let(:checked) { true }
|
129
|
+
|
130
|
+
it "#update order" do
|
131
|
+
expect(order).to receive(:update).with(step_params[:order])
|
132
|
+
end
|
133
|
+
|
134
|
+
it "#build_shipping_address" do
|
135
|
+
expect(order).to receive(:build_shipping_address)
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
it "redirects to :delivery" do
|
140
|
+
expect(response).to redirect_to order_checkout_path(:order_id => order.id, :id => :delivery)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
context ":shipping step" do
|
146
|
+
let(:step_params) do
|
147
|
+
{
|
148
|
+
:order_id => order.id, :id => :shipping,
|
149
|
+
:order => { :shipping_address_attributes => FactoryGirl.attributes_for(:shipping_address) }
|
150
|
+
}
|
151
|
+
end
|
152
|
+
|
153
|
+
before { put :update, step_params }
|
154
|
+
|
155
|
+
it "#update order" do
|
156
|
+
expect(order).to receive(:update).with(step_params[:order].with_indifferent_access)
|
157
|
+
put :update, step_params
|
158
|
+
end
|
159
|
+
|
160
|
+
it "redirects to :delivery" do
|
161
|
+
expect(response).to redirect_to order_checkout_path(:order_id => order.id, :id => :delivery)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context ":delivery step" do
|
166
|
+
let(:step_params) do
|
167
|
+
{
|
168
|
+
:order_id => order.id,
|
169
|
+
:id => :delivery,
|
170
|
+
:order => { :delivery_id => FactoryGirl.create(:delivery).id }
|
171
|
+
}
|
172
|
+
end
|
173
|
+
|
174
|
+
before { put :update, step_params }
|
175
|
+
|
176
|
+
it "sets delivery for order" do
|
177
|
+
expect(order.delivery).not_to be_nil
|
178
|
+
end
|
179
|
+
|
180
|
+
it "redirects to :payment" do
|
181
|
+
expect(response).to redirect_to order_checkout_path(:order_id => order.id, :id => :payment)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
context ":payment step" do
|
186
|
+
let(:step_params) do
|
187
|
+
{
|
188
|
+
:order_id => order.id,
|
189
|
+
:id => :payment,
|
190
|
+
:order => { :credit_card_attributes => FactoryGirl.attributes_for(:credit_card) }
|
191
|
+
}
|
192
|
+
end
|
193
|
+
|
194
|
+
it "#update order" do
|
195
|
+
expect(order).to receive(:update).with(step_params[:order].with_indifferent_access)
|
196
|
+
put :update, step_params
|
197
|
+
end
|
198
|
+
|
199
|
+
it "redirects to :confirm" do
|
200
|
+
put :update, step_params
|
201
|
+
expect(response).to redirect_to order_checkout_path(:order_id => order.id, :id => :confirm)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|