bucky-core 0.9.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 (100) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +66 -0
  3. data/.codeclimate.yml +48 -0
  4. data/.dockerignore +11 -0
  5. data/.gitignore +40 -0
  6. data/.rspec +3 -0
  7. data/.rubocop.yml +76 -0
  8. data/.rubocop_todo.yml +51 -0
  9. data/Dockerfile +38 -0
  10. data/Dockerfile.system-test +44 -0
  11. data/Gemfile +4 -0
  12. data/Gemfile.lock +115 -0
  13. data/LICENSE +201 -0
  14. data/README.md +246 -0
  15. data/Rakefile +8 -0
  16. data/bin/console +15 -0
  17. data/bin/setup +8 -0
  18. data/bucky-core.gemspec +47 -0
  19. data/docker-compose.dev-with-bm.yml +28 -0
  20. data/docker-compose.dev.yml +18 -0
  21. data/docker-compose.system-test.yml +21 -0
  22. data/docker/nginx/Dockerfile +7 -0
  23. data/docker/nginx/nginx.conf +22 -0
  24. data/docker/nginx/public/index.html +19 -0
  25. data/docker/nginx/public/test_page.html +12 -0
  26. data/exe/bucky +214 -0
  27. data/lib/bucky.rb +3 -0
  28. data/lib/bucky/core/database/db_connector.rb +29 -0
  29. data/lib/bucky/core/database/test_data_operator.rb +195 -0
  30. data/lib/bucky/core/exception/bucky_exception.rb +39 -0
  31. data/lib/bucky/core/report/screen_shot_generator.rb +24 -0
  32. data/lib/bucky/core/test_core/test_case_loader.rb +162 -0
  33. data/lib/bucky/core/test_core/test_class_generator.rb +129 -0
  34. data/lib/bucky/core/test_core/test_manager.rb +70 -0
  35. data/lib/bucky/core/test_core/test_result.rb +92 -0
  36. data/lib/bucky/test_equipment/evidence/evidence_generator.rb +36 -0
  37. data/lib/bucky/test_equipment/pageobject/base_pageobject.rb +55 -0
  38. data/lib/bucky/test_equipment/pageobject/pages.rb +61 -0
  39. data/lib/bucky/test_equipment/selenium_handler/webdriver_handler.rb +66 -0
  40. data/lib/bucky/test_equipment/test_case/abst_test_case.rb +49 -0
  41. data/lib/bucky/test_equipment/test_case/e2e_test_case.rb +70 -0
  42. data/lib/bucky/test_equipment/test_case/linkstatus_test_case.rb +28 -0
  43. data/lib/bucky/test_equipment/user_operation/user_operation_helper.rb +97 -0
  44. data/lib/bucky/test_equipment/user_operation/user_operation_logger.rb +15 -0
  45. data/lib/bucky/test_equipment/user_operation/user_operator.rb +61 -0
  46. data/lib/bucky/test_equipment/verifications/abst_verification.rb +13 -0
  47. data/lib/bucky/test_equipment/verifications/e2e_verification.rb +106 -0
  48. data/lib/bucky/test_equipment/verifications/js_error_checker.rb +23 -0
  49. data/lib/bucky/test_equipment/verifications/service_verifications.rb +62 -0
  50. data/lib/bucky/test_equipment/verifications/status_checker.rb +180 -0
  51. data/lib/bucky/tools/lint.rb +69 -0
  52. data/lib/bucky/utils/bucky_logger.rb +25 -0
  53. data/lib/bucky/utils/bucky_output.rb +23 -0
  54. data/lib/bucky/utils/config.rb +55 -0
  55. data/lib/bucky/utils/requests.rb +33 -0
  56. data/lib/bucky/utils/yaml_load.rb +24 -0
  57. data/lib/bucky/version.rb +7 -0
  58. data/system_testing/test_bucky_project/.bucky_home +2 -0
  59. data/system_testing/test_bucky_project/config/bucky_config.yml +6 -0
  60. data/system_testing/test_bucky_project/config/e2e_config.yml +15 -0
  61. data/system_testing/test_bucky_project/config/linkstatus_config.yml +3 -0
  62. data/system_testing/test_bucky_project/config/test_db_config.yml +8 -0
  63. data/system_testing/test_bucky_project/services/README.md +1 -0
  64. data/system_testing/test_bucky_project/services/service_a/pc/pageobject/index.rb +13 -0
  65. data/system_testing/test_bucky_project/services/service_a/pc/parts/index.yml +6 -0
  66. data/system_testing/test_bucky_project/services/service_a/pc/scenarios/e2e/pc_e2e.yml +68 -0
  67. data/system_testing/test_bucky_project/services/service_a/pc/scenarios/e2e/setup_each_pc_e2e.yml +20 -0
  68. data/system_testing/test_bucky_project/services/service_a/pc/scenarios/e2e/setup_teardown_each_pc_e2e.yml +35 -0
  69. data/system_testing/test_bucky_project/services/service_a/pc/scenarios/e2e/teardown_each_pc_e2e.yml +20 -0
  70. data/system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link.yml +10 -0
  71. data/system_testing/test_bucky_project/services/service_a/sp/pageobject/index.rb +14 -0
  72. data/system_testing/test_bucky_project/services/service_a/sp/parts/index.yml +6 -0
  73. data/system_testing/test_bucky_project/services/service_a/sp/scenarios/e2e/sp_e2e_test.yml +26 -0
  74. data/system_testing/test_bucky_project/services/service_a/sp/scenarios/linkstatus/sp_link.yml +10 -0
  75. data/system_testing/test_bucky_project/services/service_a/tablet/pageobject/index.rb +14 -0
  76. data/system_testing/test_bucky_project/services/service_a/tablet/parts/index.yml +6 -0
  77. data/system_testing/test_bucky_project/services/service_a/tablet/scenarios/e2e/tablet_e2e_test.yml +26 -0
  78. data/system_testing/test_bucky_project/system/evidences/README.md +1 -0
  79. data/system_testing/test_bucky_project/system/evidences/screen_shots/README.md +1 -0
  80. data/system_testing/test_bucky_project/system/logs/README.md +1 -0
  81. data/system_testing/test_specification.md +38 -0
  82. data/system_testing/testing_code/command.bats +42 -0
  83. data/system_testing/testing_code/e2e.bats +75 -0
  84. data/system_testing/testing_code/linkstatus.bats +24 -0
  85. data/template/make_page/pc/pageobject/sample_page.rb +23 -0
  86. data/template/make_page/pc/parts/sample_page.yml +9 -0
  87. data/template/make_page/sp/pageobject/sample_page.rb +24 -0
  88. data/template/make_page/sp/parts/sample_page.yml +9 -0
  89. data/template/make_page/tablet/pageobject/sample_page.rb +24 -0
  90. data/template/make_page/tablet/parts/sample_page.yml +9 -0
  91. data/template/new/.bucky_home +2 -0
  92. data/template/new/config/bucky_config.yml +6 -0
  93. data/template/new/config/e2e_config.yml +15 -0
  94. data/template/new/config/linkstatus_config.yml +3 -0
  95. data/template/new/config/test_db_config.yml +8 -0
  96. data/template/new/services/README.md +1 -0
  97. data/template/new/system/evidences/README.md +1 -0
  98. data/template/new/system/evidences/screen_shots/README.md +1 -0
  99. data/template/new/system/logs/README.md +1 -0
  100. metadata +415 -0
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'bucky/core'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'bucky/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'bucky-core'
9
+ spec.version = Bucky::Version::VERSION
10
+ spec.authors = %w[NaotoKishino HikaruFukuzawa SeiyaSato NaokiNakano RikiyaHikimochi JyeRuey]
11
+ spec.email = ['KishinoNaoto@lifull.com']
12
+
13
+ spec.summary = 'A test framework that supports Life Cycle of System Testing.'
14
+ spec.description = <<-DESCRIPTION
15
+ Bucky support run in parellel, test results managed in database, and some test categories(E2E, http status check) and so on.
16
+ DESCRIPTION
17
+ spec.homepage = 'https://github.com/lifull-dev/bucky-core'
18
+ spec.license = 'MIT'
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject { |f|
21
+ f.match(%r{^(test|spec|features)/})
22
+ }
23
+ spec.bindir = 'exe'
24
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
+ spec.require_paths = ['lib']
26
+
27
+ spec.add_development_dependency 'awesome_print', '~> 1.8'
28
+ spec.add_development_dependency 'bundler', '~> 1.15'
29
+ spec.add_development_dependency 'hirb', '~> 0.7'
30
+ spec.add_development_dependency 'pry', '~> 0.10'
31
+ spec.add_development_dependency 'pry-byebug', '~> 3.4'
32
+ spec.add_development_dependency 'pry-stack_explorer', '~> 0.4'
33
+ spec.add_development_dependency 'rake', '~> 12'
34
+ spec.add_development_dependency 'rspec', '~> 3.6'
35
+ spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3'
36
+ spec.add_development_dependency 'rubocop', '~> 0.54'
37
+ spec.add_development_dependency 'simplecov-console', '~> 0.4.2'
38
+
39
+ spec.add_runtime_dependency 'color_echo', '~> 3.1'
40
+ spec.add_runtime_dependency 'json', '~> 2.1'
41
+ spec.add_runtime_dependency 'nokogiri', '~> 1.8'
42
+ spec.add_runtime_dependency 'parallel', '~> 1.11'
43
+ spec.add_runtime_dependency 'ruby-mysql', '~> 2.9'
44
+ spec.add_runtime_dependency 'selenium-webdriver', '~> 3.4'
45
+ spec.add_runtime_dependency 'sequel', '~> 4.48'
46
+ spec.add_runtime_dependency 'test-unit', '~> 3.2'
47
+ end
@@ -0,0 +1,28 @@
1
+ version: '3'
2
+ services:
3
+ bucky-core:
4
+ build:
5
+ context: .
6
+ dockerfile: Dockerfile
7
+ container_name: bucky-core
8
+ volumes:
9
+ - .:/bucky-core
10
+ - .sample:/app
11
+ tty: true
12
+ environment:
13
+ - BUCKY_DB_USERNAME=root
14
+ - BUCKY_DB_PASSWORD=password
15
+ - BUCKY_DB_HOSTNAME=bm-mysql
16
+ - BUCKY_DB_NAME=bucky_development
17
+ networks:
18
+ - bucky-management_default
19
+ chrome:
20
+ image: selenium/standalone-chrome-debug:3.11.0
21
+ container_name: chrome
22
+ ports:
23
+ - '4444:4444'
24
+ - '5901:5900'
25
+ shm_size: 1G
26
+ networks:
27
+ bucky-management_default:
28
+ external: true
@@ -0,0 +1,18 @@
1
+ version: '3'
2
+ services:
3
+ bucky-core:
4
+ build:
5
+ context: .
6
+ dockerfile: Dockerfile
7
+ container_name: bucky-core
8
+ volumes:
9
+ - .:/bucky-core
10
+ - .sample:/app
11
+ tty: true
12
+ chrome:
13
+ image: selenium/standalone-chrome-debug:3.11.0
14
+ container_name: chrome
15
+ ports:
16
+ - '4444:4444'
17
+ - '5901:5900'
18
+ shm_size: 1G
@@ -0,0 +1,21 @@
1
+ version: '3'
2
+ services:
3
+ bucky-core:
4
+ container_name: bucky-core
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile.system-test
8
+ volumes:
9
+ - .:/bucky-core
10
+ tty: true
11
+ chrome:
12
+ container_name: bucky-chrome
13
+ image: selenium/standalone-chrome-debug:3.11.0
14
+ ports:
15
+ - '4444:4444'
16
+ # For local debug
17
+ - '5901:5900'
18
+ web:
19
+ container_name: bucky.net
20
+ build:
21
+ context: docker/nginx
@@ -0,0 +1,7 @@
1
+ FROM nginx:1.13
2
+ RUN rm -f /etc/nginx/conf.d/*
3
+ RUN rm -f /usr/share/nginx/html/*
4
+
5
+ COPY ./public /app/public
6
+ ADD ./nginx.conf /etc/nginx/nginx.conf
7
+ CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
@@ -0,0 +1,22 @@
1
+ user nginx;
2
+
3
+ events {
4
+ worker_connections 128;
5
+ }
6
+
7
+ http {
8
+ access_log /var/log/nginx/access.log;
9
+ error_log /var/log/nginx/error.log;
10
+
11
+ server_tokens off;
12
+ index index.html;
13
+
14
+ server {
15
+ listen 80;
16
+ server_name localhost;
17
+
18
+ location /{
19
+ root /app/public;
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Test Index</title>
6
+
7
+ <script type="text/javascript">
8
+ window.onload = function () {
9
+ document.getElementById( "user_agent" ).innerHTML = navigator.userAgent;
10
+ }
11
+ </script>
12
+ </head>
13
+
14
+ <body>
15
+ <a id="test_link" href="/test_page.html">Go to test page</a>
16
+ <div id="user_agent"></div>
17
+ </body>
18
+
19
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Test Page</title>
6
+ </head>
7
+
8
+ <body>
9
+ <h1>This is a Test page</h1>
10
+ </body>
11
+
12
+ </html>
data/exe/bucky ADDED
@@ -0,0 +1,214 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'rubygems'
5
+ require 'optparse'
6
+ require 'color_echo'
7
+ require 'fileutils'
8
+ require_relative '../lib/bucky/version'
9
+
10
+ # Color Settings
11
+ CE.fg(:cyan)
12
+
13
+ NEW_COMMAND = %w[new].freeze
14
+ MAKE_SERVICE_COMMAND = %w[make service].freeze
15
+ MAKE_PAGE_COMMAND = %w[make page].freeze
16
+ RUN_COMMAND = %w[run].freeze
17
+ RERUN_COMMAND = %w[rerun].freeze
18
+ LINT_COMMAND = %w[lint].freeze
19
+
20
+ # ===================================
21
+ # Parse options =====================
22
+ # ===================================
23
+ opts = OptionParser.new
24
+ opts.banner = 'Bucky: A test framework that supports Life Cycle of System Testing.'
25
+ opts.define_head 'Usage: bucky [task]'
26
+ opts.separator ''
27
+ opts.separator 'Examples:'
28
+ opts.separator " bucky #{RUN_COMMAND.join(' ')} --test_category e2e --suite_name test_suite --case_name test_case_1"
29
+ opts.separator " bucky #{RUN_COMMAND.join(' ')} -t e2e -s 1 -c 1"
30
+ opts.separator " bucky #{RUN_COMMAND.join(' ')} --test_category linkstatus --re_test_count 3"
31
+ opts.separator " bucky #{RUN_COMMAND.join(' ')} --test_category e2e --suite_name test_suite --case_name test_case_1 --device sp --priority high --re_test_count 3"
32
+ opts.separator ''
33
+ opts.separator 'For more information see https://github.com/lifull-dev/bucky-core'
34
+ opts.separator ''
35
+ opts.separator 'Options:'
36
+
37
+ opts.on_tail('-h', '-?', '--help', 'Show this message') do
38
+ puts opts
39
+ exit
40
+ end
41
+
42
+ opts.on_tail('-v', '--version', 'Show version') do
43
+ puts "BuckyCore: #{Bucky::Version::VERSION}"
44
+ exit
45
+ end
46
+
47
+ test_cond = {}
48
+ # Save command and option
49
+ test_cond[:command_and_option] = 'bucky ' + ARGV.join(' ')
50
+ opts.on('-t', '--test_category TEST_CATEGORY', 'e.g. --test_category e2e, -t e2e') do |v|
51
+ test_cond[:test_category] = v
52
+ end
53
+ opts.on('-s', '--suite_name SUITE_NAME') do |v|
54
+ test_cond[:suite_name] = v
55
+ end
56
+ # opts.on('-c', '--case_id CASE_ID') do |v|
57
+ # test_cond[:case_id] = v
58
+ # end
59
+ opts.on('-S', '--service SERVICE') do |v|
60
+ test_cond[:service] = v
61
+ end
62
+ opts.on('-D', '--device DEVICE') do |v|
63
+ test_cond[:device] = v
64
+ end
65
+ opts.on('-p', '--priority PRIORITY') do |v|
66
+ test_cond[:priority] = v
67
+ end
68
+ opts.on('-d', 'Not Insert TestReport') do |_|
69
+ $debug = true
70
+ end
71
+
72
+ # TODO: Add error handling, if the argument of '-r' is not greater than 0
73
+ opts.on('-r', '--re_test_count RE_TEST_COUNT') do |v|
74
+ test_cond[:re_test_count] = v
75
+ end
76
+ opts.on('-c', '--case CASE_NAME') do |v|
77
+ test_cond[:case] = v
78
+ end
79
+ opts.on('-j', '--job_id JOB_ID') do |v|
80
+ test_cond[:job] = v
81
+ end
82
+ opts.on('-l', '--label LABEL_NAME') do |v|
83
+ test_cond[:label] = v
84
+ end
85
+ opts.on('-m', '--link_check_max_times') do |v|
86
+ test_cond[:link_check_max_times] = v.to_i
87
+ end
88
+
89
+ lint_cond = {}
90
+ opts.on('-C', '--category CATEGORY_NAME') do |v|
91
+ lint_cond[:lint_category] = v
92
+ end
93
+
94
+ opts.parse!
95
+
96
+ # ===================================
97
+ # Select by command =================
98
+ # ===================================
99
+
100
+ # Output error message and exit
101
+ # @param [String] msg error message
102
+ def error_and_exit(msg = nil)
103
+ CE.fg(:yellow)
104
+ puts 'Invalid command error.'
105
+ CE.fg(:red)
106
+ puts " [Error] #{msg}" if msg
107
+ CE.fg(:yellow)
108
+ puts " your command : bucky #{ARGV.join(' ')}"
109
+ puts ' Please input some commands.'
110
+ puts " e.g. bucky #{NEW_COMMAND.join(' ')}"
111
+ puts " bucky #{RUN_COMMAND.join(' ')}"
112
+ puts " bucky #{MAKE_SERVICE_COMMAND.join(' ')}"
113
+ puts " bucky #{MAKE_PAGE_COMMAND.join(' ')}"
114
+ puts " bucky #{RERUN_COMMAND.join(' ')}"
115
+ puts " bucky #{LINT_COMMAND.join(' ')}"
116
+ exit
117
+ end
118
+
119
+ def bucky_home?
120
+ File.exist?('.bucky_home')
121
+ end
122
+
123
+ current_dir = Dir.pwd
124
+ gem_script_dir = __dir__
125
+
126
+ if ARGV == RUN_COMMAND
127
+ error_and_exit('Not bucky project dirctory here.') unless bucky_home?
128
+
129
+ $bucky_home_dir = Dir.pwd
130
+ # Default conditions setting conditions setting
131
+ test_cond[:test_category] ||= 'e2e'
132
+ test_cond[:re_test_count] = test_cond[:re_test_count] ? test_cond[:re_test_count].to_i : 1
133
+ test_cond[:link_check_max_times] ||= 3
134
+ # Change to array e.g.--suite_id 1,2,3 -> :suite_id=>[1,2,3]
135
+ test_cond.each { |k, v| test_cond[k] = v.split(',') if v.instance_of?(String) }
136
+ require_relative '../lib/bucky/core/test_core/test_manager'
137
+ Bucky::Core::TestCore::TestManager.new(test_cond).run
138
+
139
+ elsif ARGV == RERUN_COMMAND
140
+ $bucky_home_dir = Dir.pwd
141
+ # Default conditions setting conditions setting
142
+ test_cond[:test_category] ||= 'e2e'
143
+ test_cond[:link_check_max_times] ||= 3
144
+ test_cond[:re_test_count] = test_cond[:re_test_count] ? test_cond[:re_test_count].to_i : 1
145
+ # Change to array e.g.--suite_id 1,2,3 -> :suite_id=>[1,2,3]
146
+ test_cond.each { |k, v| test_cond[k] = v.split(',') if v.instance_of?(String) }
147
+ require_relative '../lib/bucky/core/test_core/test_manager'
148
+ Bucky::Core::TestCore::TestManager.new(test_cond).rerun
149
+
150
+ elsif ARGV == LINT_COMMAND
151
+ $bucky_home_dir = Dir.pwd
152
+ # Default conditions setting
153
+ lint_cond[:lint_category] ||= 'config'
154
+ require_relative '../lib/bucky/tools/lint'
155
+ Bucky::Tools::Lint.check(lint_cond[:lint_category])
156
+
157
+ elsif ARGV[0..0] == NEW_COMMAND
158
+ error_and_exit('No test app name.') if ARGV.length < 2
159
+
160
+ # Copy template
161
+ FileUtils.cp_r("#{gem_script_dir}/../template/new/", current_dir, verbose: true)
162
+ # Rename dir
163
+ FileUtils.mv("#{current_dir}/new", "#{current_dir}/#{ARGV[1]}", verbose: true)
164
+
165
+ elsif ARGV[0..1] == MAKE_SERVICE_COMMAND
166
+ error_and_exit('Not bucky project dirctory here.') unless bucky_home?
167
+ error_and_exit('No service name.') if ARGV.length < 3
168
+
169
+ service_name = ARGV[2]
170
+
171
+ # Check if there is any directory in same service name.
172
+ error_and_exit("Already exist #{service_name} directory.") if File.exist?("#{current_dir}/services/#{service_name}")
173
+ FileUtils.mkdir("#{current_dir}/services/#{service_name}", verbose: true)
174
+
175
+ elsif ARGV[0..1] == MAKE_PAGE_COMMAND
176
+ support_device = %w[pc sp tablet]
177
+ error_and_exit('Not bucky project dirctory here.') unless bucky_home?
178
+ error_and_exit('No page name.') if ARGV.length < 3
179
+ error_and_exit('No service name.') unless test_cond[:service]
180
+
181
+ # Default conditions setting
182
+ test_cond[:device] ||= 'pc'
183
+
184
+ error_and_exit("#{test_cond[:device]} device is not supported. (only pc/sp/tablet.)") unless support_device.include?(test_cond[:device])
185
+
186
+ page_name = ARGV[2]
187
+ pageobject_dir = "#{current_dir}/services/#{test_cond[:service]}/#{test_cond[:device]}/pageobject"
188
+ pageobject_rb = "#{pageobject_dir}/#{page_name}.rb"
189
+ parts_dir = "#{current_dir}/services/#{test_cond[:service]}/#{test_cond[:device]}/parts"
190
+ parts_file = "#{parts_dir}/#{page_name}.yml"
191
+
192
+ error_and_exit("Already exist pageobject file: #{pageobject_rb}.") if File.exist?(pageobject_rb)
193
+ error_and_exit("Already exist parts file: #{parts_file}.") if File.exist?(parts_file)
194
+ FileUtils.mkdir_p("#{current_dir}/services/#{test_cond[:service]}/#{test_cond[:device]}")
195
+ FileUtils.cp_r(
196
+ "#{gem_script_dir}/../template/make_page/#{test_cond[:device]}",
197
+ "#{current_dir}/services/#{test_cond[:service]}",
198
+ verbose: true
199
+ )
200
+
201
+ FileUtils.mv("#{pageobject_dir}/sample_page.rb", pageobject_rb, verbose: true)
202
+ FileUtils.mv("#{parts_dir}/sample_page.yml", parts_file, verbose: true)
203
+
204
+ # Change service name and page name on pageobject
205
+ # | {SampleService} -> ServiceName
206
+ # | {SamplePage} -> PageName
207
+ script = File.open(pageobject_rb).read
208
+ split_and_capitalize = proc { |str| str.split(/_|-/).map(&:capitalize).join }
209
+ script.sub!('{SampleService}', split_and_capitalize.call(test_cond[:service]))
210
+ script.sub!('{SamplePage}', split_and_capitalize.call(page_name))
211
+ File.open(pageobject_rb, 'w+') { |f| f.write script }
212
+ else
213
+ error_and_exit
214
+ end
data/lib/bucky.rb ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bucky/version'
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sequel'
4
+ require_relative '../exception/bucky_exception'
5
+ require_relative '../../utils/config'
6
+
7
+ module Bucky
8
+ module Core
9
+ module Database
10
+ class DbConnector
11
+ attr_reader :con
12
+ def initialize
13
+ @test_db_config = Bucky::Utils::Config.instance[:test_db]
14
+ end
15
+
16
+ # Connect to database
17
+ # @param [String] db_name database name
18
+ def connect(db_name = 'bucky_test')
19
+ @con = Sequel.connect(@test_db_config[db_name.to_sym], encoding: 'utf8')
20
+ end
21
+
22
+ # Disconnect to database
23
+ def disconnect
24
+ @con.disconnect
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end