spec/generator_spec.rb in keynote-0.2.1 vs spec/generator_spec.rb in keynote-0.2.2
- old
+ new
@@ -26,84 +26,131 @@
def file_contents(path)
file_contents = File.read(File.join(output_path, path))
end
- it "should generate a presenter and Test::Unit file" do
+ describe "when the test_framework is :test_unit" do
+ before do
+ Rails.application.config.generators do |g|
+ g.test_framework :test_unit
+ end
+ end
+
+ it "generates a presenter and Test::Unit file" do
+ invoke_generator 'post' do |files|
+ files.must_equal %w(
+ app/presenters/post_presenter.rb
+ test/unit/presenters/post_presenter_test.rb
+ )
+
+ file_contents('app/presenters/post_presenter.rb').
+ must_match /class PostPresenter < Keynote::Presenter/
+
+ file_contents('test/unit/presenters/post_presenter_test.rb').
+ must_match /class PostPresenterTest < Keynote::TestCase/
+ end
+ end
+
+ it "does not add a 'presents' line" do
+ invoke_generator 'post' do |files|
+ file_contents('app/presenters/post_presenter.rb').
+ wont_match /presents/
+ end
+ end
+
+ it "generates an appropriate present() call" do
+ invoke_generator 'post' do |files|
+ file_contents('test/unit/presenters/post_presenter_test.rb').
+ must_match /present\(:post\)/
+ end
+ end
+
+ describe "when the presenter has one parameter" do
+ it "adds a 'presents' line" do
+ invoke_generator 'post', 'foo' do |files|
+ file_contents('app/presenters/post_presenter.rb').
+ must_match /presents :foo$/
+ end
+ end
+
+ it "generates an appropriate present() call" do
+ invoke_generator 'post', 'foo' do |files|
+ file_contents('test/unit/presenters/post_presenter_test.rb').
+ must_match /present\(:post, :foo\)/
+ end
+ end
+ end
+
+ describe "when the presenter has two parameters" do
+ it "adds a 'presents' line" do
+ invoke_generator 'post', 'foo', 'bar' do |files|
+ file_contents('app/presenters/post_presenter.rb').
+ must_match /presents :foo, :bar$/
+ end
+ end
+
+ it "generates an appropriate present() call" do
+ invoke_generator 'post', 'foo', 'bar' do |files|
+ file_contents('test/unit/presenters/post_presenter_test.rb').
+ must_match /present\(:post, :foo, :bar\)/
+ end
+ end
+ end
+ end
+
+ it "generates a presenter and RSpec file" do
Rails.application.config.generators do |g|
- g.test_framework :test_unit, :spec => true
+ g.test_framework :rspec
end
invoke_generator 'post' do |files|
files.must_equal %w(
app/presenters/post_presenter.rb
- test/unit/presenters/post_presenter_test.rb
+ spec/presenters/post_presenter_spec.rb
)
file_contents('app/presenters/post_presenter.rb').
must_match /class PostPresenter < Keynote::Presenter/
- file_contents('test/unit/presenters/post_presenter_test.rb').
- must_match /class PostPresenterTest < Keynote::TestCase/
+ file_contents('spec/presenters/post_presenter_spec.rb').
+ must_match /describe PostPresenter do/
end
end
- it "should generate a presenter and RSpec file" do
+ it "generates a presenter and MiniTest::Rails spec file" do
Rails.application.config.generators do |g|
- g.test_framework :rspec
+ g.test_framework :mini_test, :spec => true
end
invoke_generator 'post' do |files|
files.must_equal %w(
app/presenters/post_presenter.rb
- spec/presenters/post_presenter_spec.rb
+ test/presenters/post_presenter_test.rb
)
file_contents('app/presenters/post_presenter.rb').
must_match /class PostPresenter < Keynote::Presenter/
- file_contents('spec/presenters/post_presenter_spec.rb').
+ file_contents('test/presenters/post_presenter_test.rb').
must_match /describe PostPresenter do/
end
end
- # Temporary workaround until MT::R supports MT5 and Rails 4.1
- unless Rails::VERSION.to_s.start_with? "4.1.0"
- it "should generate a presenter and MiniTest::Rails spec file" do
- Rails.application.config.generators do |g|
- g.test_framework :mini_test, :spec => true
- end
-
- invoke_generator 'post' do |files|
- files.must_equal %w(
- app/presenters/post_presenter.rb
- test/presenters/post_presenter_test.rb
- )
-
- file_contents('app/presenters/post_presenter.rb').
- must_match /class PostPresenter < Keynote::Presenter/
-
- file_contents('test/presenters/post_presenter_test.rb').
- must_match /describe PostPresenter do/
- end
+ it "generates a presenter and MiniTest::Rails unit file" do
+ Rails.application.config.generators do |g|
+ g.test_framework :mini_test, :spec => false
end
- it "should generate a presenter and MiniTest::Rails unit file" do
- Rails.application.config.generators do |g|
- g.test_framework :mini_test, :spec => false
- end
+ invoke_generator 'post' do |files|
+ files.must_equal %w(
+ app/presenters/post_presenter.rb
+ test/presenters/post_presenter_test.rb
+ )
- invoke_generator 'post' do |files|
- files.must_equal %w(
- app/presenters/post_presenter.rb
- test/presenters/post_presenter_test.rb
- )
+ file_contents('app/presenters/post_presenter.rb').
+ must_match /class PostPresenter < Keynote::Presenter/
- file_contents('app/presenters/post_presenter.rb').
- must_match /class PostPresenter < Keynote::Presenter/
-
- file_contents('test/presenters/post_presenter_test.rb').
- must_match /class PostPresenterTest < Keynote::TestCase/
- end
+ file_contents('test/presenters/post_presenter_test.rb').
+ must_match /class PostPresenterTest < Keynote::TestCase/
end
end
end