PageRenderTime 65ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/padrino-gen/test/test_helper_generator.rb

http://github.com/padrino/padrino-framework
Ruby | 132 lines | 115 code | 17 blank | 0 comment | 1 complexity | b64047582108fcff24a216a6b8799ebf MD5 | raw file
Possible License(s): MIT
  1. require File.expand_path(File.dirname(__FILE__) + '/helper')
  2. describe "HelperGenerator" do
  3. def setup
  4. @apptmp = "#{Dir.tmpdir}/padrino-tests/#{SecureRandom.hex}"
  5. `mkdir -p #{@apptmp}`
  6. @helper_path = "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb"
  7. @helper_test_path = "#{@apptmp}/sample_project/test/app/helpers/demo_items_helper_test.rb"
  8. end
  9. def teardown
  10. `rm -rf #{@apptmp}`
  11. end
  12. describe 'the helper generator' do
  13. it 'should fail outside app root' do
  14. out, err = capture_io { generate(:helper, 'demo', "-r=#{@apptmp}") }
  15. assert_match(/not at the root/, out)
  16. assert_no_file_exists("#{@apptmp}/app/helpers/demo_helper.rb")
  17. end
  18. it 'should fail with NameError if given invalid namespace names' do
  19. capture_io { generate(:project, "sample", "--root=#{@apptmp}") }
  20. assert_raises(::NameError) { capture_io { generate(:helper, "wrong/name", "--root=#{@apptmp}/sample") } }
  21. end
  22. it 'should generate helper within existing project' do
  23. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
  24. capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/sample_project") }
  25. assert_match_in_file(/module SampleProject/, @helper_path)
  26. assert_match_in_file(/class App/, @helper_path)
  27. assert_match_in_file(/module DemoItemsHelper/, @helper_path)
  28. assert_match_in_file(/helpers DemoItemsHelper/, @helper_path)
  29. assert_file_exists(@helper_path)
  30. assert_file_exists(@helper_test_path)
  31. end
  32. it 'should generate helper within existing project with weird name' do
  33. capture_io { generate(:project, 'warepedia', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
  34. capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/warepedia") }
  35. assert_match_in_file(/helpers DemoItemsHelper/, "#{@apptmp}/warepedia/app/helpers/demo_items_helper.rb")
  36. end
  37. it 'should generate helper in specified app' do
  38. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
  39. capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
  40. capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
  41. assert_match_in_file(/helpers DemoItemsHelper/m, "#{@apptmp}/sample_project/subby/helpers/demo_items_helper.rb")
  42. end
  43. it 'should not fail if we do not have test component' do
  44. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=none') }
  45. capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/sample_project") }
  46. assert_match_in_file(/helpers DemoItemsHelper/m, "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
  47. assert_no_file_exists("#{@apptmp}/sample_project/test")
  48. end
  49. it 'should generate helper test for bacon' do
  50. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
  51. capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
  52. capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
  53. assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
  54. end
  55. it 'should generate helper test for minitest' do
  56. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=minitest') }
  57. capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
  58. capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
  59. assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
  60. end
  61. it 'should generate helper test for rspec' do
  62. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
  63. capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
  64. capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
  65. assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, "#{@apptmp}/sample_project/spec/subby/helpers/demo_items_helper_spec.rb")
  66. end
  67. it 'should generate helper test for shoulda' do
  68. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda') }
  69. capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
  70. capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
  71. expected_pattern = /class DemoItemsHelperTest < Test::Unit::TestCase/m
  72. assert_match_in_file(/context "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
  73. assert_file_exists(@helper_test_path.gsub('app','subby'))
  74. assert_file_exists("#{@apptmp}/sample_project/test/subby/helpers/demo_items_helper_test.rb")
  75. end
  76. it "should generate helper test for testunit" do
  77. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=testunit', '--script=none') }
  78. capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
  79. capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
  80. assert_match_in_file(/class DemoItemsHelperTest < Test::Unit::TestCase/m, "#{@apptmp}/sample_project/test/subby/helpers/demo_items_helper_test.rb")
  81. assert_match_in_file(/@helpers\.extend SampleProject::Subby::DemoItemsHelper/m, "#{@apptmp}/sample_project/test/subby/helpers/demo_items_helper_test.rb")
  82. end
  83. it 'should correctly generate file names' do
  84. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
  85. capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/sample_project") }
  86. assert_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
  87. assert_file_exists("#{@apptmp}/sample_project/spec/app/helpers/demo_items_helper_spec.rb")
  88. end
  89. end
  90. describe "the helper destroy option" do
  91. it 'should destroy helper files' do
  92. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
  93. capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project") }
  94. capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
  95. assert_no_file_exists(@helper_path)
  96. assert_no_file_exists(@helper_test_path)
  97. assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
  98. end
  99. it 'should destroy helper files with rspec' do
  100. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
  101. capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project") }
  102. capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
  103. assert_no_file_exists(@helper_path)
  104. assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
  105. assert_no_file_exists("#{@apptmp}/sample_project/spec/app/helpers/demo_items_helper_spec.rb")
  106. end
  107. it 'should destroy helper files in sub apps' do
  108. capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
  109. capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
  110. capture_io { generate(:helper, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project") }
  111. capture_io { generate(:helper, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project",'-d') }
  112. assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
  113. end
  114. end
  115. end