super_test_engine 0.0.6 → 0.1.0

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -21
  3. data/lib/super_test_engine.rb +1 -3
  4. data/lib/super_test_engine/copy_app_templates/controllers/favorite_things_controller.rb +50 -0
  5. data/lib/super_test_engine/copy_app_templates/controllers/members_controller.rb +57 -0
  6. data/lib/super_test_engine/copy_app_templates/controllers/ships_controller.rb +47 -0
  7. data/{db/migrate → lib/super_test_engine/copy_app_templates/migrations}/20190216224956_create_members.rb +0 -0
  8. data/lib/super_test_engine/copy_app_templates/migrations/20190803143320_create_ships.rb +11 -0
  9. data/lib/super_test_engine/copy_app_templates/migrations/20190806014121_add_ship_to_members.rb +5 -0
  10. data/lib/super_test_engine/copy_app_templates/migrations/20191126050453_create_favorite_things.rb +10 -0
  11. data/lib/super_test_engine/copy_app_templates/models/favorite_thing.rb +7 -0
  12. data/{app → lib/super_test_engine/copy_app_templates}/models/member.rb +10 -0
  13. data/lib/super_test_engine/copy_app_templates/models/ship.rb +3 -0
  14. data/lib/super_test_engine/copy_app_templates/routes.rb +11 -0
  15. data/lib/super_test_engine/copy_app_templates/seeds.rb +2 -0
  16. data/lib/super_test_engine/copy_app_templates/views/members/_favorite_things.html.erb +11 -0
  17. data/lib/super_test_engine/copy_app_templates/views/members/show.html.erb +11 -0
  18. data/lib/super_test_engine/fixtures/favorite_things.yml +9 -0
  19. data/{test → lib/super_test_engine}/fixtures/members.yml +56 -0
  20. data/lib/super_test_engine/fixtures/ships.yml +10 -0
  21. data/lib/super_test_engine/generate_copy_app.rb +49 -0
  22. data/lib/super_test_engine/generate_dummy.rb +98 -0
  23. data/lib/super_test_engine/starfleet_seeder.rb +50 -0
  24. data/super_test_engine.gemspec +23 -0
  25. metadata +47 -28
  26. data/MIT-LICENSE +0 -20
  27. data/Rakefile +0 -32
  28. data/app/controllers/admin/members_controller.rb +0 -9
  29. data/app/controllers/admin_controller.rb +0 -2
  30. data/app/dashboards/member_dashboard.rb +0 -81
  31. data/config/routes.rb +0 -5
  32. data/db/seeds.rb +0 -34
  33. data/lib/generators/super_test_engine/dummy/USAGE +0 -8
  34. data/lib/generators/super_test_engine/dummy/dummy_generator.rb +0 -108
  35. data/lib/generators/super_test_engine/dummy/templates/db_seeds.rb.tt +0 -1
  36. data/lib/super_test_engine/engine.rb +0 -9
  37. data/lib/super_test_engine/version.rb +0 -3
