On 30 Dec 2010, at 03:43, Shea Levy wrote: > Hi all, > > I am working on a feature to allow administrators of an online store to > rearrange the order in which their product categories show up on the site. I > want to use a simple implementation of sortable_lists > (madrobby.github.com/scriptaculous/sortable-lists-demo/) to allow the > administrators to just drag and drop the categories into the desired order. I > have already written a cucumber feature that I hope expresses the desired > function (does anyone know if Capybara+Selenium's drag_to method will work > with sortable_lists?), and have gotten to red on the Cucumber level, but I'm > at a loss as to how to continue. The Cucumber scenario goes to the page, > drags each category to the desired spot, then reloads the page to check that > the categories are in the right order. The When (dragging each category) > passes (though the dragging doesn't actually do anything, since the > sortable_list is not set up yet), but the Then (checking the categories) > fails because nothing was actually changed. I think my next step should be a > view spec, but I'm not sure exactly how to proceed. I think what I want to > check on the view level is a) that clicking and dragging updates the document > and b) that the proper AJAX request is sent to the controller, but I don't > know how to do either. Once I got those working, the next step (specing the > controller which responds to the request) seems easier, but I don't know how > to get past this part. > > Also, it occurs to me that, since I didn't write the sortable_list code > myself, maybe I should view it as an external API and my view spec should > just check that the view is set up properly to interact with the API. Does > that make more sense? How would I do that? In general, if I want to add > Javascript functionality to a view, should I treat the scripting itself as a > separate component to be "speced" with something like JsUnit as part of the > inner circle of the BDD cycle, along with specing views, controllers, and > models, or is there ever a time when Javascript specs should be considered > the responsibility of the view spec? > >
In general, when I'm in a situation where I'm not sure how to test drive something, I will create a branch in git and implement it as a spike. I might well use Cucumber to help me drive the spike. Then I'll reflect on what I would want tests for: what am I worried could break, and how would I want to be notified? Sometimes I decide that there's so little code that I don't need any specs, and I can just rely on the Cucumber test. In that case I'll merge the branch into master and move on. > Cheers, > Shea > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users cheers, Matt m...@mattwynne.net 07974 430184
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users