/test/generators/scaffold_generator_test.rb

https://github.com/meleyal/backbone-on-rails · Ruby · 174 lines · 143 code · 28 blank · 3 comment · 0 complexity · 96637cd4c177d423f3f1511fc14a545d MD5 · raw file

  1. require 'test_helper'
  2. require 'generators/backbone/helpers'
  3. require "generators/backbone/scaffold/scaffold_generator"
  4. class ScaffoldGeneratorTest < Rails::Generators::TestCase
  5. tests Backbone::Generators::ScaffoldGenerator
  6. # Include custom helpers
  7. include Backbone::Generators::Helpers
  8. # Generator output directory ('Rails.root')
  9. destination File.expand_path("../../tmp", __FILE__)
  10. # Erase destination directory
  11. setup :prepare_destination
  12. test "model coffee file is created" do
  13. run_generator ['planet']
  14. assert_file "#{model_path}/planet.js.coffee" do |content|
  15. assert_match('class Dummy.Models.Planet', content)
  16. end
  17. end
  18. test "model coffee file is created with custom Appname" do
  19. run_generator ['planet', '-a=Custom']
  20. assert_file "#{model_path}/planet.js.coffee" do |content|
  21. assert_match('class Custom.Models.Planet', content)
  22. end
  23. end
  24. test "model coffee file is created in a subdir" do
  25. run_generator ['planet', '--dir=custom']
  26. assert_file "app/assets/javascripts/custom/models/planet.js.coffee" do |content|
  27. assert_match('class Dummy.Models.Planet', content)
  28. end
  29. end
  30. test "model javascript file is created" do
  31. run_generator ['planet', '--javascript']
  32. assert_file "#{model_path}/planet.js" do |content|
  33. assert_match('Dummy.Models.Planet = Backbone.Model.extend', content)
  34. end
  35. end
  36. test "collection coffee file is created" do
  37. run_generator ['planet']
  38. assert_file "#{collection_path}/planets.js.coffee" do |content|
  39. assert_match('class Dummy.Collections.Planets', content)
  40. assert_match('model: Dummy.Models.Planet', content)
  41. end
  42. end
  43. test "collection coffee file is created with custom App" do
  44. run_generator ['planet', '-a=Custom']
  45. assert_file "#{collection_path}/planets.js.coffee" do |content|
  46. assert_match('class Custom.Collections.Planets', content)
  47. assert_match('model: Custom.Models.Planet', content)
  48. end
  49. end
  50. test "collection coffee file is created in a subdir" do
  51. run_generator ['planet', '--dir=custom', '--app=Custom']
  52. assert_file "app/assets/javascripts/custom/collections/planets.js.coffee" do |content|
  53. assert_match('class Custom.Collections.Planets', content)
  54. assert_match('model: Custom.Models.Planet', content)
  55. end
  56. end
  57. test "collection javascript file is created" do
  58. run_generator ['planet', '--javascript']
  59. assert_file "#{collection_path}/planets.js" do |content|
  60. assert_match('Dummy.Collections.Planets = Backbone.Collection.extend', content)
  61. assert_match('model: Dummy.Models.Planet', content)
  62. end
  63. end
  64. test "router coffee file is created" do
  65. run_generator ['planet']
  66. assert_file "#{router_path}/planets_router.js.coffee" do |content|
  67. assert_match('class Dummy.Routers.Planets', content)
  68. end
  69. end
  70. test "router javascript file is created" do
  71. run_generator ['planet', '--javascript']
  72. assert_file "#{router_path}/planets_router.js" do |content|
  73. assert_match('Dummy.Routers.Planets = Backbone.Router.extend', content)
  74. end
  75. end
  76. test "router coffee file is created in a subdir" do
  77. run_generator ['planet', '--dir=custom']
  78. assert_file "app/assets/javascripts/custom/routers/planets_router.js.coffee" do |content|
  79. assert_match('class Dummy.Routers.Planets', content)
  80. end
  81. end
  82. test "router coffee file is created with custom appname" do
  83. run_generator ['planet', '-a=Custom']
  84. assert_file "#{router_path}/planets_router.js.coffee" do |content|
  85. assert_match('class Custom.Routers.Planets', content)
  86. end
  87. end
  88. test "view coffee file is created" do
  89. run_generator ['planet']
  90. assert_file "#{view_path}/planets/planets_index.js.coffee" do |content|
  91. assert_match('class Dummy.Views.PlanetsIndex', content)
  92. assert_match("template: JST['planets/index']", content)
  93. end
  94. end
  95. test "view coffee file is created in subdir" do
  96. run_generator ['planet', '-d=custom']
  97. assert_file "app/assets/javascripts/custom/views/planets/planets_index.js.coffee" do |content|
  98. assert_match('class Dummy.Views.PlanetsIndex', content)
  99. assert_match("template: JST['custom/planets/index']", content)
  100. end
  101. end
  102. test "view javascript file is created" do
  103. run_generator ['planet', '--javascript']
  104. assert_file "#{view_path}/planets/planets_index.js" do |content|
  105. assert_match('Dummy.Views.PlanetsIndex = Backbone.View.extend', content)
  106. assert_match("template: JST['planets/index']", content)
  107. end
  108. end
  109. test "view coffee file is created with a different template controller" do
  110. run_generator ['planet', '--template_namespace=SHT']
  111. assert_file "#{view_path}/planets/planets_index.js.coffee" do |content|
  112. assert_match('class Dummy.Views.PlanetsIndex', content)
  113. assert_match("template: SHT['planets/index']", content)
  114. end
  115. end
  116. test "view javascript file is created with a different template controller" do
  117. run_generator ['planet', '--javascript', '--template_namespace=SHT']
  118. assert_file "#{view_path}/planets/planets_index.js" do |content|
  119. assert_match('Dummy.Views.PlanetsIndex = Backbone.View.extend', content)
  120. assert_match("template: SHT['planets/index']", content)
  121. end
  122. end
  123. test "view coffee file is created with custom appname" do
  124. run_generator ['planet', '-a=Custom']
  125. assert_file "#{view_path}/planets/planets_index.js.coffee" do |content|
  126. assert_match('class Custom.Views.PlanetsIndex', content)
  127. assert_match("template: JST['planets/index']", content)
  128. end
  129. end
  130. test "template eco file is created with handlebars" do
  131. run_generator ['planet', '--template=hbs']
  132. assert_file "#{template_path}/planets/index.hbs"
  133. end
  134. test "template eco file is created" do
  135. run_generator ['planet']
  136. assert_file "#{template_path}/planets/index.jst.eco"
  137. end
  138. test "template eco file is created in subdir" do
  139. run_generator ['planet', '-d=custom']
  140. assert_file "app/assets/templates/custom/planets/index.jst.eco"
  141. end
  142. test "template jst file is created" do
  143. run_generator ['planet', '--javascript']
  144. assert_file "#{template_path}/planets/index.jst.ejs"
  145. end
  146. end