1 <?xml version=
"1.0" encoding=
"UTF-8"?>
3 PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en" lang=
"en">
8 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8" />
9 <meta http-equiv=
"Expires" content=
"-1" />
10 <meta http-equiv=
"Pragma" content=
"no-cache" />
11 <script src=
"javascripts/prototype.js" type=
"text/javascript"></script>
12 <script src=
"javascripts/scriptaculous.js" type=
"text/javascript"></script>
13 <script src=
"javascripts/application.js" type=
"text/javascript"></script>
14 <script src=
"javascripts/unittest.js" type=
"text/javascript"></script>
16 <link href=
"stylesheets/style.css" rel=
"stylesheet" type=
"text/css" />
17 <link href=
"stylesheets/test.css" rel=
"stylesheet" type=
"text/css" />
21 Classes and ids that are only used by the Story UI, which don't have to be present in
30 <a href=
"#" onclick=
"javascript:StoryDom.save();">SAVE
</a>
33 <ul id=
"stock_steps" style=
"display: none;">
34 <li>Given my savings account balance is $balance dollars
</li>
35 <li>Given my cash account balance is $balance dollars
</li>
36 <li>Given my $which account has been blocked for $n days
</li>
37 <li>When I transfer $amount dollars
</li>
38 <li>Then my savings account balance should be $balance dollars
</li>
39 <li>Then my cash account balance should be $balance dollars
</li>
41 <dl class=
"story failed">
42 <dt>transfer to cash account
</dt>
45 As a savings account holder
<br />
46 I want to transfer money from my savings account
<br />
47 So that I can get cash easily from an ATM
<br />
50 <dt>savings account is in credit
</dt>
53 <li class=
"passed">Given my savings account balance is
<span class=
"param">100</span> dollars
</li>
54 <li class=
"passed">Given my cash account balance is
<span class=
"param">10</span> dollars
</li>
55 <li class=
"passed">When I transfer
<span class=
"param">20</span> dollars
</li>
56 <li class=
"passed">Then my savings account balance should be
<span class=
"param">80</span> dollars
</li>
57 <li class=
"passed">Then my cash account balance should be
<span class=
"param">30</span> dollars
</li>
63 <dt>savings account is overdrawn
</dt>
66 <li class=
"passed">Given my savings account balance is
<span class=
"param">-
20</span> dollars
</li>
67 <li class=
"passed">Given my cash account balance is
<span class=
"param">10</span> dollars
</li>
68 <li class=
"passed">When I transfer
<span class=
"param">20</span> dollars
</li>
69 <li class=
"failed">Then my savings account balance should be
<span class=
"param">-
20</span> dollars
</li>
70 <li class=
"failed">Then my cash account balance should be
<span class=
"param">10</span> dollars
</li>
71 <li class=
"pending">Then I should still be poor
</li>
77 <!-- More stories here... -->
80 <div id=
"testlog"> </div>
81 <script type=
"text/javascript" language=
"javascript" charset=
"utf-8">
83 Test.context(
"RSpec editor tests (this won't be in the final editor - it's just self tests)",{
84 'should extract story narrative': function() {
85 var narrative = StoryDom.narrativeText($$('p')[
0].innerHTML);
86 narrative.shouldEqual(
87 " As a savings account holder\n" +
88 " I want to transfer money from my savings account\n" +
89 " So that I can get cash easily from an ATM\n"
93 'should extract step text with two spans': function() {
94 var stepText = StoryDom.stepText('Given
<span class=
"param">this
</span> and
<span class=
"param">that
</span> stuff');
95 stepText.shouldEqual(
"Given this and that stuff");
98 'should extract scenario': function() {
99 var scenario = StoryDom.scenario($$('dl')[
1]);
100 scenario.shouldEqual(
101 " Scenario: savings account is in credit\n" +
102 " Given my savings account balance is 100 dollars\n" +
103 " Given my cash account balance is 10 dollars\n" +
104 " When I transfer 20 dollars\n" +
105 " Then my savings account balance should be 80 dollars\n" +
106 " Then my cash account balance should be 30 dollars\n"
110 'should extract story from page': function() {
111 var story = StoryDom.story();
113 "Story: transfer to cash account\n" +
115 " As a savings account holder\n" +
116 " I want to transfer money from my savings account\n" +
117 " So that I can get cash easily from an ATM\n" +
119 " Scenario: savings account is in credit\n" +
120 " Given my savings account balance is 100 dollars\n" +
121 " Given my cash account balance is 10 dollars\n" +
122 " When I transfer 20 dollars\n" +
123 " Then my savings account balance should be 80 dollars\n" +
124 " Then my cash account balance should be 30 dollars\n" +
126 " Scenario: savings account is overdrawn\n" +
127 " Given my savings account balance is -20 dollars\n" +
128 " Given my cash account balance is 10 dollars\n" +
129 " When I transfer 20 dollars\n" +
130 " Then my savings account balance should be -20 dollars\n" +
131 " Then my cash account balance should be 10 dollars\n" +
132 " Then I should still be poor\n"
136 'should extract stock steps from dom': function() {
137 var stockSteps = RSpec.stockSteps();
138 stockSteps.shouldEqualEnum([
139 'Given my $which account has been blocked for $n days',
140 'Given my cash account balance is $balance dollars',
141 'Given my savings account balance is $balance dollars',
142 'Then my cash account balance should be $balance dollars',
143 'Then my savings account balance should be $balance dollars',
144 'When I transfer $amount dollars'
148 'should add new stock steps unless they already exist': function() {
149 RSpec.addStockStep('When Godzilla chews over a cable');
150 RSpec.stockSteps().shouldEqualEnum([
151 'Given my $which account has been blocked for $n days',
152 'Given my cash account balance is $balance dollars',
153 'Given my savings account balance is $balance dollars',
154 'Then my cash account balance should be $balance dollars',
155 'Then my savings account balance should be $balance dollars',
156 'When Godzilla chews over a cable',
157 'When I transfer $amount dollars'
159 RSpec.addStockStep('When Godzilla chews over a cable');
160 RSpec.stockSteps().shouldEqualEnum([
161 'Given my $which account has been blocked for $n days',
162 'Given my cash account balance is $balance dollars',
163 'Given my savings account balance is $balance dollars',
164 'Then my cash account balance should be $balance dollars',
165 'Then my savings account balance should be $balance dollars',
166 'When Godzilla chews over a cable',
167 'When I transfer $amount dollars'