Earlier today I made a mini-plea on Twitter for TDD references (specific to Rails 3) since I’m starting to build an app and should do it the ‘proper’ way. Ends up what I really wanted was BDD/ATDD references; specifically Cucumber + Rails 3.
Following the concept of Minimum Viable Product as a model I sketched out the first two Cucumber features while waiting for the boy at karate this morning. And already I had one of those ‘oh, wait!’ moments by realizing I hadn’t done the ‘show the landing page’ stuff before the ‘signup’ parts.
So here are my features. Again, the eventual signup form will eventually have a tonne more information, but all I need right now is username and password.
Feature: Landing In order to use test maps As a user I want to see the landing page Scenario: Display landing page Given user is not cookied When user goes to site Then landing page is displayed
Feature: Signup In order to create test maps As a new user I want to register Scenario: Display registration form Given user is unregistered When user clicks they want to signup Then signup page is displayed Scenario: Happy path signup Given username is available And password is strong And password is verified When user clicks signup Then user is created Scenario: Username available Given username is already in use And password is strong And password is verified When user clicks signup Then message 'Username is not available' is displayed Scenario: Password length Given a password is too short And password is verified And username is available When user clicks signup Then message 'Password needs to be 5 or more characters' is displayed Scenario: Password verification Given a password is not verified And password is strong And username is available When user clicks signup Then message 'Password fields do not match' is displayed
Anyone have any stylistic suggestions?
Now all I need to do is implement the actual steps. Heh; all…