[rspec-users] BDDish rspecish question

David Chelimsky dchelimsky at gmail.com
Fri Aug 29 15:06:25 EDT 2008

On Fri, Aug 29, 2008 at 1:37 PM, Bart Zonneveld <loop at superinfinite.com> wrote:
> Hey list,
> This is a kinda quirky

It's only quirky-ish.

> question for this list, but I do think it belongs
> here. I'm currently writing an app with users with different roles. Roles
> are sequentially so to speak, so role 2 can do everything role 1 can, and so
> on.
> If I truly test my whole app, I should test all behaviour for each role, I
> guess. I could solve that by doing some clever shared steps and all, but my
> main question is this: should I test the behaviour of my entire app for each
> role, or not, since that behaviour is embedded in the app itself?

>From a testing perspective, you should test as much as you need to
feel confident your app works.

>From a refactoring perspective, you should test as much as you need to
feel confident refactoring.

>From a BDD perspective, the roles and permissions shouldn't exist
until there are automated scenarios and code examples driving them
into existence.

The problem of multiple roles * multiple permissions (per role) can
make this explode quite a bit. There is a relatively new feature in
cucumber that lets you express things in a tabular format in addition
to scenarios (think FIT, but plain text). So you can do this:

Scenario: roles 3 and up can create a user
  Given I am in the 'role 3' role
  When I try to create a new user
  Then I am allowed

	| role   | action            | response |
	| role 1 | create a new user | denied   |
	| role 2 | create a new user | denied   |
	| role 3 | create a new user | allowed  |
	| role 4 | create a new user | allowed  |
	| role 5 | create a new user | allowed  |

(that looks right if you view in a monospace font)

For my money (even thought it's free), this is the perfect situation
for this format, as it allows you to express a number of cases/rules
in a clear succinct way.


> thanks a bunch,
> bartz
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

More information about the rspec-users mailing list