{"id":353,"date":"2012-10-02T10:33:08","date_gmt":"2012-10-02T14:33:08","guid":{"rendered":"http:\/\/blog.agilityfeat.com\/?p=353"},"modified":"2012-10-02T10:33:08","modified_gmt":"2012-10-02T14:33:08","slug":"tour-of-wishlisting-org-and-its-cucumber","status":"publish","type":"post","link":"http:\/\/34.200.113.64\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/","title":{"rendered":"Tour of Wishlisting.org and it&#8217;s Cucumber"},"content":{"rendered":"<p><a href=\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2012\/07\/Screen-Shot-2012-07-05-at-4.10.36-PM.png\"><img loading=\"lazy\" class=\"alignright size-medium wp-image-227\" title=\"Wishlisting.org logo\" src=\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2012\/07\/Screen-Shot-2012-07-05-at-4.10.36-PM-300x205.png\" alt=\"Wishlisting.org logo\" width=\"300\" height=\"205\" \/><\/a>Time for a demo of wishlisting.org!\u00a0 In this post I will give you a demo of the current features, and then we will step through a couple of the automated tests that we have in place for the site.<\/p>\n<h1>Using wishlisting.org to teach agile&#8230;<\/h1>\n<p>First let me give you some background. Wishlisting.org is a service being built by agilityFeat as an example of agile software development techniques.\u00a0 We partnered with Beyond Requirements and Lithespeed at the Agile 2012 conference and the Agile Development Practices West conference this year to run hands on workshops for conference attendees.\u00a0 At each conference we had a table setup where I was writing code on a projector, and anyone who wanted to stop by and write code with us was welcome to contribute to the project.\u00a0 Kent McDonald from Beyond Requirements was also on hand so that anyone who wanted to stop in and help could assist him with writing user stories and acceptance criteria, or testing the application.<\/p>\n<p>In this way, we were allowing people to see agile project management and engineering techniques in action on a small project.\u00a0 In between the conferences, I have been continuing to write code for wishlisting.org, primarily in support of our beta client, the Albemarle Housing Improvement Program.<\/p>\n<h1>Wishlisting.org helps charities fund specific projects<\/h1>\n<p>So what is wishlisting.org?\u00a0 In short, it is a website that allows charities to list multiple projects that they need funding for on a \u201cwishlist.\u201d\u00a0 Their supporters can donate money to those projects, and see how far they are towards the goal.\u00a0 In it\u2019s current form, it\u2019s very simple, and you can think of it as a kickstarter or microfunding platform for charities.<\/p>\n<p>Watch this short video and I\u2019ll give you a demo of the current features:<\/p>\n<p><!-- copy and paste. Modify height and width if desired. -->       <object id=\"scPlayer\"  width=\"427\" height=\"267\" type=\"application\/x-shockwave-flash\" data=\"http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/9a2bb057-f58e-4123-a8a6-760e846d789f\/scplayer.swf\" ><param name=\"movie\" value=\"http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/9a2bb057-f58e-4123-a8a6-760e846d789f\/scplayer.swf\" \/><param name=\"quality\" value=\"high\" \/><param name=\"bgcolor\" value=\"#FFFFFF\" \/><param name=\"flashVars\" value=\"thumb=http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/9a2bb057-f58e-4123-a8a6-760e846d789f\/FirstFrame.jpg&#038;containerwidth=1280&#038;containerheight=800&#038;xmp=sc.xmp&#038;content=http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/9a2bb057-f58e-4123-a8a6-760e846d789f\/2012-09-26_18-33-22.mp4&#038;blurover=false\" \/><param name=\"allowFullScreen\" value=\"true\" \/><param name=\"scale\" value=\"showall\" \/><param name=\"allowScriptAccess\" value=\"always\" \/><param name=\"base\" value=\"http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/9a2bb057-f58e-4123-a8a6-760e846d789f\/\" \/><iframe type=\"text\/html\" frameborder=\"0\" scrolling=\"no\" style=\"overflow:hidden;\" src=\"http:\/\/www.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/9a2bb057-f58e-4123-a8a6-760e846d789f\/embed\" height=\"267\" width=\"427\" ><\/iframe><\/object><\/p>\n<h1>Now let&#8217;s demo a little code!<\/h1>\n<p>If you\u2019re interested to see a little bit under the covers, then you\u2019ll want to keep reading.\u00a0 We are building the site in Ruby on Rails and hosting it on Heroku.\u00a0 As I mentioned above, we are applying agile engineering techniques to the project, which includes Acceptance Test Driven Development, or ATDD.<\/p>\n<p>ATDD basically means that Kent will write a user story of what functionality he wants to see, and then list some acceptance criteria for it in this format:<\/p>\n<blockquote><p>Given (some precondition)<\/p>\n<p>When (the user takes some action)<\/p>\n<p>Then (this result is displayed)<\/p><\/blockquote>\n<p>Then I take Kent\u2019s acceptance criteria and automate them using a tool called Cucumber.\u00a0 I can write those tests even before I write the code, and that way when I get the tests to pass, I know that I have completed that user story.\u00a0 To see more about how this works, watch the next video:<\/p>\n<p><!-- copy and paste. Modify height and width if desired. -->       <object id=\"scPlayer\"  width=\"427\" height=\"267\" type=\"application\/x-shockwave-flash\" data=\"http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/74e63fa5-0bb8-425e-be1b-13e59430306f\/scplayer.swf\" ><param name=\"movie\" value=\"http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/74e63fa5-0bb8-425e-be1b-13e59430306f\/scplayer.swf\" \/><param name=\"quality\" value=\"high\" \/><param name=\"bgcolor\" value=\"#FFFFFF\" \/><param name=\"flashVars\" value=\"thumb=http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/74e63fa5-0bb8-425e-be1b-13e59430306f\/FirstFrame.jpg&#038;containerwidth=1280&#038;containerheight=800&#038;xmp=sc.xmp&#038;content=http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/74e63fa5-0bb8-425e-be1b-13e59430306f\/2012-09-26_18-44-34.mp4&#038;blurover=false\" \/><param name=\"allowFullScreen\" value=\"true\" \/><param name=\"scale\" value=\"showall\" \/><param name=\"allowScriptAccess\" value=\"always\" \/><param name=\"base\" value=\"http:\/\/content.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/74e63fa5-0bb8-425e-be1b-13e59430306f\/\" \/><iframe type=\"text\/html\" frameborder=\"0\" scrolling=\"no\" style=\"overflow:hidden;\" src=\"http:\/\/www.screencast.com\/users\/AgilityFeat\/folders\/Wishlisting.org\/media\/74e63fa5-0bb8-425e-be1b-13e59430306f\/embed\" height=\"267\" width=\"427\" ><\/iframe><\/object><\/p>\n<p>Finally, those automated tests are great, but only when I remember to run them.\u00a0 Agile projects also incorporate Continuous Integration, or CI.\u00a0 CI Servers will notice whenever a developer checks in code, the CI server will get a copy of that code and execute it in a test environment.\u00a0 The CI server will run any Cucumber tests that the developers have written and make sure they pass in the test environment.\u00a0 If they don\u2019t pass, the team is notified so they can fix the code right away.\u00a0 This ensures that the team in continuously integrating their code with each other without breaking existing functionality.<\/p>\n<h1>wishlisting.org is a work in progress<\/h1>\n<p>So where does wishlisting.org go from here?\u00a0 This is a side project, so I basically work on it as I can between conferences.\u00a0 My most immediate deadline is that AHIP wants to start using it, which is why the features developed so far have focused on building a usable front end for them to start taking donations.\u00a0 After we do some more work on the payment aspects, I hope to start cleaning up the home page for wishlisting.org and putting in the features necessary to start opening up the service to other charities beyond AHIP.<\/p>\n<p>Stay tuned for more examples of agile development and the wishlisting.org project!<\/p>\n<h1>Want to learn more?<\/h1>\n<p>Do you want to learn more about the techniques shown in this blog post?\u00a0 Then you should attend <a href=\"http:\/\/www.D2BL2013.com\/\">DareToBeLean<\/a>!\u00a0 It\u2019s a 3 day workshop that the agilityFeat team is putting together on the beach in Costa Rica.\u00a0 We\u2019ll be doing hands on exercises about many of the topics in this blog post, so come join us!<\/p>","protected":false},"excerpt":{"rendered":"<p>Time for a demo of wishlisting.org!\u00a0 In this post I will give you a demo of the current features, and then we will step through a couple of the automated tests that we have in place for the site. Using wishlisting.org to teach agile&#8230; First let me give you some background. Wishlisting.org is a service [&hellip;]<\/p>","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":""},"categories":[4,50,57],"tags":[56,5,52,81,19,39,58],"jetpack_featured_media_url":"","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tour of Wishlisting.org and it&#039;s Cucumber - AgilityFeat Panama Software Test Center<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/agilityfeatpanama.com\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tour of Wishlisting.org and it&#039;s Cucumber - AgilityFeat Panama Software Test Center\" \/>\n<meta property=\"og:description\" content=\"Time for a demo of wishlisting.org!\u00a0 In this post I will give you a demo of the current features, and then we will step through a couple of the automated tests that we have in place for the site. Using wishlisting.org to teach agile&#8230; First let me give you some background. Wishlisting.org is a service [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/agilityfeatpanama.com\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/\" \/>\n<meta property=\"og:site_name\" content=\"AgilityFeat Panama Software Test Center\" \/>\n<meta property=\"article:published_time\" content=\"2012-10-02T14:33:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2012\/07\/Screen-Shot-2012-07-05-at-4.10.36-PM-300x205.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"4 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/34.200.113.64\/#website\",\"url\":\"https:\/\/34.200.113.64\/\",\"name\":\"AgilityFeat Panama Software Test Center\",\"description\":\"AgilityFeat Panama offers customized, multilevel web and mobile software testing for a variety of industries.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/34.200.113.64\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2012\/07\/Screen-Shot-2012-07-05-at-4.10.36-PM-300x205.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/#webpage\",\"url\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/\",\"name\":\"Tour of Wishlisting.org and it's Cucumber - AgilityFeat Panama Software Test Center\",\"isPartOf\":{\"@id\":\"https:\/\/34.200.113.64\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/#primaryimage\"},\"datePublished\":\"2012-10-02T14:33:08+00:00\",\"dateModified\":\"2012-10-02T14:33:08+00:00\",\"author\":{\"@id\":\"https:\/\/34.200.113.64\/#\/schema\/person\/c8d60d597071526db386b2b8a4afac64\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/agilityfeatpanama.com\/en\/blog\/2012\/10\/tour-of-wishlisting-org-and-its-cucumber\/\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/34.200.113.64\/#\/schema\/person\/c8d60d597071526db386b2b8a4afac64\",\"name\":\"arin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/34.200.113.64\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/cc498e210512c707ed769986dd745896?s=96&d=mm&r=g\",\"caption\":\"arin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/posts\/353"}],"collection":[{"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":0,"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/posts\/353\/revisions"}],"wp:attachment":[{"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/media?parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/categories?post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/34.200.113.64\/en\/wp-json\/wp\/v2\/tags?post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}