@@ -0,0 +1,10 @@
1
+ ---
2
+ uss_enterprise_d:
3
+ name: USS Enterprise
4
+ registry: NCC-1701-D
5
+ class_name: Galaxy
6
+
7
+ uss_jenolan:
8
+ name: USS Jenolan
9
+ registry: NCC-2010
10
+ class_name: Sydney
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ super_development_path = File.expand_path("../../..", __dir__)
4
+ if File.exist?(File.join(super_development_path, "super.gemspec"))
5
+ super_lib_path = File.join(super_development_path, "lib")
6
+
7
+ $LOAD_PATH.unshift(super_lib_path) if !$LOAD_PATH.include?(super_lib_path)
8
+ end
9
+
10
+ require "rails/generators"
11
+ require "generators/super/install/install_generator"
12
+
13
+ class SuperCopyAppGenerator < Rails::Generators::Base
14
+ source_root(File.expand_path("copy_app_templates", __dir__))
15
+
16
+ class_option :destination, required: true
17
+
18
+ def set_destination_root
19
+ self.destination_root = options[:destination]
20
+ end
21
+
22
+ def ensure_reasonable_directory
23
+ app_path = File.join(destination_root, "app")
24
+ if !File.directory?(app_path)
25
+ raise "Can't find dir: #{app_path}"
26
+ end
27
+ end
28
+
29
+ def install_super
30
+ Super::InstallGenerator.start([], destination_root: destination_root)
31
+ end
32
+
33
+ def copy_app
34
+ directory "models", "app/models", exclude_pattern: /\.swp$/
35
+ directory "controllers", "app/controllers/admin", exclude_pattern: /\.swp$/
36
+ directory "views/members", "app/views/admin/members", exclude_pattern: /\.swp$/
37
+ end
38
+
39
+ def copy_db
40
+ directory "migrations", "db/migrate", exclude_pattern: /\.swp$/
41
+ copy_file "seeds.rb", "db/seeds.rb"
42
+ end
43
+
44
+ def copy_config
45
+ copy_file "routes.rb", "config/routes.rb"
46
+ end
47
+ end
48
+
49
+ SuperCopyAppGenerator.start
@@ -0,0 +1,98 @@
1
+ require "fileutils"
2
+ require "tmpdir"
3
+
4
+ super_development_path = File.expand_path("../../..", __dir__)
5
+ if File.exist?(File.join(super_development_path, "super.gemspec"))
6
+ super_lib_path = File.join(super_development_path, "lib")
7
+
8
+ $LOAD_PATH.unshift(super_lib_path) if !$LOAD_PATH.include?(super_lib_path)
9
+ end
10
+
11
+ require "rails"
12
+ require "rails/generators/rails/app/app_generator"
13
+ require "rails/generators/rails/plugin/plugin_generator"
14
+ require "generators/super/install/install_generator"
15
+
16
+ module Rails
17
+ module Generators
18
+ class AppGenerator
19
+ def valid_const?
20
+ true
21
+ end
22
+ end
23
+
24
+ class PluginGenerator
25
+ def valid_const?
26
+ true
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ class SuperDummyGenerator < Rails::Generators::Base
33
+ source_root(File.expand_path("templates", __dir__))
34
+
35
+ class_option :destination, required: true
36
+
37
+ def create_new_plugin
38
+ if plugin_name.blank?
39
+ warn "Not currently in a plugin directory"
40
+ exit
41
+ end
42
+
43
+ opts = {
44
+ force: true,
45
+ skip_active_storage: true,
46
+ skip_action_mailer: true,
47
+ skip_action_mailbox: true,
48
+ skip_action_text: true,
49
+ skip_action_cable: true,
50
+ skip_coffee: true,
51
+ database: "sqlite3",
52
+ }
53
+
54
+ Dir.mktmpdir do |dir|
55
+ plugin_path = File.join(dir, plugin_name)
56
+ generated_dummy_path = File.join(plugin_path, "test/dummy")
57
+
58
+ invoke(Rails::Generators::PluginGenerator, [plugin_path], opts)
59
+
60
+ inside(generated_dummy_path) do
61
+ remove_file(".ruby-version")
62
+ end
63
+
64
+ FileUtils.rm_rf(dummy_path)
65
+ FileUtils.mv(generated_dummy_path, dummy_path)
66
+ end
67
+ end
68
+
69
+ def delete_unnecessary_files
70
+ inside(dummy_path) do
71
+ remove_file("app/assets/javascripts/cable.js")
72
+ remove_file("app/channels/")
73
+ remove_file("public/apple-touch-icon-precomposed.png")
74
+ remove_file("public/apple-touch-icon.png")
75
+ end
76
+ end
77
+
78
+ private
79
+
80
+ def dummy_path
81
+ @dummy_path ||= File.expand_path(options[:destination], destination_root)
82
+ end
83
+
84
+ def plugin_name
85
+ @plugin_name ||=
86
+ begin
87
+ filename = Dir.glob("*.gemspec").first
88
+
89
+ if filename.present?
90
+ File.basename(filename, ".gemspec")
91
+ else
92
+ ""
93
+ end
94
+ end
95
+ end
96
+ end
97
+
98
+ SuperDummyGenerator.start
@@ -0,0 +1,50 @@
1
+ class StarfleetSeeder
2
+ def self.seed
3
+ seeder = StarfleetSeeder.new
4
+ seeder.seed_from_fixture("ships", Ship)
5
+ seeder.seed_from_fixture("members", Member)
6
+ seeder.seed_from_fixture("favorite_things", FavoriteThing)
7
+ end
8
+
9
+ def initialize
10
+ @seeded = {}
11
+ @association_reflections = {}
12
+ end
13
+
14
+ def seed(basename, key, klass, value)
15
+ @seeded[basename] ||= {}
16
+ puts "--> #{key} (#{value})"
17
+ @association_reflections[klass] ||= klass.reflect_on_all_associations
18
+
19
+ @association_reflections[klass].each do |ar|
20
+ ar_name = ar.name.to_s
21
+ ar_plural_name = ar.plural_name.to_s
22
+
23
+ if value.key?(ar_name)
24
+ value[ar_name] = @seeded.fetch(ar_plural_name).fetch(value[ar_name])
25
+ end
26
+ end
27
+
28
+ @seeded[basename][key] = klass.find_or_create_by(value)
29
+ puts " success!"
30
+ rescue => e
31
+ puts " failure (#{e.message})"
32
+ end
33
+
34
+ def seed_from_fixture(basename, klass)
35
+ puts "==> #{basename}"
36
+ fixtures(basename).each do |key, value|
37
+ seed(basename, key, klass, value)
38
+ end
39
+
40
+ nil
41
+ end
42
+
43
+ private
44
+
45
+ def fixtures(basename)
46
+ @fixtures_dir ||= Pathname.new("./fixtures").expand_path(__dir__)
47
+
48
+ YAML.load_file(@fixtures_dir.join("#{basename}.yml"))
49
+ end
50
+ end
@@ -0,0 +1,23 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "super_test_engine"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "super_test_engine"
7
+ spec.version = SuperTestEngine::VERSION
8
+ spec.authors = ["Zach Ahn"]
9
+ spec.email = ["engineering@zachahn.com"]
10
+
11
+ spec.summary = "A thing to help test Super"
12
+
13
+ # Specify which files should be added to the gem when it is released.
14
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
15
+ spec.files = Dir.glob("{lib/**/*,*.gemspec,README.*}").select { |e| File.file?(e) }
16
+ spec.bindir = "exe"
17
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.17"
21
+ spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "minitest", "~> 5.0"
23
+ end
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_test_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Ahn
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-29 00:00:00.000000000 Z
11
+ date: 2020-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
19
+ version: '1.17'
20
+ type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.17'
27
27
  - !ruby/object:Gem::Dependency
