test/integration/generate_test.rb in hoboken-0.0.1 vs test/integration/generate_test.rb in hoboken-0.9.0

- old
+ new

@@ -1,71 +1,203 @@ -require_relative "../test_helper" +# frozen_string_literal: true +require_relative '../test_helper' + +# rubocop:disable Metrics/ClassLength class GenerateTest < IntegrationTestCase + # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/AbcSize def test_generate_classic run_hoboken(:generate) do - assert_file ".env" - assert_file "Gemfile" - assert_file "README.md" - assert_file "Rakefile" - assert_file "app.rb", /require "sinatra"/ - assert_file "config.ru", /run Sinatra::Application/ - assert_directory "public" - assert_directory "test" - assert_file "views/index.erb" - assert_file "views/layout.erb" + assert_file '.env' + assert_file 'Gemfile' + assert_file('Procfile') + assert_file 'README.md' + assert_file 'Rakefile' + assert_file 'app.rb', /require 'sinatra'/ + assert_file 'app.rb', %r{require 'sinatra/flash'} + assert_file 'app.rb', /require 'erubi'/ + assert_file 'app.rb', /erb :index/ + assert_file 'app.rb', /set :erb, { escape_html: true }/ + assert_file 'app.rb', /require 'better_errors'/ + assert_file_does_not_have_content 'app.rb', /json message:/ + assert_file 'bin/console' + assert_file 'bin/server' + assert_file 'bin/setup' + assert_file 'config.ru', /run Sinatra::Application/ + assert_directory 'public' + assert_directory 'test' + assert_file 'views/index.erb' + assert_file 'views/layout.erb', /styled_flash/ end end + # rubocop:enable Metrics/MethodLength + # rubocop:enable Metrics/AbcSize def test_generate_classic_tiny run_hoboken(:generate, tiny: true) do - refute_directory("public") - assert_file "app.rb", /__END__/, /@@layout/, /@@index/ + refute_directory('public') + assert_file 'app.rb', /__END__/, /@@layout/, /@@index/ end end - #def test_generate_classic_can_run_tests - #run_hoboken(:generate) do - #assert_match /1 tests, 1 assertions, 0 failures, 0 errors, 0 skips/, execute("rake test:all") - #end - #end + def test_generate_classic_api_only + run_hoboken(:generate, api_only: true) do + refute_directory('public') + refute_directory('views') + assert_file 'app.rb', %r{require 'sinatra/json'} + assert_file 'app.rb', /json message:/ + assert_file_does_not_have_content 'app.rb', %r{require 'sinatra/flash'} + assert_file_does_not_have_content 'app.rb', /erb :index/ + assert_file_does_not_have_content 'app.rb', /set :erb, { escape_html: true }/ + end + end + def test_generate_api_only_with_tiny + run_hoboken(:generate, api_only: true, tiny: true) do + assert_file_does_not_have_content 'app.rb', /__END__/, /@@layout/, /@@index/ + end + end + + def test_generate_classic_can_run_tests + run_hoboken(:generate) do + result = execute('rake test:all') + assert_match(/1 tests, 3 assertions, 0 failures, 0 errors/, result) + end + end + + def test_generate_classic_can_run_specs + run_hoboken(:generate, test_framework: 'rspec') do + result = execute('rake spec') + assert_match(/3 examples, 0 failures/, result) + end + end + + def test_generate_classic_api_only_can_run_tests + run_hoboken(:generate, api_only: true) do + result = execute('rake test:all') + assert_match(/1 tests, 3 assertions, 0 failures, 0 errors/, result) + end + end + + def test_generate_classic_api_only_can_run_specs + run_hoboken(:generate, api_only: true, test_framework: 'rspec') do + result = execute('rake spec') + assert_match(/3 examples, 0 failures/, result) + end + end + + def test_generate_classic_passes_rubocop_inspection + run_hoboken(:generate) do + assert_match(/no offenses detected/, execute('rubocop')) + end + end + + def test_generate_classic_api_only_passes_rubocop_inspection + run_hoboken(:generate, api_only: true) do + assert_match(/no offenses detected/, execute('rubocop')) + end + end + + # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/AbcSize def test_generate_modular run_hoboken(:generate, type: :modular) do - assert_file ".env" - assert_file "Gemfile" - assert_file "README.md" - assert_file "Rakefile" - assert_file "app.rb", /require "sinatra\/base"/, /module Sample/, /class App < Sinatra::Base/ - assert_file "config.ru", /run Sample::App/ - assert_directory "public" - assert_file "test/test_helper.rb", /Sample::App/ - assert_file "views/index.erb" - assert_file "views/layout.erb" + assert_file '.env' + assert_file 'Gemfile' + assert_file('Procfile') + assert_file 'README.md' + assert_file 'Rakefile' + assert_file('app.rb', %r{require 'sinatra/base'}) + assert_file 'app.rb', %r{require 'sinatra/flash'} + assert_file('app.rb', /require 'erubi'/) + assert_file('app.rb', /module Sample/) + assert_file('app.rb', /class App < Sinatra::Base/) + assert_file 'app.rb', /set :erb, { escape_html: true }/ + assert_file 'app.rb', /register Sinatra::Flash/ + assert_file 'app.rb', /require 'better_errors'/ + assert_file 'bin/console' + assert_file 'bin/server' + assert_file 'bin/setup' + assert_file 'config.ru', /run Sample::App/ + assert_directory 'public' + assert_file 'test/support/rack_helpers.rb', /Sample::App/ + assert_file 'views/index.erb' + assert_file 'views/layout.erb', /styled_flash/ end end + # rubocop:enable Metrics/MethodLength + # rubocop:enable Metrics/AbcSize def test_generate_modular_tiny run_hoboken(:generate, tiny: true, type: :modular) do - refute_directory("public") - assert_file "app.rb", /__END__/, /@@layout/, /@@index/ + refute_directory('public') + assert_file 'app.rb', /__END__/, /@@layout/, /@@index/ end end - #def test_generate_modular_can_run_tests - #run_hoboken(:generate, type: :modular) do - #assert_match /1 tests, 1 assertions, 0 failures, 0 errors, 0 skips/, execute("rake test:all") - #end - #end + def test_generate_modular_api_only + run_hoboken(:generate, type: :modular, api_only: true) do + refute_directory('public') + refute_directory('views') + assert_file 'app.rb', %r{require 'sinatra/json'} + assert_file 'app.rb', /json message:/ + assert_file_does_not_have_content 'app.rb', %r{require 'sinatra/flash'} + assert_file_does_not_have_content 'app.rb', /register Sinatra::Flash/ + assert_file_does_not_have_content 'app.rb', /erb :index/ + assert_file_does_not_have_content 'app.rb', /set :erb, { escape_html: true }/ + end + end + def test_generate_modular_can_run_tests + run_hoboken(:generate, type: :modular) do + result = execute('rake test:all') + assert_match(/1 tests, 3 assertions, 0 failures, 0 errors/, result) + end + end + + def test_generate_modular_can_run_specs + run_hoboken(:generate, test_framework: 'rspec', type: :modular) do + result = execute('rake spec') + assert_match(/3 examples, 0 failures/, result) + end + end + + def test_generate_modular_api_only_can_run_tests + run_hoboken(:generate, api_only: true, type: :modular) do + result = execute('rake test:all') + assert_match(/1 tests, 3 assertions, 0 failures, 0 errors/, result) + end + end + + def test_generate_modular_api_only_can_run_specs + run_hoboken(:generate, test_framework: 'rspec', api_only: true, type: :modular) do + result = execute('rake spec') + assert_match(/3 examples, 0 failures/, result) + end + end + + def test_generate_modular_passes_rubocop_inspection + run_hoboken(:generate, type: :modular) do + assert_match(/no offenses detected/, execute('rubocop')) + end + end + + def test_generate_modular_api_only_passes_rubocop_inspection + run_hoboken(:generate, api_only: true, type: :modular) do + assert_match(/no offenses detected/, execute('rubocop')) + end + end + def test_generate_with_ruby_version - run_hoboken(:generate, ruby_version: "2.1.0") do - assert_file "Gemfile", /ruby "2\.1\.0"/ + run_hoboken(:generate, ruby_version: '2.1.0') do + assert_file 'Gemfile', /ruby '2\.1\.0'/ end end def test_generate_with_git run_hoboken(:generate, git: true) do - assert_directory ".git" + assert_directory '.git' end end end +# rubocop:enable Metrics/ClassLength