Hi there! I''m creating an application in RoR and I''m implementing unit testing in all my models. When I run every test on his own (by running ruby test/unit/some_test.rb) all tests are successful. But when I run all tests together (by running rake test:units) some tables from both databases (development e test) are deleted. I''m using raw SQL (mysql) do create tables because I need composite primary keys and physical constraints so I figured it would be the best. Maybe this be the cause? All my tests are in this form: ----------------------- require File.dirname(FILE) + ''/../test_helper'' require File.dirname(FILE) + ''/../../app/models/order'' class OrderTestCase < Test::Unit::TestCase def setup @order = Order.new( :user_id => 1, :total => 10.23, :date => Date.today, :status => ''processing'', :date_concluded => Date.today, :user_address_user_id => 3, :user_address_address_id => 5, :creation_date => Date.today, :update_date => Date.today ) end ################ Happy Path def test_happy_path assert @order.valid?, @order.errors.full_messages end (...) ----------------------- The errors I get when running the tests are something like this: 3) Error: test_empty_is_primary(AddressTestCase): ActiveRecord::StatementInvalid: Mysql::Error: Table ''shopshop_enterprise_test.addresses'' doesn''t exist: SHOW FIELDS FROM addresses /test/unit/address_test.rb:9:in new'' /test/unit/address_test.rb:9:insetup'' Any guesses? Thanks! PS: When using postgres as the database engine, everything works fine with rake test:units! (of course, with the correct changes so the sql statements can work with postgres) -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Simão Freitas wrote:> Hi there! I''m creating an application in RoR and I''m implementing unit > testing in all my models. > > When I run every test on his own (by running ruby > test/unit/some_test.rb) all tests are successful.Slightly off-topic tip: use RSpec instead of Test::Unit. It''s a lot nicer.> > But when I run all tests together (by running rake test:units) some > tables from both databases (development e test) are deleted.That''s odd. What is your database.yml file like?> > I''m using raw SQL (mysql) do create tablesWith migrations or not?> because I need composite > primary keys and physical constraints so I figured it would be the best.BAD IDEA! Use the composite_primary_keys and foreigner plugins.> Maybe this be the cause?Perhaps. Are all your tables mentioned in schema.rb?> > All my tests are in this form: > ----------------------- > require File.dirname(FILE) + ''/../test_helper'' > require File.dirname(FILE) + ''/../../app/models/order'' > > class OrderTestCase < Test::Unit::TestCase > > def setup > > @order = Order.new( > :user_id => 1, > :total => 10.23, > :date => Date.today, > :status => ''processing'', > :date_concluded => Date.today, > :user_address_user_id => 3, > :user_address_address_id => 5, > :creation_date => Date.today, > :update_date => Date.today > ) > endYou probably should start using factories (I''m fond of Machinist for this).> > ################ Happy Path > > def test_happy_path > > assert @order.valid?, @order.errors.full_messages > > end (...) > ----------------------- > The errors I get when running the tests are something like this: > > 3) Error: test_empty_is_primary(AddressTestCase): > ActiveRecord::StatementInvalid: Mysql::Error: Table > ''shopshop_enterprise_test.addresses'' doesn''t exist: SHOW FIELDS FROM > addresses > /test/unit/address_test.rb:9:in new'' > /test/unit/address_test.rb:9:insetup'' > > Any guesses? Thanks! > > PS: When using postgres as the database engine, everything works fine > with rake test:units! (of course, with the correct changes so the sql > statements can work with postgres)Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I didn''t know about Rspec and Machinist. I''ll try them thanks for the recommendation. I''m using composite_primary_keys, I didn''t explain myself well lol. I don''t use migrations. OH! You''re right! There are tables missing from the schema.rb file. Don''t know the reason because when I ran the tests (and db creation previously) separately there was no error. Anyway, there''s an error in every table that was missing, related to the BIT datatype. Something like this: # Could not dump table "addresses" because of following StandardError # Unknown type ''bit(1)'' for column ''is_primary'' So, maybe that datatype isn''t supported? I think I''ll just use TINYINTs lol By the way, I don''t have a very large knowledge about rails, i''m still figuring it out, but here''s another question: Can I use migrations with physical constraints in the database? Won''t they become "nulled" and inconsistent after a migration or any change in the database? All that will be lost right? Thanks a lot for your help! -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Please quote when replying. It is very difficult to follow the conversation if you don''t. Simão Freitas wrote:> I didn''t know about Rspec and Machinist. I''ll try them thanks for the > recommendation. >You''re welcome.> I''m using composite_primary_keys, I didn''t explain myself well lol. > > I don''t use migrations.Well, start now! There are many advantages and virtually no disadvantages to using migrations.> > OH! You''re right! There are tables missing from the schema.rb file.That would be a serious problem. The test framework uses rake db:schema:load to create the database.> Don''t know the reason because when I ran the tests (and db creation > previously) separately there was no error. Anyway, there''s an error in > every table that was missing, related to the BIT datatype. Something > like this: > > # Could not dump table "addresses" because of following StandardError > # Unknown type ''bit(1)'' for column ''is_primary'' > > So, maybe that datatype isn''t supported? I think I''ll just use TINYINTs > lolUse migrations and you won''t have to worry, since Rails handles the abstraction.> > By the way, I don''t have a very large knowledge about rails, i''m still > figuring it out, but here''s another question: > > Can I use migrations with physical constraints in the database?You mean such as foreign key constraints?> Won''t > they become "nulled" and inconsistent after a migration or any change in > the database?What gives you that idea?> All that will be lost right?No! Use the foreigner plugin like I suggested.> > Thanks a lot for your help!Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I fixed the problem of the "disappearing tables" with the following code in environment.rb: config.active_record.schema_format = :sql The problem was with some datatypes not recognized by rails (BIT(1) and (YEAR(4)) I guess. All works fine now. But I''ll do what you recommend and start using migrations! Again, I can''t thank you enough! Thanks a lot! -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
For the second time: please quote when replying! Simão Freitas wrote:> I fixed the problem of the "disappearing tables" with the following code > in environment.rb: > > config.active_record.schema_format = :sql > > The problem was with some datatypes not recognized by rails (BIT(1) and > (YEAR(4)) I guess. All works fine now.In most cases, if you have to use schema_format = :sql, something is wrong.> > But I''ll do what you recommend and start using migrations! > > Again, I can''t thank you enough! Thanks a lot!You''re welcome! Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Marnen Laibow-Koser wrote:> For the second time: please quote when replying!Sorry :X> > Simão Freitas wrote: >> I fixed the problem of the "disappearing tables" with the following code >> in environment.rb: >> >> config.active_record.schema_format = :sql >> >> The problem was with some datatypes not recognized by rails (BIT(1) and >> (YEAR(4)) I guess. All works fine now. > > In most cases, if you have to use schema_format = :sql, something is > wrong. >Hum.. I''ll see what I can figure out! Thanks again>> >> But I''ll do what you recommend and start using migrations! >> >> Again, I can''t thank you enough! Thanks a lot! > > You''re welcome! > > Best, > -- > Marnen Laibow-Koser > http://www.marnen.org > marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org-- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.