28
- name: sqlite3
28
+ name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
41
55
  description:
42
56
  email:
43
57
  - engineering@zachahn.com
@@ -45,26 +59,31 @@ executables: []
45
59
  extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
- - MIT-LICENSE
49
62
  - README.md
50
- - Rakefile
51
- - app/controllers/admin/members_controller.rb
52
- - app/controllers/admin_controller.rb
53
- - app/dashboards/member_dashboard.rb
54
- - app/models/member.rb
55
- - config/routes.rb
56
- - db/migrate/20190216224956_create_members.rb
57
- - db/seeds.rb
58
- - lib/generators/super_test_engine/dummy/USAGE
59
- - lib/generators/super_test_engine/dummy/dummy_generator.rb
60
- - lib/generators/super_test_engine/dummy/templates/db_seeds.rb.tt
61
63
  - lib/super_test_engine.rb
62
- - lib/super_test_engine/engine.rb
63
- - lib/super_test_engine/version.rb
64
- - test/fixtures/members.yml
64
+ - lib/super_test_engine/copy_app_templates/controllers/favorite_things_controller.rb
65
+ - lib/super_test_engine/copy_app_templates/controllers/members_controller.rb
66
+ - lib/super_test_engine/copy_app_templates/controllers/ships_controller.rb
67
+ - lib/super_test_engine/copy_app_templates/migrations/20190216224956_create_members.rb
68
+ - lib/super_test_engine/copy_app_templates/migrations/20190803143320_create_ships.rb
69
+ - lib/super_test_engine/copy_app_templates/migrations/20190806014121_add_ship_to_members.rb
70
+ - lib/super_test_engine/copy_app_templates/migrations/20191126050453_create_favorite_things.rb
71
+ - lib/super_test_engine/copy_app_templates/models/favorite_thing.rb
72
+ - lib/super_test_engine/copy_app_templates/models/member.rb
73
+ - lib/super_test_engine/copy_app_templates/models/ship.rb
74
+ - lib/super_test_engine/copy_app_templates/routes.rb
75
+ - lib/super_test_engine/copy_app_templates/seeds.rb
76
+ - lib/super_test_engine/copy_app_templates/views/members/_favorite_things.html.erb
77
+ - lib/super_test_engine/copy_app_templates/views/members/show.html.erb
78
+ - lib/super_test_engine/fixtures/favorite_things.yml
79
+ - lib/super_test_engine/fixtures/members.yml
80
+ - lib/super_test_engine/fixtures/ships.yml
81
+ - lib/super_test_engine/generate_copy_app.rb
82
+ - lib/super_test_engine/generate_dummy.rb
83
+ - lib/super_test_engine/starfleet_seeder.rb
84
+ - super_test_engine.gemspec
65
85
  homepage:
