On Sep 28, 2007, at 1:20 PM, Jonathan Linowes wrote:
> Scott,
> Thanks for the plug-in, http://thmadb.com/public_svn/plugins/
> fixture_replacement
> I've started using it, replacing my ad hoc factory methods
> And I like the idea of putting the factory in db/
Thanks for trying it out. I'd love to hear any feedback, or anything
that you think should be changed.
>
> btw, for the record, while the Dan Manges blog was posted Aug 07, the
> first time I saw this technique is as a protected create_user method
> in the acts_as_authenticated plugin test/user_test.rb (although not
> to replace fixtures but to test against them :)
Yeah, I'm sure I've seen that too - so maybe I stole one of the ideas
from there, as well. (Actually, I think I got it from topfunky (the
TDD peepcode), who in turn got it from technoweenie - Completely
forgot about til' now. It's funny how good ideas can become
unconscious like that...)
The only really cool thing about the plugin is that it uses lambdas
so that extra associations aren't created. Plus, it dries up
the .create! and merge() that needs to be repeated over and over
again (trust me - this will get tiring if you have something like 30
models).
Regarding the lambdas: With the Dan Manges factory, if I do the
following, I end up with two posts (not one):
def create_comment(hash = {})
Comment.create!(
{
:post => create_post
}.merge(hash)
)
end
# this yield one associated post (as expected)
comment = create_comment
# this yields an associated post, with an extra one which I don't
care about (and which isn't associated)
post = create_post
comment = create_comment(:post => post)
And this is because Ruby isn't lazily evaluated. So if you end up
using the Dan Manges method, beware!
Scott
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users