Unit test problem,


#1

Hi, I am new in ROR. I have 4 fixtures in my ‘…/test/fixtures’ folder:
user.yml, aggregationfeedmaps.yml, aggregations.yml, and feeds.yml. I
have few test files in unit tests folder like user_test.rb,
feeds_test.rb, aggregation_test.rb and such.

When I wrote test for model ‘user’ using fixture user.yml it worked
fine. But when I tried to run test for my other models using fixtures
aggregationfeedmaps.yml, aggregations.yml, and feeds.yml it shows this
error:

FixtureClassNotFound: No class attached to find

my test file ‘feeds_test.rb’:

require File.dirname(FILE) + ‘/…/test_helper’

#class FeedsTest < ActiveSupport::TestCase
class FeedsTest < Test::Unit::TestCase

Replace this with your real tests.

fixtures :feeds

def test_truth
assert true
end

def test_updatefeed
feed1 = feeds(:feed_1)

Feeds.updatefeed(feed1.id)

assert_equal(Time.now, feed1.lastupdate)

end

end

my fixture file: ‘feeds.yml’

Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html

feed_1:
id: 1
sourcelink: http://sports.yahoo.com/ncaaf/teams/aad/ical.ics
feeddata: testdata
lastupdate: 2009-02-17 22:42:25
used: 1

feed_2:
id: 2
sourcelink: http://sports.yahoo.com/ncaaf/teams/aae/ical.ics
feeddata: testdata
lastupdate: 2009-02-17 22:42:25
used: 2

test_truth test passes but test_updatefeed shows the
FixtureClassNotFound error
Any help what is going on? Any help on the topic would be highly
appreciated.


#2

On Apr 6, 2009, at 12:45 AM, Ps_gem Sh_gem wrote:

error:

FixtureClassNotFound: No class attached to find

my test file ‘feeds_test.rb’:

You’re probably running into a naming issue. Models are expected to
be the singular name and the tables will be plural as will the fixture
files. You can see them all with the Pluralizer
http://nubyonrails.com/tools/pluralize

But here’s a simple listing:

test/fixtures/feeds.yml
app/model/feed.rb
class Feed < ActiveRecord::Base
in a database tables named “feeds”

It also expects to convert between CamelCase and under_scored so if
your model is AggregationFeedMap, the file defining it should be app/
models/aggregation_feed_map.rb and the table name should be
aggregation_feed_maps and the fixture found in test/fixtures/
aggregation_feed_maps.yml

Does this help you figure out your issues? It all becomes quite
natural after a short while, but there are still times where you’ll
have a model name that the Inflector doesn’t get the pluralization
right and you either have to adjust or define an extra rule for the
word you want to use.

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#3

It also expects to convert between CamelCase and under_scored so if
your model is AggregationFeedMap, the file defining it should be app/
models/aggregation_feed_map.rb and the table name should be
aggregation_feed_maps and the fixture found in test/fixtures/
aggregation_feed_maps.yml

Further, this command line…

script/generate model aggregation_feed_map

…should have set everything up correctly for you. Where’d these
fixtures come
from?


#4

On Apr 6, 7:23 am, Phlip removed_email_address@domain.invalid wrote:

…should have set everything up correctly for you. Where’d these fixtures come
from?

In my case I have a model named LppBase. Pluralize becomes
lpp_bases. But if you singularize it back, it became lpp_basis. So,
I had to add an entry in the inflections file.

FYI: I debugged this by getting in to script/console and then
executing: “lpp_bases”.pluralize.singularize

HTH


#5

pedz wrote:

In my case I have a model named LppBase. Pluralize becomes
lpp_bases. But if you singularize it back, it became lpp_basis. So,
I had to add an entry in the inflections file.

All your basis are belong to Rails.