Forum: Ruby on Rails Unit test problem,

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ps_gem S. (Guest)
on 2009-04-06 08:45
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.
Rob B. (Guest)
on 2009-04-06 15:37
(Received via mailing list)
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
Phlip (Guest)
on 2009-04-06 16:24
(Received via mailing list)
> 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?
Perry S. (Guest)
on 2009-04-13 03:31
(Received via mailing list)
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
Phlip (Guest)
on 2009-04-13 04:00
(Received via mailing list)
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.
This topic is locked and can not be replied to.