localtower 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +38 -0
  3. data/Rakefile +33 -0
  4. data/app/controllers/localtower/application_controller.rb +5 -0
  5. data/app/controllers/localtower/pages_controller.rb +55 -0
  6. data/app/helpers/localtower/application_helper.rb +19 -0
  7. data/app/views/layouts/localtower/application.html.erb +94 -0
  8. data/app/views/localtower/pages/dashboard.html.erb +55 -0
  9. data/app/views/localtower/pages/migrations.html.erb +99 -0
  10. data/app/views/localtower/pages/models.html.erb +78 -0
  11. data/app/views/localtower/pages/relations.html.erb +53 -0
  12. data/config/routes.rb +16 -0
  13. data/lib/localtower.rb +19 -0
  14. data/lib/localtower/engine.rb +9 -0
  15. data/lib/localtower/generators/migration.rb +275 -0
  16. data/lib/localtower/generators/model.rb +36 -0
  17. data/lib/localtower/generators/relation.rb +55 -0
  18. data/lib/localtower/tools.rb +173 -0
  19. data/lib/localtower/version.rb +3 -0
  20. data/lib/tasks/localtower_tasks.rake +4 -0
  21. data/public/css/app.css +29 -0
  22. data/public/js/app.js +106 -0
  23. data/public/light-bootstrap-dashboard-master/assets/css/animate.min.css +6 -0
  24. data/public/light-bootstrap-dashboard-master/assets/css/bootstrap.min.css +5 -0
  25. data/public/light-bootstrap-dashboard-master/assets/css/demo.css +61 -0
  26. data/public/light-bootstrap-dashboard-master/assets/css/light-bootstrap-dashboard.css +2815 -0
  27. data/public/light-bootstrap-dashboard-master/assets/css/pe-icon-7-stroke.css +632 -0
  28. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.eot +0 -0
  29. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.svg +212 -0
  30. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.ttf +0 -0
  31. data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.woff +0 -0
  32. data/public/light-bootstrap-dashboard-master/assets/img/default-avatar.png +0 -0
  33. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-0.jpg +0 -0
  34. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-1.jpg +0 -0
  35. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-2.jpg +0 -0
  36. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-3.jpg +0 -0
  37. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-4.jpg +0 -0
  38. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-5.jpg +0 -0
  39. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-6.jpg +0 -0
  40. data/public/light-bootstrap-dashboard-master/assets/img/faces/face-7.jpg +0 -0
  41. data/public/light-bootstrap-dashboard-master/assets/img/faces/tim_vector.jpe +0 -0
  42. data/public/light-bootstrap-dashboard-master/assets/img/favicon.ico +0 -0
  43. data/public/light-bootstrap-dashboard-master/assets/img/loading-bubbles.svg +14 -0
  44. data/public/light-bootstrap-dashboard-master/assets/img/mask.png +0 -0
  45. data/public/light-bootstrap-dashboard-master/assets/img/new_logo.png +0 -0
  46. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-1.jpg +0 -0
  47. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-2.jpg +0 -0
  48. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-3.jpg +0 -0
  49. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-4.jpg +0 -0
  50. data/public/light-bootstrap-dashboard-master/assets/img/sidebar-5.jpg +0 -0
  51. data/public/light-bootstrap-dashboard-master/assets/img/tim_80x80.png +0 -0
  52. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-checkbox-radio-switch.js +502 -0
  53. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-notify.js +404 -0
  54. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-select.js +438 -0
  55. data/public/light-bootstrap-dashboard-master/assets/js/bootstrap.min.js +7 -0
  56. data/public/light-bootstrap-dashboard-master/assets/js/chartist.min.js +9 -0
  57. data/public/light-bootstrap-dashboard-master/assets/js/demo.js +152 -0
  58. data/public/light-bootstrap-dashboard-master/assets/js/jquery-1.10.2.js +9789 -0
  59. data/public/light-bootstrap-dashboard-master/assets/js/light-bootstrap-dashboard.js +182 -0
  60. data/spec/dummy/Gemfile +33 -0
  61. data/spec/dummy/Gemfile.lock +186 -0
  62. data/spec/dummy/README.md +24 -0
  63. data/spec/dummy/Rakefile +6 -0
  64. data/spec/dummy/app/assets/config/manifest.js +3 -0
  65. data/spec/dummy/app/assets/javascripts/application.js +16 -0
  66. data/spec/dummy/app/assets/javascripts/cable.js +13 -0
  67. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  68. data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
  69. data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
  70. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  71. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  72. data/spec/dummy/app/jobs/application_job.rb +2 -0
  73. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  74. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  75. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  76. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  77. data/spec/dummy/bin/bundle +3 -0
  78. data/spec/dummy/bin/rails +9 -0
  79. data/spec/dummy/bin/rake +9 -0
  80. data/spec/dummy/bin/setup +34 -0
  81. data/spec/dummy/bin/spring +17 -0
  82. data/spec/dummy/bin/update +29 -0
  83. data/spec/dummy/config.ru +5 -0
  84. data/spec/dummy/config/application.rb +30 -0
  85. data/spec/dummy/config/boot.rb +3 -0
  86. data/spec/dummy/config/cable.yml +9 -0
  87. data/spec/dummy/config/database.yml +18 -0
  88. data/spec/dummy/config/environment.rb +5 -0
  89. data/spec/dummy/config/environments/development.rb +54 -0
  90. data/spec/dummy/config/environments/production.rb +86 -0
  91. data/spec/dummy/config/environments/test.rb +42 -0
  92. data/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
  93. data/spec/dummy/config/initializers/assets.rb +11 -0
  94. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  95. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  96. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  97. data/spec/dummy/config/initializers/inflections.rb +16 -0
  98. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  99. data/spec/dummy/config/initializers/new_framework_defaults.rb +24 -0
  100. data/spec/dummy/config/initializers/session_store.rb +3 -0
  101. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  102. data/spec/dummy/config/locales/en.yml +23 -0
  103. data/spec/dummy/config/puma.rb +47 -0
  104. data/spec/dummy/config/routes.rb +5 -0
  105. data/spec/dummy/config/secrets.yml +22 -0
  106. data/spec/dummy/config/spring.rb +6 -0
  107. data/spec/dummy/coverage/assets/0.10.0/application.css +799 -0
  108. data/spec/dummy/coverage/assets/0.10.0/application.js +1707 -0
  109. data/spec/dummy/coverage/assets/0.10.0/colorbox/border.png +0 -0
  110. data/spec/dummy/coverage/assets/0.10.0/colorbox/controls.png +0 -0
  111. data/spec/dummy/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
  112. data/spec/dummy/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
  113. data/spec/dummy/coverage/assets/0.10.0/favicon_green.png +0 -0
  114. data/spec/dummy/coverage/assets/0.10.0/favicon_red.png +0 -0
  115. data/spec/dummy/coverage/assets/0.10.0/favicon_yellow.png +0 -0
  116. data/spec/dummy/coverage/assets/0.10.0/loading.gif +0 -0
  117. data/spec/dummy/coverage/assets/0.10.0/magnify.png +0 -0
  118. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  119. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  120. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  121. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  122. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  123. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  124. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  125. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  126. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  127. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  128. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  129. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  130. data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  131. data/spec/dummy/coverage/index.html +294 -0
  132. data/spec/dummy/custom_plan.rb +11 -0
  133. data/spec/dummy/db/schema.rb +4 -0
  134. data/spec/dummy/lib/playground.rb +0 -0
  135. data/spec/dummy/log/development.log +22924 -0
  136. data/spec/dummy/log/localtower.log +11352 -0
  137. data/spec/dummy/log/test.log +9166 -0
  138. data/spec/dummy/tmp/restart.txt +0 -0
  139. data/spec/dummy/zeus.json +22 -0
  140. data/spec/factories/migration.rb +140 -0
  141. data/spec/factories/model.rb +36 -0
  142. data/spec/lib/localtower/generators/migration_spec.rb +113 -0
  143. data/spec/lib/localtower/generators/model_spec.rb +43 -0
  144. data/spec/lib/localtower/generators/relation_spec.rb +34 -0
  145. data/spec/lib/localtower/tools_spec.rb +14 -0
  146. data/spec/spec_helper.rb +47 -0
  147. metadata +401 -0
