Hello, I'm trying to get my Rails test suite to load fixtures in a certain order, but I'm coming across a really strange problem. I have two tables and a join table. Instead of creating the entries for the join table manually, I just go Table1.each do |t1| Table2.each do |t2| ... to create the fields. This only works if Table1 and Table2 are loaded before the join table is loaded. Now, when I go "rake test", it fails on the unit tests that are dependent on the join table having values, but the functional tests that are dependent on them succeed. However, if I go "rake test:functionals", they fail. It seems like the first test suite that gets loaded does not create these entries. Anybody know why this might happen?
on 2008-10-20 21:59
on 2008-10-21 00:16
On Oct 20, 6:59 pm, Rob B. <firstname.lastname@example.org> wrote: > Hello, I'm trying to get my Rails test suite to load fixtures in a > certain order, but I'm coming across a really strange problem. > > I have two tables and a join table. Instead of creating the entries for > the join table manually, I just go > > Table1.each do |t1| > Table2.each do |t2| > ... > Where is this code been run ? (and to be quite blunt - why?) Fred
on 2008-10-21 00:21
> Where is this code been run ? It's being run in the join table's fixture. > (and to be quite blunt - why?) Because there's a lot of test data in the other two tables, and typing it out by hand would be big waste of time. Normally the data in the join table is generated by after_save, but since that isn't called when fixtures are loaded I have to do it this way.
on 2008-10-21 00:39
Actually never mind, I found another solution.
on 2008-10-22 09:24
Great.... what was your other solution?!
on 2008-10-22 18:23
I just wrote a script for runner that just loaded in all the original fixtures I had for the two non-join tables, and based on what was in those generated a YAML file for the join table and reloaded the DB.