66
- licenses:
67
- - MIT
86
+ licenses: []
68
87
  metadata: {}
69
88
  post_install_message:
70
89
  rdoc_options: []
@@ -84,5 +103,5 @@ requirements: []
84
103
  rubygems_version: 3.0.3
85
104
  signing_key:
86
105
  specification_version: 4
87
- summary: An engine to help test Super
106
+ summary: A thing to help test Super
88
107
  test_files: []
@@ -1,20 +0,0 @@
1
- Copyright 2019 Zach Ahn
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,32 +0,0 @@
1
- begin
2
- require 'bundler/setup'
3
- rescue LoadError
4
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
- end
6
-
7
- require 'rdoc/task'
8
-
9
- RDoc::Task.new(:rdoc) do |rdoc|
10
- rdoc.rdoc_dir = 'rdoc'
11
- rdoc.title = 'SuperTestEngine'
12
- rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.md')
14
- rdoc.rdoc_files.include('lib/**/*.rb')
15
- end
16
-
17
- APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
18
- load 'rails/tasks/engine.rake'
19
-
20
- load 'rails/tasks/statistics.rake'
21
-
22
- require 'bundler/gem_tasks'
23
-
24
- require 'rake/testtask'
25
-
26
- Rake::TestTask.new(:test) do |t|
27
- t.libs << 'test'
28
- t.pattern = 'test/**/*_test.rb'
29
- t.verbose = false
30
- end
31
-
32
- task default: :test
@@ -1,9 +0,0 @@
1
- module Admin
2
- class MembersController < AdminController
3
- private
4
-
5
- def dashboard
6
- MemberDashboard.new
7
- end
8
- end
9
- end
@@ -1,2 +0,0 @@
1
- class AdminController < Super::ApplicationController
2
- end
@@ -1,81 +0,0 @@
1
- class MemberDashboard
2
- def title
3
- Member.name.pluralize
4
- end
5
-
6
- def model
7
- Member
8
- end
9
-
10
- def index_scope
11
- Member.all
12
- end
13
-
14
- def index_columns
15
- [
16
- :name,
17
- :rank,
18
- :position,
19
- :created_at,
20
- ]
21
- end
22
-
23
- def create_scope
24
- Member.all
25
- end
26
-
27
- def new_scope
28
- Member.all
29
- end
30
-
31
- def new_columns
32
- [
33
- :name,
34
- :rank,
35
- :position,
36
- ]
37
- end
38
-
39
- def edit_scope
40
- Member.all
41
- end
42
-
43
- def edit_columns
44
- [
45
- :name,
46
- :rank,
47
- :position,
48
- ]
49
- end
50
-
51
- def show_scope
52
- Member.all
53
- end
54
-
55
- def show_columns
56
- [
57
- :id,
58
- :name,
59
- :rank,
60
- :position,
61
- :created_at,
62
- :updated_at,
63
- ]
64
- end
65
-
66
- def update_scope
67
- Member.all
68
- end
69
-
70
- def destroy_scope
71
- Member.all
72
- end
73
-
74
- def permitted_create_params(params)
75
- params.require(:member).permit(:name, :rank, :position)
76
- end
77
-
78
- def permitted_update_params(params)
79
- params.require(:member).permit(:name, :rank, :position)
80
- end
81
- end