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…