my_enginery 0.2.8
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.
- data/.gitignore +18 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +14 -0
- data/Gemfile +12 -0
- data/LICENSE +19 -0
- data/README.md +957 -0
- data/Rakefile +48 -0
- data/app/base/.pryrc +1 -0
- data/app/base/Gemfile +25 -0
- data/app/base/Rakefile +4 -0
- data/app/base/app.rb +8 -0
- data/app/base/base/boot.rb +45 -0
- data/app/base/base/config.rb +127 -0
- data/app/base/base/controllers/rear-controllers/.gitkeep +0 -0
- data/app/base/base/database.rb +3 -0
- data/app/base/base/helpers/application_helpers.rb +3 -0
- data/app/base/base/migrations/.gitkeep +0 -0
- data/app/base/base/models/.gitkeep +0 -0
- data/app/base/base/specs/.gitkeep +0 -0
- data/app/base/base/views/.gitkeep +0 -0
- data/app/base/config.ru +4 -0
- data/app/base/config/config.yml +17 -0
- data/app/base/public/assets/Enginery.png +0 -0
- data/app/base/public/assets/Espresso.png +0 -0
- data/app/base/public/assets/application.css +13 -0
- data/app/base/public/assets/application.js +2 -0
- data/app/base/public/assets/bootstrap/css/bootstrap-responsive.min.css +9 -0
- data/app/base/public/assets/bootstrap/css/bootstrap.min.css +9 -0
- data/app/base/public/assets/bootstrap/img/glyphicons-halflings-white.png +0 -0
- data/app/base/public/assets/bootstrap/img/glyphicons-halflings.png +0 -0
- data/app/base/public/assets/bootstrap/js/bootstrap.min.js +6 -0
- data/app/base/public/assets/jquery.js +6 -0
- data/app/base/var/db/.gitkeep +0 -0
- data/app/base/var/log/.gitkeep +0 -0
- data/app/base/var/pid/.gitkeep +0 -0
- data/app/database/ActiveRecord.rb +11 -0
- data/app/database/DataMapper.rb +11 -0
- data/app/database/Sequel.rb +11 -0
- data/app/database/mysql.yml +24 -0
- data/app/database/postgres.yml +24 -0
- data/app/database/sqlite.yml +24 -0
- data/app/gemfiles/ActiveRecord.rb +1 -0
- data/app/gemfiles/BlueCloth.rb +1 -0
- data/app/gemfiles/DataMapper.rb +1 -0
- data/app/gemfiles/FastCGI.rb +1 -0
- data/app/gemfiles/Puma.rb +1 -0
- data/app/gemfiles/RDiscount.rb +1 -0
- data/app/gemfiles/RDoc.rb +1 -0
- data/app/gemfiles/RedCloth.rb +1 -0
- data/app/gemfiles/WEBrick.rb +1 -0
- data/app/gemfiles/WikiCloth.rb +1 -0
- data/app/gemfiles/mysql/ActiveRecord.rb +1 -0
- data/app/gemfiles/mysql/DataMapper.rb +1 -0
- data/app/gemfiles/mysql/Sequel.rb +1 -0
- data/app/gemfiles/postgres/ActiveRecord.rb +1 -0
- data/app/gemfiles/postgres/DataMapper.rb +1 -0
- data/app/gemfiles/postgres/Sequel.rb +1 -0
- data/app/gemfiles/sqlite/ActiveRecord.rb +1 -0
- data/app/gemfiles/sqlite/DataMapper.rb +1 -0
- data/app/gemfiles/sqlite/Sequel.rb +1 -0
- data/app/layouts/ERB/layout.erb +56 -0
- data/app/layouts/Erubis/layout.erb +56 -0
- data/app/layouts/Haml/layout.haml +38 -0
- data/app/layouts/Slim/layout.slim +38 -0
- data/app/migrations/ActiveRecord.erb +51 -0
- data/app/migrations/DataMapper.erb +61 -0
- data/app/migrations/Sequel.erb +54 -0
- data/app/migrations/tracking_table/ActiveRecord.rb +19 -0
- data/app/migrations/tracking_table/DataMapper.rb +26 -0
- data/app/migrations/tracking_table/Sequel.rb +18 -0
- data/app/rakefiles/ActiveRecord.rb +0 -0
- data/app/rakefiles/DataMapper.rb +1 -0
- data/app/rakefiles/Sequel.rb +0 -0
- data/app/rakefiles/Specular.rb +1 -0
- data/app/specfiles/Specular.erb +7 -0
- data/bin/my_enginery +235 -0
- data/lib/enginery.rb +23 -0
- data/lib/enginery/cli.rb +44 -0
- data/lib/enginery/configurator.rb +139 -0
- data/lib/enginery/delete.rb +116 -0
- data/lib/enginery/enginery.rb +41 -0
- data/lib/enginery/generator.rb +325 -0
- data/lib/enginery/helpers/app.rb +83 -0
- data/lib/enginery/helpers/generic.rb +145 -0
- data/lib/enginery/helpers/input.rb +123 -0
- data/lib/enginery/helpers/orm.rb +86 -0
- data/lib/enginery/helpers/validations.rb +101 -0
- data/lib/enginery/migrator.rb +371 -0
- data/lib/enginery/rake-tasks/data_mapper.rb +49 -0
- data/lib/enginery/rake-tasks/specular.rb +41 -0
- data/lib/enginery/registry.rb +101 -0
- data/lib/enginery/usage.rb +66 -0
- data/lib/enginery/version.rb +7 -0
- data/logo.png +0 -0
- data/my_enginery.gemspec +37 -0
- data/test/delete/test__admin.rb +49 -0
- data/test/delete/test__controller.rb +37 -0
- data/test/delete/test__helper.rb +49 -0
- data/test/delete/test__migration.rb +27 -0
- data/test/delete/test__model.rb +35 -0
- data/test/delete/test__route.rb +35 -0
- data/test/delete/test__spec.rb +59 -0
- data/test/delete/test__view.rb +51 -0
- data/test/generator/test__admin.rb +39 -0
- data/test/generator/test__controller.rb +123 -0
- data/test/generator/test__helper.rb +56 -0
- data/test/generator/test__model.rb +206 -0
- data/test/generator/test__project.rb +81 -0
- data/test/generator/test__route.rb +110 -0
- data/test/generator/test__spec.rb +56 -0
- data/test/generator/test__view.rb +85 -0
- data/test/migrator/test__auto_generation.rb +41 -0
- data/test/migrator/test__manual_generation.rb +59 -0
- data/test/migrator/test__migrations.rb +139 -0
- data/test/sandbox/.gitkeep +0 -0
- data/test/setup.rb +29 -0
- data/test/support/spec_helpers.rb +151 -0
- metadata +392 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
module Enginery
|
|
2
|
+
class Registry
|
|
3
|
+
include Helpers
|
|
4
|
+
|
|
5
|
+
def initialize root
|
|
6
|
+
@dst_root = root.freeze
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def controllers
|
|
10
|
+
boot_app
|
|
11
|
+
app_controllers.inject({}) do |f,c|
|
|
12
|
+
path = controller_path(c)
|
|
13
|
+
routes = routes(c)
|
|
14
|
+
data = {
|
|
15
|
+
name: c.name,
|
|
16
|
+
path: path,
|
|
17
|
+
file: unrootify(dst_path(:controllers, path + CONTROLLER_SUFFIX)),
|
|
18
|
+
dom_id: c.name.gsub(/\W/m, ''),
|
|
19
|
+
routes: routes,
|
|
20
|
+
specs: routes.inject(0) {|s,(_,r)| s += r[:specs].size}
|
|
21
|
+
}
|
|
22
|
+
helper_file = dst_path(:helpers, path + HELPER_SUFFIX)
|
|
23
|
+
File.exists?(helper_file) && data[:helper_file] = unrootify(helper_file)
|
|
24
|
+
f.merge c.name => data
|
|
25
|
+
end.to_yaml
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def routes controller
|
|
29
|
+
path = controller_path(controller)
|
|
30
|
+
routes_by_controller(controller.name).inject({}) do |f,r|
|
|
31
|
+
f.merge r => {
|
|
32
|
+
name: r,
|
|
33
|
+
route: controller[r.to_sym],
|
|
34
|
+
file: unrootify(dst_path(:controllers, path, r + ROUTE_SUFFIX)),
|
|
35
|
+
views: views(controller, r),
|
|
36
|
+
specs: specs(controller, r)
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def views controller, route
|
|
42
|
+
path = controller_path(controller)
|
|
43
|
+
Dir[dst_path(:views, path, route + '.*')].map {|f| unrootify(f)}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def specs controller, route
|
|
47
|
+
path = controller_path(controller)
|
|
48
|
+
Dir[dst_path(:specs, path, route + SPEC_SUFFIX)].map {|f| unrootify(f)}
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def models
|
|
52
|
+
cfg = app_config()
|
|
53
|
+
app_models.inject({}) do |f,m|
|
|
54
|
+
path = model_path(m)
|
|
55
|
+
f.merge m.name => {
|
|
56
|
+
name: m.name,
|
|
57
|
+
path: path,
|
|
58
|
+
file: unrootify(dst_path(:models, path + MODEL_SUFFIX)),
|
|
59
|
+
rear_file: rear_file(m),
|
|
60
|
+
rear_path: rear_path(m, cfg),
|
|
61
|
+
dom_id: m.name.gsub(/\W/m, ''),
|
|
62
|
+
orm: cfg[:orm],
|
|
63
|
+
migrations: migrations(m)
|
|
64
|
+
}
|
|
65
|
+
end.to_yaml
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def migrations model
|
|
69
|
+
migrations_by_model(model.name).inject({}) do |f,m|
|
|
70
|
+
step, time, name = m.scan(Migrator::NAME_REGEXP).flatten
|
|
71
|
+
file = dst_path(:migrations, model_path(model), m)
|
|
72
|
+
f.merge ('%s. %s' % [step, name.to_s.gsub('-', ' ')]) => {
|
|
73
|
+
step: step,
|
|
74
|
+
name: name,
|
|
75
|
+
time: time,
|
|
76
|
+
file: unrootify(file),
|
|
77
|
+
path: file.sub(dst_path.migrations, '')
|
|
78
|
+
}
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
def controller_path controller
|
|
84
|
+
EUtils.class_to_route(controller.name)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def model_path model
|
|
88
|
+
EUtils.class_to_route(model.name)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def rear_path model, cfg
|
|
92
|
+
return unless admin_url = cfg[:admin_url]
|
|
93
|
+
EUtils.rootify_url(admin_url, EUtils.class_to_route(model.name))
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def rear_file model
|
|
97
|
+
unrootify dst_path(:rear_controllers, model_path(model) + ADMIN_SUFFIX)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'enginery/version'
|
|
2
|
+
|
|
3
|
+
class << Enginery
|
|
4
|
+
def usage
|
|
5
|
+
<<USAGE
|
|
6
|
+
|
|
7
|
+
Enginery version #{EngineryVersion::FULL}
|
|
8
|
+
|
|
9
|
+
Generator:
|
|
10
|
+
|
|
11
|
+
enginery g[enerate][:p] Foo - generates a new application in ./Foo/ folder
|
|
12
|
+
enginery g[enerate][:p] - generates a new application in current folder
|
|
13
|
+
|
|
14
|
+
enginery g[enerate]:c[ontroller] Foo - generates Foo controller
|
|
15
|
+
enginery g[enerate]:c[ontroller] Foo Bar - generates Foo and Bar controllers
|
|
16
|
+
|
|
17
|
+
enginery g[enerate]:r[oute] Foo bar - generates Foo#bar action
|
|
18
|
+
enginery g[enerate]:r[oute] Foo bar baz - generates Foo#bar and Foo#baz actions
|
|
19
|
+
|
|
20
|
+
enginery g[enerate]:s[pec] Foo bar - generates a spec for Foo#bar action
|
|
21
|
+
|
|
22
|
+
enginery g[enerate]:v[iew] Foo bar - generates view file for Foo#bar action
|
|
23
|
+
|
|
24
|
+
enginery g[enerate]:m[odel] Foo - generates Foo model
|
|
25
|
+
enginery g[enerate]:m[odel] Foo Bar - generates Foo and Bar models
|
|
26
|
+
|
|
27
|
+
Generator Options:
|
|
28
|
+
|
|
29
|
+
ORM:
|
|
30
|
+
enginery g o[rm]:[ActiveRecord|ar] - generated project will use ActiveRecord ORM
|
|
31
|
+
enginery g o[rm]:[DataMapper|dm] - generated project will use DataMapper ORM
|
|
32
|
+
enginery g o[rm]:[Sequel|sq] - generated project will use Sequel ORM
|
|
33
|
+
|
|
34
|
+
Engine:
|
|
35
|
+
enginery g[enerate] e[ngine]:Slim - generated project will use Slim engine
|
|
36
|
+
enginery g[enerate]:c[ontroller] e[ngine]:Haml - generated controller will use Haml engine
|
|
37
|
+
|
|
38
|
+
Note: engine name should be provided in full and are case sensitive
|
|
39
|
+
|
|
40
|
+
#{ migrator_usage }
|
|
41
|
+
|
|
42
|
+
USAGE
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def migrator_usage
|
|
46
|
+
<<USAGE
|
|
47
|
+
Migrator:
|
|
48
|
+
|
|
49
|
+
enginery m[igration] migration-name m[odel]:Foo c[olumn]:bar - create bar column of string type
|
|
50
|
+
enginery m[igration] migration-name m[odel]:Foo c[olumn]:bar:baz - create bar column of baz type
|
|
51
|
+
|
|
52
|
+
enginery m[igration] migration-name m[odel]:Foo u[pdate_]c[olumn]:bar:baz - set bar column type to baz
|
|
53
|
+
|
|
54
|
+
enginery m[igration] migration-name m[odel]:Foo r[ename_]c[olumn]:bar:baz - rename bar column to baz
|
|
55
|
+
|
|
56
|
+
enginery m[igration]:l[ist] - list all available migrations
|
|
57
|
+
|
|
58
|
+
enginery m[igrate]:up|down N - perform up|down migration with serial number N
|
|
59
|
+
|
|
60
|
+
enginery m[igrate]:up|down N M - perform up|down migrations with serial numbers N and M
|
|
61
|
+
|
|
62
|
+
enginery m[igrate]:up|down N-M - perform up|down migrations with serial numbers from N to M
|
|
63
|
+
|
|
64
|
+
USAGE
|
|
65
|
+
end
|
|
66
|
+
end
|
data/logo.png
ADDED
|
Binary file
|
data/my_enginery.gemspec
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require File.expand_path('../lib/enginery/version', __FILE__)
|
|
4
|
+
Gem::Specification.new do |s|
|
|
5
|
+
|
|
6
|
+
s.name = 'my_enginery'
|
|
7
|
+
s.version = EngineryVersion::FULL
|
|
8
|
+
s.authors = ['Walter Smith']
|
|
9
|
+
s.email = ['waltee.smith@gmail.com']
|
|
10
|
+
s.homepage = 'https://github.com/espresso/enginery'
|
|
11
|
+
s.summary = 'enginery-%s' % EngineryVersion::FULL
|
|
12
|
+
s.description = 'Stuff Builder for Espresso Framework'
|
|
13
|
+
|
|
14
|
+
s.required_ruby_version = '>= 1.9.2'
|
|
15
|
+
|
|
16
|
+
s.add_dependency 'e', '>= 0.4.10'
|
|
17
|
+
s.add_dependency 'el', '>= 0.4.10'
|
|
18
|
+
s.add_dependency 'rear', '>= 0.1.2'
|
|
19
|
+
s.add_dependency 'bundler'
|
|
20
|
+
s.add_dependency 'tenjin'
|
|
21
|
+
|
|
22
|
+
s.add_development_dependency 'rake', '>= 10'
|
|
23
|
+
s.add_development_dependency 'specular', '>= 0.2.2'
|
|
24
|
+
s.add_development_dependency 'sonar', '>= 0.2.0'
|
|
25
|
+
s.add_development_dependency 'mysql'
|
|
26
|
+
s.add_development_dependency 'activerecord'
|
|
27
|
+
s.add_development_dependency 'datamapper'
|
|
28
|
+
s.add_development_dependency 'dm-mysql-adapter'
|
|
29
|
+
s.add_development_dependency 'sequel'
|
|
30
|
+
s.add_development_dependency 'slim'
|
|
31
|
+
|
|
32
|
+
s.require_paths = ['lib']
|
|
33
|
+
s.files = Dir['**/{*,.[a-z]*}'].reject {|e| e =~ /\.(gem|lock)\Z/}
|
|
34
|
+
s.executables = ['my_enginery']
|
|
35
|
+
|
|
36
|
+
s.licenses = ['MIT']
|
|
37
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Enginery
|
|
2
|
+
module Test
|
|
3
|
+
module DeleteAdmin
|
|
4
|
+
Spec.new self do
|
|
5
|
+
|
|
6
|
+
Dir.chdir DST_ROOT do
|
|
7
|
+
|
|
8
|
+
is(new_app 'App').ok?
|
|
9
|
+
|
|
10
|
+
Dir.chdir 'App' do
|
|
11
|
+
entries = [
|
|
12
|
+
'base/controllers/rear-controllers/foo' + ADMIN_SUFFIX
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
Should 'be deleted alongside model' do
|
|
16
|
+
is(new_model 'Foo').ok?
|
|
17
|
+
|
|
18
|
+
entries.each do |e|
|
|
19
|
+
does(File).exists? e
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
is(delete_model 'Foo').ok?
|
|
23
|
+
entries.each do |e|
|
|
24
|
+
refute(File).exists? e
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Should 'be deleted manually' do
|
|
29
|
+
|
|
30
|
+
is(new_model 'Foo').ok?
|
|
31
|
+
|
|
32
|
+
entries.each do |e|
|
|
33
|
+
does(File).exists? e
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
is(delete_admin_controller 'Foo').ok?
|
|
37
|
+
entries.each do |e|
|
|
38
|
+
refute(File).exists? e
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Enginery
|
|
2
|
+
module Test
|
|
3
|
+
module DeleteController
|
|
4
|
+
Spec.new self do
|
|
5
|
+
|
|
6
|
+
Dir.chdir DST_ROOT do
|
|
7
|
+
|
|
8
|
+
is(new_app 'App').ok?
|
|
9
|
+
|
|
10
|
+
Dir.chdir 'App' do
|
|
11
|
+
|
|
12
|
+
entries = [
|
|
13
|
+
'base/controllers/foo/',
|
|
14
|
+
'base/controllers/foo' + Enginery::CONTROLLER_SUFFIX,
|
|
15
|
+
'base/controllers/foo/bar' + Enginery::ROUTE_SUFFIX,
|
|
16
|
+
'base/views/foo/bar.erb',
|
|
17
|
+
'base/specs/foo/bar' + Enginery::SPEC_SUFFIX
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
is(new_controller 'Foo').ok?
|
|
21
|
+
is(new_route 'Foo bar').ok?
|
|
22
|
+
entries.each do |e|
|
|
23
|
+
does(File).exists? e
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
is(delete_controller 'Foo').ok?
|
|
27
|
+
entries.each do |e|
|
|
28
|
+
refute(File).exists? e
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Enginery
|
|
2
|
+
module Test
|
|
3
|
+
module DeleteHelper
|
|
4
|
+
Spec.new self do
|
|
5
|
+
|
|
6
|
+
Dir.chdir DST_ROOT do
|
|
7
|
+
|
|
8
|
+
is(new_app 'App').ok?
|
|
9
|
+
|
|
10
|
+
Dir.chdir 'App' do
|
|
11
|
+
entries = [
|
|
12
|
+
'base/helpers/foo' + Enginery::HELPER_SUFFIX
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
Should 'be deleted alongside controller' do
|
|
16
|
+
is(new_controller 'Foo').ok?
|
|
17
|
+
|
|
18
|
+
entries.each do |e|
|
|
19
|
+
does(File).exists? e
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
is(delete_controller 'Foo').ok?
|
|
23
|
+
entries.each do |e|
|
|
24
|
+
refute(File).exists? e
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Should 'be deleted manually' do
|
|
29
|
+
|
|
30
|
+
is(new_controller 'Foo').ok?
|
|
31
|
+
|
|
32
|
+
entries.each do |e|
|
|
33
|
+
does(File).exists? e
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
is(delete_helper 'Foo').ok?
|
|
37
|
+
entries.each do |e|
|
|
38
|
+
refute(File).exists? e
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Enginery
|
|
2
|
+
module Test
|
|
3
|
+
module DeleteMigration
|
|
4
|
+
Spec.new self do
|
|
5
|
+
|
|
6
|
+
Dir.chdir DST_ROOT do
|
|
7
|
+
|
|
8
|
+
is(new_app 'App o:dm').ok?
|
|
9
|
+
|
|
10
|
+
Dir.chdir 'App' do
|
|
11
|
+
|
|
12
|
+
is(new_model 'Foo').ok?
|
|
13
|
+
migrations = Dir['base/migrations/foo/*' + Enginery::MIGRATION_SUFFIX]
|
|
14
|
+
check(migrations).any?
|
|
15
|
+
|
|
16
|
+
is(delete_migration '1').ok?
|
|
17
|
+
migrations.each do |e|
|
|
18
|
+
refute(File).exists? e
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Enginery
|
|
2
|
+
module Test
|
|
3
|
+
module DeleteModel
|
|
4
|
+
Spec.new self do
|
|
5
|
+
|
|
6
|
+
Dir.chdir DST_ROOT do
|
|
7
|
+
|
|
8
|
+
is(new_app 'App o:ar').ok?
|
|
9
|
+
|
|
10
|
+
Dir.chdir 'App' do
|
|
11
|
+
|
|
12
|
+
entries = [
|
|
13
|
+
'base/models/foo' + Enginery::MODEL_SUFFIX
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
is(new_model 'Foo').ok?
|
|
17
|
+
migrations = Dir['base/migrations/foo/*' + Enginery::MIGRATION_SUFFIX]
|
|
18
|
+
check(migrations).any?
|
|
19
|
+
|
|
20
|
+
entries.each do |e|
|
|
21
|
+
does(File).exists? e
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
is(delete_model 'Foo').ok?
|
|
25
|
+
(entries + migrations).each do |e|
|
|
26
|
+
refute(File).exists? e
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Enginery
|
|
2
|
+
module Test
|
|
3
|
+
module DeleteRoute
|
|
4
|
+
Spec.new self do
|
|
5
|
+
|
|
6
|
+
Dir.chdir DST_ROOT do
|
|
7
|
+
|
|
8
|
+
is(new_app 'App').ok?
|
|
9
|
+
|
|
10
|
+
Dir.chdir 'App' do
|
|
11
|
+
|
|
12
|
+
entries = [
|
|
13
|
+
'base/controllers/foo/bar' + Enginery::ROUTE_SUFFIX,
|
|
14
|
+
'base/views/foo/bar.erb',
|
|
15
|
+
'base/specs/foo/bar' + Enginery::SPEC_SUFFIX
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
is(new_controller 'Foo').ok?
|
|
19
|
+
is(new_route 'Foo bar').ok?
|
|
20
|
+
entries.each do |e|
|
|
21
|
+
does(File).exists? e
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
is(delete_route 'Foo bar').ok?
|
|
25
|
+
entries.each do |e|
|
|
26
|
+
refute(File).exists? e
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|