On 1/24/07, <b class="gmail_sendername">Jodi Showers</b> &lt;<a href="mailto:jodi@nnovation.ca">jodi@nnovation.ca</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="">Greetings all.&nbsp;<div><br></div><div>I&#39;m looking over a &#39;greenfield&#39; pasture, and enjoying the TDD(BDD) process of creation.</div></div></blockquote><div><br>Consider yourself lucky!!!<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style=""><div>I&#39;m currently rspec&#39;ing a finite state machine (acts_as_state_machine).&nbsp;As such, I need to persist the model through &#39;specifies&#39; within the context - from top to bottom.</div><div><br></div>
<div>I have bumped into a couple of probs:</div><div><span style="white-space: pre;">        </span>1.&nbsp;context_setup to define the doesn&#39;t permit access to fixtures.&nbsp;&quot;You have a nil object when you didn&#39;t expect it!&quot;
</div></div></blockquote><div><br>Please submit a bug on this to the tracker:<br><br><a href="http://rubyforge.org/tracker/?group_id=797">http://rubyforge.org/tracker/?group_id=797</a> <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style=""><div>&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;2. transactions are defined around each specify? For this reason my specifies are very repetitive, encompassing all state movement for all previous contexts.</div><div>&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;3. since 2 seems to be the case, it probably doesn&#39;t matter - but is execution&nbsp;order&nbsp; guaranteed&nbsp;for specifiy&#39;s ?&nbsp;
</div></div></blockquote><div><br>Order is not guaranteed as in a commitment from the RSpec team to keep it that way. We believe that each specify block should be completely independent from the next, so order should not be related.
<br><br>That said, the specify method generates a Specification object which is added to a Ruby Array held by the Context object (which is generated by the context method). Given that implementation, the specs will run in order. And it is HIGHLY unlikely that this would ever change. Depending on that, however, is a risk that you would have to understand and choose to take.
<br><br>Thinking about the particular problem at hand, imagine that we solved the transaction problem and allowed you to declare the entire context to be wrapped in a single transaction and guaranteed order. Now if spec 1 fails, you can&#39;t really trust the outcome of spec 2 (because it depends on state leftover from spec 1). This seems to me to be no different than having a single specify block that takes you through all the states. In fact, it strikes me as worse than the single spec block because you can&#39;t trust the other outcomes.
<br><br>So I&#39;d recommend just writing one spec block.<br><br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div>
Thanx to the core team and contributors for rspec. The &quot;diameter of my smile&quot; is wide.</div></div></blockquote><div><br>Thanks for the feedback.<br>David<br><br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style=""><div><div><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">
<span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">
<span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">
<span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">
<div>Cheers,</div><div>Jodi</div><div>General Partner</div><div>The nNovation Group inc.</div><div><a href="http://www.nnovation.ca/blog" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">www.nnovation.ca/blog
</a></div><div><a href="http://feeds.feedburner.com/on-innovation" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><img style="border: 0pt none ;" alt="ranting o the technology and business of software">
</a></div><p></p><br></span></span></span></span> </div><br></div></div>
<br>_______________________________________________<br>rspec-users mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rspec-users@rubyforge.org">rspec-users@rubyforge.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://rubyforge.org/mailman/listinfo/rspec-users" target="_blank">
http://rubyforge.org/mailman/listinfo/rspec-users</a><br><br></blockquote></div><br>