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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/.simplecov +8 -0
- data/Gemfile +24 -0
- data/Gemfile.lock +257 -0
- data/Guardfile +25 -0
- data/LICENSE +24 -0
- data/README.md +188 -0
- data/Rakefile +17 -0
- data/lib/.DS_Store +0 -0
- data/lib/blue_eyes/.DS_Store +0 -0
- data/lib/blue_eyes/cli.rb +26 -0
- data/lib/blue_eyes/extensions/string.rb +42 -0
- data/lib/blue_eyes/generators/.DS_Store +0 -0
- data/lib/blue_eyes/generators/app/.DS_Store +0 -0
- data/lib/blue_eyes/generators/app/app_generator.rb +163 -0
- data/lib/blue_eyes/generators/app/templates/.DS_Store +0 -0
- data/lib/blue_eyes/generators/app/templates/.rubocop.yml.erb +19 -0
- data/lib/blue_eyes/generators/app/templates/.rubocop_todo.yml.erb +1 -0
- data/lib/blue_eyes/generators/app/templates/.ruby-version.erb +1 -0
- data/lib/blue_eyes/generators/app/templates/.simplecov.erb +9 -0
- data/lib/blue_eyes/generators/app/templates/Gemfile.erb +39 -0
- data/lib/blue_eyes/generators/app/templates/Guardfile.erb +25 -0
- data/lib/blue_eyes/generators/app/templates/Procfile.dev.erb +6 -0
- data/lib/blue_eyes/generators/app/templates/Procfile.erb +1 -0
- data/lib/blue_eyes/generators/app/templates/README.md +1 -0
- data/lib/blue_eyes/generators/app/templates/Rakefile.erb +4 -0
- data/lib/blue_eyes/generators/app/templates/app/controllers/application_controller.rb +15 -0
- data/lib/blue_eyes/generators/app/templates/app/models/.gitkeep +0 -0
- data/lib/blue_eyes/generators/app/templates/app/views/layout.erb.tt +32 -0
- data/lib/blue_eyes/generators/app/templates/app/views/welcome.erb +23 -0
- data/lib/blue_eyes/generators/app/templates/bin/dev +11 -0
- data/lib/blue_eyes/generators/app/templates/config/db.yml +35 -0
- data/lib/blue_eyes/generators/app/templates/config/environment.rb +18 -0
- data/lib/blue_eyes/generators/app/templates/config/initializers/database.rb.erb +16 -0
- data/lib/blue_eyes/generators/app/templates/config/initializers/redis.rb +9 -0
- data/lib/blue_eyes/generators/app/templates/config/redis.yml +14 -0
- data/lib/blue_eyes/generators/app/templates/config.ru.erb +7 -0
- data/lib/blue_eyes/generators/app/templates/public/.DS_Store +0 -0
- data/lib/blue_eyes/generators/app/templates/public/favicon.ico +0 -0
- data/lib/blue_eyes/generators/app/templates/public/images/.gitkeep +0 -0
- data/lib/blue_eyes/generators/app/templates/public/images/blue-eyes-small.png +0 -0
- data/lib/blue_eyes/generators/app/templates/public/images/blue-eyes.svg +24 -0
- data/lib/blue_eyes/generators/app/templates/public/javascripts/.gitkeep +0 -0
- data/lib/blue_eyes/generators/app/templates/public/stylesheets/main.css +115 -0
- data/lib/blue_eyes/generators/app/templates/spec/application_controller_spec.rb +17 -0
- data/lib/blue_eyes/generators/app/templates/spec/factories/.gitkeep +0 -0
- data/lib/blue_eyes/generators/app/templates/spec/spec_helper.rb +45 -0
- data/lib/blue_eyes/generators/controller/controller_generator.rb +42 -0
- data/lib/blue_eyes/generators/controller/templates/controller.rb.erb +39 -0
- data/lib/blue_eyes/generators/controller/templates/views/edit.html.erb +1 -0
- data/lib/blue_eyes/generators/controller/templates/views/index.html.erb +1 -0
- data/lib/blue_eyes/generators/controller/templates/views/new.html.erb +1 -0
- data/lib/blue_eyes/generators/controller/templates/views/show.html.erb +1 -0
- data/lib/blue_eyes/generators/model/migration.rb.erb +13 -0
- data/lib/blue_eyes/generators/model/model.rb.erb +5 -0
- data/lib/blue_eyes/generators/model/model_factory.rb.erb +8 -0
- data/lib/blue_eyes/generators/model/model_generator.rb +68 -0
- data/lib/blue_eyes/generators/model/model_spec.rb.erb +48 -0
- data/lib/blue_eyes/generators/scaffold/scaffold_generator.rb +25 -0
- data/lib/blue_eyes/version.rb +11 -0
- data/lib/blue_eyes.rb +13 -0
- data/test/blue_eyes/cli_test.rb +20 -0
- data/test/blue_eyes/extensions/string_test.rb +71 -0
- data/test/blue_eyes/generators/app_generator_test.rb +142 -0
- data/test/blue_eyes/generators/controller/controller_generator_test.rb +57 -0
- data/test/blue_eyes/generators/model/model_generator_test.rb +40 -0
- data/test/blue_eyes/generators/scaffold/scaffold_generator_test.rb +21 -0
- data/test/blue_eyes/version_test.rb +24 -0
- data/test/blue_eyes_test.rb +1 -0
- data/test/test_helper.rb +6 -0
- 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,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
|
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
|