如何将页面添加到Refinery CMS测试虚拟应用程序数据库

时间:2014-02-10 01:38:24

标签: ruby-on-rails rspec refinerycms

我在the extension guidethe extension testing guide之后创建了一个Refinery CMS扩展程序。

某些rspec单元测试在Web浏览器中传递并http://localhost/the_extension加载。但现在测试失败了,因为虚拟应用程序没有页面(或任何其他数据库表)。

我尝试将dummy_dev文件复制到dummy_test(以及其他一些东西),并且工作(排序)因为当我运行虚拟应用程序(cd spec/dummy; rvmsudo rails s -p 80 -e test)时页面在我的浏览器中加载,当我查询页面表(sqlite3 dummy_test 'select * from refinery_pages;)时,有页面。

但每次运行cd vendor/extensions/the_extension; bundle exec rake spec时,它都会删除页表中的所有条目。

我尝试将其添加到spec/spec_helper.rb

# Copy the prototype test database to the test database.
FileUtils.cp File.expand_path('../dummy_test_db_prototype', __FILE__), File.expand_path('../dummy/dummy_test', __FILE__)

但是在运行规范时,测试数据库已被删除。在读入规范后删除数据库,因为如果我将以下内容放在spec/features/refinery/the_extension/the_extension_spec.rb的底部,则数据库仍然有页面:

# DEBUG
puts 'Querying test db:'
system "sqlite3 /some_app/vendor/extensions/the_extension/spec/dummy/dummy_test 'select * from refinery_pages;'"
puts 'Done querying.'

如何在测试运行时确保测试数据库中有页面?

1 个答案:

答案 0 :(得分:0)

describe "stuff" do
  it "should do stuff" do
    before { Refinery::Page.create([{ title: 'home', link_url: '/' }]) }

    ...
  end
end