blue-eyes 1.3.3 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/.simplecov +8 -0
  4. data/Gemfile +24 -0
  5. data/Gemfile.lock +257 -0
  6. data/Guardfile +25 -0
  7. data/LICENSE +24 -0
  8. data/README.md +188 -0
  9. data/Rakefile +17 -0
  10. data/lib/.DS_Store +0 -0
  11. data/lib/blue_eyes/.DS_Store +0 -0
  12. data/lib/blue_eyes/cli.rb +26 -0
  13. data/lib/blue_eyes/extensions/string.rb +42 -0
  14. data/lib/blue_eyes/generators/.DS_Store +0 -0
  15. data/lib/blue_eyes/generators/app/.DS_Store +0 -0
  16. data/lib/blue_eyes/generators/app/app_generator.rb +163 -0
  17. data/lib/blue_eyes/generators/app/templates/.DS_Store +0 -0
  18. data/lib/blue_eyes/generators/app/templates/.rubocop.yml.erb +19 -0
  19. data/lib/blue_eyes/generators/app/templates/.rubocop_todo.yml.erb +1 -0
  20. data/lib/blue_eyes/generators/app/templates/.ruby-version.erb +1 -0
  21. data/lib/blue_eyes/generators/app/templates/.simplecov.erb +9 -0
  22. data/lib/blue_eyes/generators/app/templates/Gemfile.erb +39 -0
  23. data/lib/blue_eyes/generators/app/templates/Guardfile.erb +25 -0
  24. data/lib/blue_eyes/generators/app/templates/Procfile.dev.erb +6 -0
  25. data/lib/blue_eyes/generators/app/templates/Procfile.erb +1 -0
  26. data/lib/blue_eyes/generators/app/templates/README.md +1 -0
  27. data/lib/blue_eyes/generators/app/templates/Rakefile.erb +4 -0
  28. data/lib/blue_eyes/generators/app/templates/app/controllers/application_controller.rb +15 -0
  29. data/lib/blue_eyes/generators/app/templates/app/models/.gitkeep +0 -0
  30. data/lib/blue_eyes/generators/app/templates/app/views/layout.erb.tt +32 -0
  31. data/lib/blue_eyes/generators/app/templates/app/views/welcome.erb +23 -0
  32. data/lib/blue_eyes/generators/app/templates/bin/dev +11 -0
  33. data/lib/blue_eyes/generators/app/templates/config/db.yml +35 -0
  34. data/lib/blue_eyes/generators/app/templates/config/environment.rb +18 -0
  35. data/lib/blue_eyes/generators/app/templates/config/initializers/database.rb.erb +16 -0
  36. data/lib/blue_eyes/generators/app/templates/config/initializers/redis.rb +9 -0
  37. data/lib/blue_eyes/generators/app/templates/config/redis.yml +14 -0
  38. data/lib/blue_eyes/generators/app/templates/config.ru.erb +7 -0
  39. data/lib/blue_eyes/generators/app/templates/public/.DS_Store +0 -0
  40. data/lib/blue_eyes/generators/app/templates/public/favicon.ico +0 -0
  41. data/lib/blue_eyes/generators/app/templates/public/images/.gitkeep +0 -0
  42. data/lib/blue_eyes/generators/app/templates/public/images/blue-eyes-small.png +0 -0
  43. data/lib/blue_eyes/generators/app/templates/public/images/blue-eyes.svg +24 -0
  44. data/lib/blue_eyes/generators/app/templates/public/javascripts/.gitkeep +0 -0
  45. data/lib/blue_eyes/generators/app/templates/public/stylesheets/main.css +115 -0
  46. data/lib/blue_eyes/generators/app/templates/spec/application_controller_spec.rb +17 -0
  47. data/lib/blue_eyes/generators/app/templates/spec/factories/.gitkeep +0 -0
  48. data/lib/blue_eyes/generators/app/templates/spec/spec_helper.rb +45 -0
  49. data/lib/blue_eyes/generators/controller/controller_generator.rb +42 -0
  50. data/lib/blue_eyes/generators/controller/templates/controller.rb.erb +39 -0
  51. data/lib/blue_eyes/generators/controller/templates/views/edit.html.erb +1 -0
  52. data/lib/blue_eyes/generators/controller/templates/views/index.html.erb +1 -0
  53. data/lib/blue_eyes/generators/controller/templates/views/new.html.erb +1 -0
  54. data/lib/blue_eyes/generators/controller/templates/views/show.html.erb +1 -0
  55. data/lib/blue_eyes/generators/model/migration.rb.erb +13 -0
  56. data/lib/blue_eyes/generators/model/model.rb.erb +5 -0
  57. data/lib/blue_eyes/generators/model/model_factory.rb.erb +8 -0
  58. data/lib/blue_eyes/generators/model/model_generator.rb +68 -0
  59. data/lib/blue_eyes/generators/model/model_spec.rb.erb +48 -0
  60. data/lib/blue_eyes/generators/scaffold/scaffold_generator.rb +25 -0
  61. data/lib/blue_eyes/version.rb +11 -0
  62. data/lib/blue_eyes.rb +13 -0
  63. data/test/blue_eyes/cli_test.rb +20 -0
  64. data/test/blue_eyes/extensions/string_test.rb +71 -0
  65. data/test/blue_eyes/generators/app_generator_test.rb +142 -0
  66. data/test/blue_eyes/generators/controller/controller_generator_test.rb +57 -0
  67. data/test/blue_eyes/generators/model/model_generator_test.rb +40 -0
  68. data/test/blue_eyes/generators/scaffold/scaffold_generator_test.rb +21 -0
  69. data/test/blue_eyes/version_test.rb +24 -0
  70. data/test/blue_eyes_test.rb +1 -0
  71. data/test/test_helper.rb +6 -0
  72. metadata +71 -1
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Ensure environment is set to test
4
+ ENV['RACK_ENV'] = ENV['SINATRA_ENV'] = 'test'
5
+
6
+ require_relative '../config/environment'
7
+ require 'capybara/rspec'
8
+ require 'capybara/dsl'
9
+ require 'factory_bot'
10
+ require 'pry'
11
+ require 'rack/test'
12
+ require 'simplecov'
13
+
14
+ def app
15
+ Rack::Builder.parse_file('config.ru')
16
+ end
17
+
18
+ ActiveRecord::Base.logger = nil
19
+ ActiveRecord::Migration.check_all_pending!
20
+ Capybara.app = app
21
+ DatabaseCleaner.strategy = :truncation
22
+
23
+ configure :test do
24
+ disable :protection # bypass DoS
25
+ end
26
+
27
+ RSpec.configure do |config|
28
+ config.run_all_when_everything_filtered = true
29
+ config.filter_run :focus
30
+ config.include Capybara::DSL
31
+ config.include FactoryBot::Syntax::Methods
32
+ config.include Rack::Test::Methods
33
+
34
+ config.before do
35
+ DatabaseCleaner.clean
36
+ end
37
+
38
+ config.before(:suite) do
39
+ FactoryBot.find_definitions
40
+ end
41
+
42
+ config.after do
43
+ DatabaseCleaner.clean
44
+ end
45
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor/group'
4
+ require 'active_support/inflector'
5
+
6
+ module BlueEyes
7
+ module Generators
8
+ # Generates a Rails-style Controller with associated views
9
+ class ControllerGenerator < Thor::Group
10
+ include Thor::Actions
11
+
12
+ attr_reader :controller_name, :class_name, :file_name
13
+
14
+ desc 'Generate an Controller with associated views'
15
+ argument :name, type: :string, desc: 'Name of the controller'
16
+
17
+ # --no-views make views optional
18
+ class_option :views, type: :boolean, default: true, desc: 'Generate views for controller'
19
+
20
+ def self.source_root
21
+ File.dirname(__FILE__)
22
+ end
23
+
24
+ def setup
25
+ @controller_name = name.pluralize.underscore
26
+ @class_name = "#{controller_name.camel_case}Controller"
27
+ @file_name = class_name.underscore
28
+ end
29
+
30
+ def create_controller
31
+ template 'templates/controller.rb.erb', File.join('app/controllers', "#{file_name}.rb")
32
+ insert_into_file 'config.ru', "use #{class_name}\n", after: "run ApplicationController\n"
33
+ end
34
+
35
+ def create_views
36
+ return unless options[:views]
37
+
38
+ directory 'templates/views', File.join('app/views', controller_name.to_s)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ # <%= class_name %> controller
4
+ class <%= class_name %> < ApplicationController
5
+ # GET: /<%= controller_name %>
6
+ get '/<%= controller_name %>' do
7
+ erb :'/<%= controller_name %>/index.html'
8
+ end
9
+
10
+ # GET: /<%= controller_name %>/new
11
+ get '/<%= controller_name %>/new' do
12
+ erb :'/<%= controller_name %>/new.html'
13
+ end
14
+
15
+ # POST: /<%= controller_name %>
16
+ post '/<%= controller_name %>' do
17
+ redirect '/<%= controller_name %>'
18
+ end
19
+
20
+ # GET: /<%= controller_name %>/5
21
+ get '/<%= controller_name %>/:id' do
22
+ erb :'/<%= controller_name %>/show.html'
23
+ end
24
+
25
+ # GET: /<%= controller_name %>/5/edit
26
+ get '/<%= controller_name %>/:id/edit' do
27
+ erb :'/<%= controller_name %>/edit.html'
28
+ end
29
+
30
+ # PATCH: /<%= controller_name %>/5
31
+ patch '/<%= controller_name %>/:id' do
32
+ redirect '/<%= controller_name %>/:id'
33
+ end
34
+
35
+ # DELETE: /<%= controller_name %>/5/delete
36
+ delete '/<%= controller_name %>/:id/delete' do
37
+ redirect '/<%= controller_name %>'
38
+ end
39
+ end
@@ -0,0 +1 @@
1
+ <h1>Insert the form to edit an instance of your model here.</h1>
@@ -0,0 +1 @@
1
+ <h1>This is the Model's index page.</h1>
@@ -0,0 +1 @@
1
+ <h1>Insert the form to create a new instance of your model.</h1>
@@ -0,0 +1 @@
1
+ <h1>This is the show page for an individual instance of your model.</h1>
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # <%= migration_class_name %> migration
4
+ class <%= migration_class_name %> < ActiveRecord::Migration[5.2]
5
+ def change
6
+ create_table :<%= table_name %> do |t|
7
+ <% attributes.each do |attribute| -%>
8
+ t.<%= attribute[:type] %> :<%= attribute[:name] %>
9
+ <% end %>
10
+ t.timestamps null: false
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ # <%= class_name %> model
4
+ class <%= class_name %> < ActiveRecord::Base
5
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :<%= file_name %> do
5
+ # TODO: Add attributes with faker data
6
+ # name { Faker::Name.name }
7
+ end
8
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor/group'
4
+ require 'active_support/inflector'
5
+
6
+ module BlueEyes
7
+ module Generators
8
+ # Generates an ActiveRecord model
9
+ class ModelGenerator < Thor::Group
10
+ include Thor::Actions
11
+
12
+ attr_reader :file_name, :class_name, :model_name, :migration_name, :migration_class_name, :table_name
13
+
14
+ desc 'Generate an ActiveRecord model'
15
+ argument :name, type: :string, desc: 'Name of the model'
16
+ argument :attributes, type: :array, default: [], banner: 'field:type field:type'
17
+
18
+ # --no-migration make migrations optional
19
+ class_option :migration, type: :boolean, default: true, desc: 'Generate migration for model'
20
+
21
+ def self.source_root
22
+ File.dirname(__FILE__)
23
+ end
24
+
25
+ def setup
26
+ @model_name = name.singularize
27
+ @class_name = model_name.camel_case
28
+ @file_name = model_name.underscore
29
+ @table_name = file_name.pluralize
30
+ @migration_name = "create_#{table_name}"
31
+ @migration_class_name = migration_name.camel_case
32
+
33
+ attributes.map! do |attribute|
34
+ field = attribute.split(':')
35
+ { name: field[0], type: field[1] || 'string' }
36
+ end
37
+ end
38
+
39
+ def create_model
40
+ unless model_name == name
41
+ say '[WARNING] ' &
42
+ "The model name '#{name}' was recognized as a plural, using the singular '#{model_name}' instead."
43
+ end
44
+
45
+ template 'model.rb.erb', File.join('app/models', "#{file_name}.rb")
46
+ end
47
+
48
+ def create_migration
49
+ return unless options[:migration]
50
+
51
+ migration_files = Dir.entries('db/migrate').reject { |path| File.directory? path }
52
+
53
+ if (duplicate = migration_files.find { |file| file.include?(migration_name) })
54
+ say_status :identical, "db/migrate/#{duplicate}", :blue
55
+ else
56
+ version = Time.now.utc.strftime('%Y%m%d%H%M%S')
57
+ migration_file_name = "#{version}_#{migration_name}.rb"
58
+
59
+ template 'migration.rb.erb', File.join('db/migrate', migration_file_name)
60
+ end
61
+ end
62
+
63
+ def create_spec
64
+ template 'model_spec.rb.erb', File.join('spec/models', "#{file_name}_spec.rb")
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../spec_helper'
4
+
5
+ describe <%= class_name %> do
6
+ it 'has a valid factory' do
7
+ skip 'factories not implemented'
8
+ expect(build(:<%= file_name %>)).to be_valid
9
+ end
10
+
11
+ it 'instantiates' do
12
+ expect(described_class.new).to be_valid
13
+ end
14
+ # TODO: implement attribute tests
15
+ # <% attributes.each do |attribute| -%>
16
+ # it '#<%= attribute[:name] %>' do
17
+ # skip 'attribute type not implemented'
18
+ # case <%= attribute[:type] %>
19
+ # when 'string'
20
+ # expect(described_class.new).to be_valid
21
+ # when 'integer'
22
+ # expect(described_class.new).to be_valid
23
+ # when 'float'
24
+ # expect(described_class.new).to be_valid
25
+ # when 'boolean'
26
+ # expect(described_class.new).to be_valid
27
+ # when 'date'
28
+ # expect(described_class.new).to be_valid
29
+ # when 'datetime'
30
+ # expect(described_class.new).to be_valid
31
+ # when 'time'
32
+ # expect(described_class.new).to be_valid
33
+ # when 'decimal'
34
+ # expect(described_class.new).to be_valid
35
+ # when 'text'
36
+ # expect(described_class.new).to be_valid
37
+ # when 'binary'
38
+ # expect(described_class.new).to be_valid
39
+ # when 'json'
40
+ # expect(described_class.new).to be_valid
41
+ # when 'jsonb'
42
+ # expect(described_class.new).to be_valid
43
+ # when 'uuid'
44
+ # expect(described_class.new).to be_valid
45
+ # end
46
+ # end
47
+ # <% end %>
48
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor/group'
4
+ require 'active_support/inflector'
5
+
6
+ module BlueEyes
7
+ module Generators
8
+ # Generates Rails-style scaffold
9
+ class ScaffoldGenerator < Thor::Group
10
+ include Thor::Actions
11
+
12
+ desc "Generate an ActiveRecord model with it's associated views and controllers"
13
+ argument :name, type: :string, desc: 'Name of the model'
14
+ argument :attributes, type: :array, default: [], banner: 'field:type field:type'
15
+
16
+ def create_model
17
+ ModelGenerator.new([name, attributes]).invoke_all
18
+ end
19
+
20
+ def create_controller
21
+ ControllerGenerator.new([name]).invoke_all
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BlueEyes
4
+ module VERSION
5
+ MAJOR = 1
6
+ MINOR = 3
7
+ TINY = 4
8
+
9
+ STRING = [MAJOR, MINOR, TINY].join('.')
10
+ end
11
+ end
data/lib/blue_eyes.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'blue_eyes/extensions/string'
4
+ require 'blue_eyes/generators/app/app_generator'
5
+ require 'blue_eyes/generators/controller/controller_generator'
6
+ require 'blue_eyes/generators/model/model_generator'
7
+ require 'blue_eyes/generators/scaffold/scaffold_generator'
8
+ require 'blue_eyes/cli'
9
+ require 'blue_eyes/version'
10
+
11
+ # BlueEyes is a Rails-style generator for Sinatra
12
+ module BlueEyes
13
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../test_helper'
4
+
5
+ class CLITest < Minitest::Test
6
+ def subject
7
+ BlueEyes::CLI
8
+ end
9
+
10
+ def test_version
11
+ expected_response = "BlueEyes #{BlueEyes::VERSION::STRING}"
12
+ assert_output(/#{expected_response}/) do
13
+ subject.new.version
14
+ end
15
+ end
16
+
17
+ def test_exit_on_failure
18
+ assert subject.exit_on_failure
19
+ end
20
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: false
2
+
3
+ require_relative '../../test_helper'
4
+ # require_relative "../../../lib/blue_eyes/extensions/string"
5
+
6
+ CAMEL_CASES = [
7
+ %w[my_app MyApp],
8
+ %w[my_App MyApp],
9
+ %w[MY_APP MyApp],
10
+ %w[my-app MyApp],
11
+ %w[MY-APP MyApp],
12
+ %w[myapp Myapp],
13
+ %w[MyApp MyApp]
14
+ ].freeze
15
+
16
+ DIRECTORY_NAME_CASES = [
17
+ %w[my_app my_app],
18
+ %w[my_App my_app],
19
+ %w[MY_APP my_app],
20
+ %w[my-app my-app],
21
+ %w[my-App my-app],
22
+ %w[MY-APP my-app],
23
+ %w[myapp myapp],
24
+ %w[MyApp myapp]
25
+ ].freeze
26
+
27
+ FILE_NAME_CASES = [
28
+ %w[my_app my_app],
29
+ %w[my_App my_app],
30
+ %w[MY_APP my_app],
31
+ %w[my-app my_app],
32
+ %w[MY-APP my_app],
33
+ %w[myapp myapp],
34
+ %w[MyApp my_app]
35
+ ].freeze
36
+
37
+ module BlueEyes
38
+ module Extensions
39
+ class StringTest < Minitest::Test
40
+ def test_camel_case
41
+ CAMEL_CASES.each do |input, expected|
42
+ assert_equal input.camel_case, expected
43
+ end
44
+ end
45
+
46
+ def test_camel_case!
47
+ CAMEL_CASES.each do |input, expected|
48
+ assert_equal input.camel_case!, expected
49
+ end
50
+ end
51
+
52
+ def test_directory_name
53
+ DIRECTORY_NAME_CASES.each do |input, expected|
54
+ assert_equal input.directory_name, expected
55
+ end
56
+ end
57
+
58
+ def test_file_name
59
+ FILE_NAME_CASES.each do |input, expected|
60
+ assert_equal input.file_name, expected
61
+ end
62
+ end
63
+
64
+ def test_file_name!
65
+ FILE_NAME_CASES.each do |input, expected|
66
+ assert_equal input.file_name!, expected
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,142 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../test_helper'
4
+
5
+ class AppGeneratorTest < Minitest::Test
6
+ def subject
7
+ BlueEyes::Generators::AppGenerator
8
+ end
9
+
10
+ def test_source_root
11
+ root_path = File.expand_path('../../..', __dir__)
12
+ absolute_template_path = [root_path, '/lib/blue_eyes/generators/app/templates'].join
13
+
14
+ assert_equal subject.source_root, absolute_template_path
15
+ end
16
+
17
+ def test_create_app_directory
18
+ skip 'broken test'
19
+ subject.new.create_app_directory
20
+
21
+ assert subject.invoked
22
+ end
23
+
24
+ def test_create_app_spec
25
+ skip 'broken test'
26
+ subject.new.create_app_spec
27
+
28
+ assert subject.invoked
29
+ end
30
+
31
+ def test_create_capistrano_config
32
+ skip 'broken test'
33
+ subject.new.create_capistrano_config
34
+
35
+ assert subject.invoked
36
+ end
37
+
38
+ def test_create_config
39
+ skip 'broken test'
40
+ subject.new.create_config
41
+
42
+ assert subject.invoked
43
+ end
44
+
45
+ def test_create_database_initializer
46
+ skip 'broken test'
47
+ subject.new.create_database_initializer(['Post', 'title:string', 'body:text'])
48
+
49
+ assert subject.invoked
50
+ end
51
+
52
+ def test_create_db_config
53
+ skip 'broken test'
54
+ subject.new.create_db_config
55
+
56
+ assert subject.invoked
57
+ end
58
+
59
+ def test_create_empty_directories
60
+ skip 'broken test'
61
+ subject.new.create_empty_directories(['Post', 'title:string', 'body:text'])
62
+
63
+ assert subject.invoked
64
+ end
65
+
66
+ def test_create_gemfile
67
+ skip 'broken test'
68
+ subject.new.create_gemfile
69
+
70
+ assert subject.invoked
71
+ end
72
+
73
+ def test_create_public_directory
74
+ skip 'broken test'
75
+ subject.new.create_public_directory
76
+
77
+ assert subject.invoked
78
+ end
79
+
80
+ def test_create_rakefile
81
+ skip 'broken test'
82
+ subject.new.create_rakefile
83
+
84
+ assert subject.invoked
85
+ end
86
+
87
+ def test_create_readme
88
+ skip 'broken test'
89
+ subject.new.create_readme
90
+
91
+ assert subject.invoked
92
+ end
93
+
94
+ def test_create_redis_config
95
+ skip 'broken test'
96
+ subject.new.create_redis_config
97
+
98
+ assert subject.invoked
99
+ end
100
+
101
+ def test_create_redis_initializer
102
+ skip 'broken test'
103
+ subject.new.create_redis_initializer
104
+
105
+ assert subject.invoked
106
+ end
107
+
108
+ def test_create_rvm_gemset
109
+ skip 'broken test'
110
+ subject.new.create_rvm_gemset
111
+
112
+ assert subject.invoked
113
+ end
114
+
115
+ def test_create_spec_helper
116
+ skip 'broken test'
117
+ subject.new.create_spec_helper
118
+
119
+ assert subject.invoked
120
+ end
121
+
122
+ def test_initialize_git_repo
123
+ skip 'broken test'
124
+ subject.new.initialize_git_repo
125
+
126
+ assert subject.invoked
127
+ end
128
+
129
+ def test_install_dependencies
130
+ skip 'broken test'
131
+ subject.new.install_dependencies
132
+
133
+ assert subject.invoked
134
+ end
135
+
136
+ def test_setup
137
+ skip 'broken test'
138
+ subject.new.setup
139
+
140
+ assert subject.invoked
141
+ end
142
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../test_helper'
4
+
5
+ class ControllerGeneratorTest < Minitest::Test
6
+ def subject
7
+ BlueEyes::Generators::ControllerGenerator
8
+ end
9
+
10
+ def test_source_root
11
+ root_path = File.expand_path('../../../..', __dir__)
12
+ absolute_template_path = [root_path, '/lib/blue_eyes/generators/controller'].join
13
+
14
+ assert_equal subject.source_root, absolute_template_path
15
+ end
16
+
17
+ def test_create_controller
18
+ skip 'broken test'
19
+ generator = BlueEyes::Generators::ControllerGenerator.new(['PostsController'])
20
+ generator.create_controller
21
+
22
+ assert generator.invoked
23
+ end
24
+
25
+ def test_create_controller_with_attributes
26
+ skip 'broken test'
27
+ generator = BlueEyes::Generators::ControllerGenerator.new(['PostsController', 'title:string', 'body:text'])
28
+ generator.create_controller
29
+
30
+ assert generator.invoked
31
+ end
32
+
33
+ def test_create_controller_with_attributes_and_options
34
+ skip 'broken test'
35
+ generator = BlueEyes::Generators::ControllerGenerator.new(['PostsController', 'title:string', 'body:text'],
36
+ ['--skip-test-framework'])
37
+ generator.create_controller
38
+
39
+ assert generator.invoked
40
+ end
41
+
42
+ def test_create_views
43
+ skip 'broken test'
44
+ generator = BlueEyes::Generators::ControllerGenerator.new(['PostsController'])
45
+ generator.create_views
46
+
47
+ assert generator.invoked
48
+ end
49
+
50
+ def test_setup
51
+ skip 'broken test'
52
+ generator = BlueEyes::Generators::ControllerGenerator.new(['PostsController'])
53
+ generator.setup
54
+
55
+ assert generator.invoked
56
+ end
57
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../test_helper'
4
+
5
+ class ModelGeneratorTest < Minitest::Test
6
+ def subject
7
+ BlueEyes::Generators::ModelGenerator
8
+ end
9
+
10
+ def test_source_root
11
+ root_path = File.expand_path('../../../..', __dir__)
12
+ absolute_template_path = [root_path, '/lib/blue_eyes/generators/model'].join
13
+
14
+ assert_equal subject.source_root, absolute_template_path
15
+ end
16
+
17
+ def test_create_model
18
+ skip 'broken test'
19
+ generator = BlueEyes::Generators::ModelGenerator.new(['Post'])
20
+ generator.create_model
21
+
22
+ assert generator.invoked
23
+ end
24
+
25
+ def test_create_migrations
26
+ skip 'broken test'
27
+ generator = BlueEyes::Generators::ModelGenerator.new(['Post', 'title:string', 'body:text'])
28
+ generator.create_migrations
29
+
30
+ assert generator.invoked
31
+ end
32
+
33
+ def test_setup
34
+ skip 'broken test'
35
+ generator = BlueEyes::Generators::ModelGenerator.new(['Post', 'title:string', 'body:text'])
36
+ generator.setup
37
+
38
+ assert generator.invoked
39
+ end
40
+ end