File without changes
@@ -0,0 +1,22 @@
1
+ {
2
+ "command": "ruby -rubygems -r./custom_plan -eZeus.go",
3
+
4
+ "plan": {
5
+ "boot": {
6
+ "default_bundle": {
7
+ "development_environment": {
8
+ "prerake": {"rake": []},
9
+ "runner": ["r"],
10
+ "console": ["c"],
11
+ "server": ["s"],
12
+ "generate": ["g"],
13
+ "destroy": ["d"],
14
+ "dbconsole": []
15
+ },
16
+ "test_environment": {
17
+ "test_helper": {"test": ["rspec", "testrb"]}
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,140 @@
1
+ FactoryGirl.define do
2
+ factory :create_table, class: Hash do
3
+ migration_name "Post"
4
+ migrations [
5
+ {
6
+ action: "create_table",
7
+ table_name: "posts"
8
+ }
9
+ ]
10
+ end
11
+
12
+ factory :add_column, class: Hash do
13
+ migration_name "Post"
14
+ migrations [
15
+ {
16
+ action: "add_column",
17
+ table_name: "posts",
18
+ column: "title",
19
+ column_type: "string",
20
+ index: true,
21
+ nullable: true,
22
+ },
23
+ {
24
+ action: "add_column",
25
+ table_name: "posts",
26
+ column: "content",
27
+ column_type: "text",
28
+ index: false,
29
+ nullable: true,
30
+ },
31
+ {
32
+ action: "add_column",
33
+ table_name: "posts",
34
+ column: "views",
35
+ column_type: "integer",
36
+ index: true,
37
+ default: 0,
38
+ nullable: false,
39
+ },
40
+ {
41
+ action: "add_column",
42
+ table_name: "posts",
43
+ column: "tags",
44
+ column_type: "array",
45
+ index: true,
46
+ nullable: true,
47
+ }
48
+ ]
49
+ end
50
+
51
+ factory :add_column_fail, class: Hash do
52
+ migration_name "Post"
53
+ migrations [
54
+ {
55
+ action: "add_column",
56
+ table_name: "posts",
57
+ column: "title",
58
+ # column_type: "string",
59
+ }
60
+ ]
61
+ end
62
+
63
+ factory :rename_column, class: Hash do
64
+ migration_name "Post"
65
+ migrations [
66
+ {
67
+ action: "rename_column",
68
+ table_name: "posts",
69
+ column: "content",
70
+ new_column_name: "content_new",
71
+ }
72
+ ]
73
+ end
74
+
75
+ factory :remove_column, class: Hash do
76
+ migration_name "Post"
77
+ migrations [
78
+ {
79
+ action: "remove_column",
80
+ table_name: "posts",
81
+ column: "title",
82
+ },
83
+ {
84
+ action: "rename_column",
85
+ table_name: "posts",
86
+ column: "views",
87
+ new_column_name: "views_by_users",
88
+ }
89
+ ]
90
+ end
91
+
92
+ factory :change_column_type, class: Hash do
93
+ migration_name "Post"
94
+ migrations [
95
+ {
96
+ action: "change_column_type",
97
+ table_name: "posts",
98
+ column: "content_new",
99
+ new_column_type: "string",
100
+ },
101
+ {
102
+ action: "add_index_to_column",
103
+ table_name: "posts",
104
+ column: "views_by_users",
105
+ }
106
+ ]
107
+ end
108
+
109
+ factory :add_index_to_column, class: Hash do
110
+ migration_name "Post"
111
+ migrations [
112
+ {
113
+ action: "add_index_to_column",
114
+ table_name: "posts",
115
+ column: "content_new",
116
+ }
117
+ ]
118
+ end
119
+
120
+ factory :remove_index_to_column, class: Hash do
121
+ migration_name "Post"
122
+ migrations [
123
+ {
124
+ action: "remove_index_to_column",
125
+ table_name: "posts",
126
+ column: "views_by_users",
127
+ }
128
+ ]
129
+ end
130
+
131
+ factory :drop_table, class: Hash do
132
+ migration_name "Post"
133
+ migrations [
134
+ {
135
+ action: "drop_table",
136
+ table_name: "posts",
137
+ }
138
+ ]
139
+ end
140
+ end
@@ -0,0 +1,36 @@
1
+ FactoryGirl.define do
2
+ factory :post_one, class: Hash do
3
+ model_name "Post"
4
+ attributes [
5
+ {
6
+ attribute_name: "title",
7
+ attribute_type: "string",
8
+ index: true
9
+ },
10
+ {
11
+ attribute_name: "content",
12
+ attribute_type: "text"
13
+ }
14
+ ]
15
+ end
16
+
17
+ factory :user_one, class: Hash do
18
+ model_name "User"
19
+ attributes [
20
+ {
21
+ attribute_name: "name",
22
+ attribute_type: "string",
23
+ index: true,
24
+ },
25
+ {
26
+ attribute_name: "metadata",
27
+ attribute_type: "jsonb"
28
+ },
29
+ ]
30
+ end
31
+
32
+ factory :relation_one, class: Hash do
33
+ model_one_name "User"
34
+ model_two_name "Post"
35
+ end
36
+ end
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ module Localtower
4
+ module Generators
5
+ describe Migration do
6
+
7
+ def migration_files
8
+ Dir["#{Rails.root}/db/migrate/*"]
9
+ end
10
+
11
+ def last_migration
12
+ migration_files.sort.last
13
+ end
14
+
15
+ before(:all) do
16
+ end
17
+
18
+ after(:all) do
19
+ end
20
+
21
+ it 'create_table' do
22
+ data = attributes_for(:create_table)
23
+ data["run_migrate"] = true
24
+
25
+ generator = ::Localtower::Generators::Migration.new(data).run
26
+
27
+ expect(::Localtower::Tools.word_in_file?(last_migration, /create_table :posts/)).to eq(true)
28
+ end
29
+
30
+ it 'add_column' do
31
+ data = attributes_for(:add_column)
32
+ data["run_migrate"] = true
33
+
34
+ generator = ::Localtower::Generators::Migration.new(data).run
35
+
36
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :tags, :text, default: \[\], array: true/)).to eq(true)
37
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_index :posts, :tags, using: :gin/)).to eq(true)
38
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :views, :integer, default: 0, null: false, index: true/)).to eq(true)
39
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :content, :text/)).to eq(true)
40
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :title, :string, index: true/)).to eq(true)
41
+ end
42
+
43
+ it 'add_column fail' do
44
+ data = attributes_for(:add_column_fail)
45
+ data["run_migrate"] = true
46
+
47
+ generator = ::Localtower::Generators::Migration.new(data).run
48
+
49
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :tags, :text, default: \[\], array: true/)).to eq(false)
50
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_index :posts, :tags, using: :gin/)).to eq(false)
51
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :views, :integer, default: 0, null: false, index: true/)).to eq(false)
52
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :content, :text/)).to eq(false)
53
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_column :posts, :title, :string, index: true/)).to eq(false)
54
+ end
55
+
56
+ it 'rename_column' do
57
+ data = attributes_for(:rename_column)
58
+ data["run_migrate"] = true
59
+
60
+ generator = ::Localtower::Generators::Migration.new(data).run
61
+
62
+ expect(::Localtower::Tools.word_in_file?(last_migration, /rename_column :posts, :content, :content_new/)).to eq(true)
63
+ end
64
+
65
+ it 'remove_column' do
66
+ data = attributes_for(:remove_column)
67
+ data["run_migrate"] = true
68
+
69
+ generator = ::Localtower::Generators::Migration.new(data).run
70
+
71
+ expect(::Localtower::Tools.word_in_file?(last_migration, /remove_column :posts, :title/)).to eq(true)
72
+ expect(::Localtower::Tools.word_in_file?(last_migration, /rename_column :posts, :views, :views_by_users/)).to eq(true)
73
+ end
74
+
75
+ it 'change_column_type' do
76
+ data = attributes_for(:change_column_type)
77
+ data["run_migrate"] = true
78
+
79
+ generator = ::Localtower::Generators::Migration.new(data).run
80
+
81
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_index :posts, :views_by_users/)).to eq(true)
82
+ expect(::Localtower::Tools.word_in_file?(last_migration, /change_column :posts, :content_new, :string/)).to eq(true)
83
+ end
84
+
85
+ it 'add_index_to_column' do
86
+ data = attributes_for(:add_index_to_column)
87
+ data["run_migrate"] = true
88
+
89
+ generator = ::Localtower::Generators::Migration.new(data).run
90
+
91
+ expect(::Localtower::Tools.word_in_file?(last_migration, /add_index :posts, :content_new/)).to eq(true)
92
+ end
93
+
94
+ it 'remove_index_to_column' do
95
+ data = attributes_for(:remove_index_to_column)
96
+ data["run_migrate"] = true
97
+
98
+ generator = ::Localtower::Generators::Migration.new(data).run
99
+
100
+ expect(::Localtower::Tools.word_in_file?(last_migration, /remove_index :posts, :views_by_users/)).to eq(true)
101
+ end
102
+
103
+ it 'drop_table' do
104
+ data = attributes_for(:drop_table)
105
+ data["run_migrate"] = true
106
+
107
+ generator = ::Localtower::Generators::Migration.new(data).run
108
+
109
+ expect(::Localtower::Tools.word_in_file?(last_migration, /drop_table :posts, force: :cascade/)).to eq(true)
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ module Localtower
4
+ module Generators
5
+ describe Model do
6
+
7
+ before(:each) do
8
+ end
9
+
10
+ after(:all) do
11
+ end
12
+
13
+ it 'create a post' do
14
+ data = attributes_for(:post_one)
15
+ data["run_migrate"] = true
16
+
17
+ ::Localtower::Generators::Model.new(data).run
18
+
19
+ expect(File.exist?("#{Rails.root}/app/models/post.rb")).to eq(true)
20
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/post.rb", /class Post/)).to eq(true)
21
+
22
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /create_table "posts"/)).to eq(true)
23
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.string "title"/)).to eq(true)
24
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.text "content"/)).to eq(true)
25
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.index \["title"\], name: "index_posts_on_title", using: :btree/)).to eq(true)
26
+ end
27
+
28
+ it 'create a user' do
29
+ data = attributes_for(:user_one)
30
+ data["run_migrate"] = true
31
+
32
+ ::Localtower::Generators::Model.new(data).run
33
+
34
+ expect(File.exist?("#{Rails.root}/app/models/user.rb")).to eq(true)
35
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user.rb", /class User/)).to eq(true)
36
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /create_table "users"/)).to eq(true)
37
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.string "name"/)).to eq(true)
38
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.jsonb "metadata"/)).to eq(true)
39
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.index \["name"\], name: "index_users_on_name", using: :btree/)).to eq(true)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ module Localtower
4
+ module Generators
5
+ describe Relation do
6
+
7
+ before(:each) do
8
+ end
9
+
10
+ after(:all) do
11
+ end
12
+
13
+ it 'create a relation' do
14
+ ::Localtower::Generators::Model.new(attributes_for(:post_one)).run
15
+ ::Localtower::Generators::Model.new(attributes_for(:user_one)).run
16
+
17
+ ::Localtower::Generators::Relation.new(attributes_for(:relation_one)).run
18
+
19
+ expect(File.exist?("#{Rails.root}/app/models/user_post.rb")).to eq(true)
20
+
21
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user_post.rb", /class UserPost/)).to eq(true)
22
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /create_table "user_posts"/)).to eq(true)
23
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.integer "user_id"/)).to eq(true)
24
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.integer "post_id"/)).to eq(true)
25
+
26
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user.rb", /has_many :posts, through: :user_posts/)).to eq(true)
27
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user.rb", /has_many :posts/)).to eq(true)
28
+
29
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/post.rb", /has_many :users/)).to eq(true)
30
+ expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/post.rb", /has_many :users, through: :user_posts/)).to eq(true)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Localtower::Tools do
4
+ before(:each) do
5
+ end
6
+
7
+ after(:all) do
8
+ end
9
+
10
+ # TODO:
11
+ it 'list models' do
12
+ models = ::Localtower::Tools.models_presented
13
+ end
14
+ end
@@ -0,0 +1,47 @@
1
+ def clean_files
2
+ ::Localtower::Tools.sql_drop_all_tables
3
+ ::Localtower::Generators::Migration.new({}).remove_all_migrations
4
+ Dir["#{Rails.root}/app/models/**/*.*"].each { |model_file| File.delete(model_file) }
5
+ end
6
+
7
+ #============================
8
+ ENV['RAILS_ENV'] = 'test'
9
+
10
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
11
+ require 'rspec/rails'
12
+ require 'factory_girl'
13
+
14
+ # require 'simplecov'
15
+ # Dir["#{File.join(File.dirname(__FILE__), '..')}/lib/**/*.rb"].each {|file| load file }
16
+
17
+ # SimpleCov.start do
18
+ # add_group 'Lib', '../lib'
19
+ # add_group 'App', '../app'
20
+ # end
21
+
22
+ Rails.application.eager_load!
23
+ Rails.backtrace_cleaner.remove_silencers!
24
+
25
+ RSpec.configure do |config|
26
+ config.include FactoryGirl::Syntax::Methods
27
+
28
+ config.mock_with :rspec
29
+ config.use_transactional_fixtures = false
30
+ config.infer_base_class_for_anonymous_controllers = true
31
+
32
+ config.order = 123
33
+ # config.order = 'random'
34
+
35
+ config.before(:suite) do
36
+ FactoryGirl.find_definitions
37
+ end
38
+
39
+ config.before(:all) do
40
+ clean_files
41
+ end
42
+
43
+ config.after(:all) do
44
+ clean_files
45
+ end
46
+ end
47
+