ruby_raider 0.3.0 → 0.3.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83e7e23f59e2e6864f53d64723ce6c381b48790be638f1a6a68a443066ec79b0
4
- data.tar.gz: 11e974c23bbea75f85cae9eeab28629e10bf29f2bf41666caf05e5f11131faa0
3
+ metadata.gz: 07240bddaf0b3edae4d1d8202df31ac428c143941680f02fb51ea54a8b478d37
4
+ data.tar.gz: 887a4fc52c2c5899cc5999292a1edd3a357d1ecedbac9dea691edb06f980c6f5
5
5
  SHA512:
6
- metadata.gz: e73135a4d13b39478976fd99beb0dfe42da3038518e7616b21f6aba3449bb82994770fa90df827ab30ae1febfd0eb5b38b22aa492efdebc6ebf1cbbf6d541925
7
- data.tar.gz: 69d1474035d9ac00aaae5bf940fc97856958a583b34514f088fbe0922144f1b9ded788ee9cf504d6c620345758676d1f49d01491fb647841b1b7cec5b9cbdbab
6
+ metadata.gz: d4cf0f65241e104cb96ee22ee79e61a24e049cf834aed0ea0098ea801f64cabe0a037d3846f50c5d60148b50e4a2621fa06329f1a697ea2ee8750b6656c78a49
7
+ data.tar.gz: ed34541a0df8cf638630d6db03617e1aff99a0fb7432378971ccd371242be91624c3940e94769acc9d5058194b27a946d40c15a955291ff2d5dee5de5d413e55
data/README.md CHANGED
@@ -1,14 +1,15 @@
1
- # ruby_raider
2
- This is a gem to make setup and start of UI automation projects easier
3
- You can find more information and updates on releaseas in : https://ruby-raider.com/
1
+ # Ruby Raider
2
+
3
+ This is a gem to make setup and start of UI automation projects easier
4
+ You can find more information and updates on releases in : https://ruby-raider.com/
4
5
 
5
6
  Just do:
6
7
 
7
8
  **gem install ruby_raider**
8
9
 
9
- then do:
10
+ then do:
10
11
 
11
- **raider new [name_of_project]**
12
+ **raider new [name_of_project]**
12
13
 
13
14
  and you will have a new project in the folder you are in
14
15
 
@@ -21,3 +22,39 @@ Currently we only support:
21
22
  In order to run the appium tests, download the example [app](https://github.com/cloudgrey-io/the-app/releases/tag/v1.10.0)
22
23
 
23
24
  This works in all the platforms (Tested on Mac OS, Linux and Windows)
25
+
26
+ **Ruby raider provides the following list of commands**
27
+ ```
28
+ raider browser [BROWSER] # Sets the default browser for a project
29
+
30
+ raider feature [FEATURE_NAME] # Creates a new feature
31
+
32
+ raider help [COMMAND] # Describe available commands or one specific command
33
+
34
+ raider helper [HELPER_NAME] # Creates a new helper
35
+
36
+ raider new [PROJECT_NAME] # Creates a new framework based on settings picked
37
+
38
+ raider page [PAGE_NAME] # Creates a new page object
39
+
40
+ raider path [PATH] # Sets the default path for scaffolding
41
+
42
+ raider raid # It runs all the tests in a project
43
+
44
+ raider spec [SPEC_NAME] # Creates a new spec
45
+
46
+ raider url [URL] # Sets the default url for a project
47
+ ```
48
+
49
+ It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and
50
+ specs.
51
+
52
+ If you want to set the default path for the creation of your features, helpers and specs:
53
+
54
+ ```
55
+ raider path [PATH_NAME] --feature or -f
56
+ raider path [PATH_NAME] --spec or -s
57
+ raider path [PATH_NAME] --helper or -h
58
+ ```
59
+
60
+ If you don't specify an option path will assume you want to change the default path for pages
data/Rakefile CHANGED
@@ -12,4 +12,4 @@ desc 'Create a page'
12
12
  task :page, [:name] do |_t, args|
13
13
  RubyRaider.start
14
14
  RubyRaider.page(args.page)
15
- end
15
+ end
@@ -12,32 +12,30 @@ class AutomationGenerator < Generator
12
12
  end
13
13
 
14
14
  def generate_home_page
15
- if @_initializer.first.include?('appium_ios')
16
- template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
17
- end
15
+ return unless @_initializer.first.include?('appium_ios')
16
+
17
+ template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
18
18
  end
19
19
 
20
20
  def generate_header_component
21
- unless @_initializer.first.include?('appium_ios')
22
- template('automation/component.tt', "#{name}/page_objects/components/header_component.rb")
23
- end
21
+ return if @_initializer.first.include?('appium_ios')
22
+
23
+ template('automation/component.tt', "#{name}/page_objects/components/header_component.rb")
24
24
  end
25
25
 
26
26
  def generate_abstract_component
27
- unless @_initializer.first.include?('appium_ios')
28
- template('automation/abstract_component.tt', "#{name}/page_objects/abstract/abstract_component.rb")
29
- end
27
+ return if @_initializer.first.include?('appium_ios')
28
+
29
+ template('automation/abstract_component.tt', "#{name}/page_objects/abstract/abstract_component.rb")
30
30
  end
31
31
 
32
32
  def generate_confirmation_page
33
- if @_initializer.first.include?('appium_ios')
34
- template('automation/confirmation_page.tt', "#{name}/page_objects/pages/confirmation_page.rb")
35
- end
33
+ return unless @_initializer.first.include?('appium_ios')
34
+
35
+ template('automation/confirmation_page.tt', "#{name}/page_objects/pages/confirmation_page.rb")
36
36
  end
37
37
 
38
38
  def generate_appium_settings
39
- if @_initializer.first.include?('appium_ios')
40
- template('automation/appium_settings.tt', "#{name}/appium.txt")
41
- end
39
+ template('automation/appium_settings.tt', "#{name}/appium.txt") if @_initializer.first.include?('appium_ios')
42
40
  end
43
41
  end
@@ -27,4 +27,3 @@ class CommonGenerator < Generator
27
27
  empty_directory "#{name}/allure-results/screenshots"
28
28
  end
29
29
  end
30
-
@@ -15,4 +15,3 @@ class CucumberGenerator < Generator
15
15
  template('cucumber/env.tt', "#{name}/features/support/env.rb")
16
16
  end
17
17
  end
18
-
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'thor'
3
4
 
4
5
  class Generator < Thor::Group
@@ -9,7 +10,6 @@ class Generator < Thor::Group
9
10
  argument :name
10
11
 
11
12
  def self.source_root
12
- File.dirname(__FILE__) + '/templates'
13
+ "#{File.dirname(__FILE__)}/templates"
13
14
  end
14
15
  end
15
-
@@ -3,7 +3,6 @@
3
3
  require_relative 'generator'
4
4
 
5
5
  class HelpersGenerator < Generator
6
-
7
6
  def generate_raider_helper
8
7
  template('helpers/raider_helper.tt', "#{name}/helpers/raider.rb")
9
8
  end
@@ -13,26 +12,22 @@ class HelpersGenerator < Generator
13
12
  end
14
13
 
15
14
  def generate_browser_helper
16
- if @_initializer.first.include?('watir')
17
- template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
18
- end
15
+ template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb") if @_initializer.first.include?('watir')
19
16
  end
20
17
 
21
18
  def generate_spec_helper
22
- if @_initializer.first.include?('rspec')
23
- template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb")
24
- end
19
+ template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb") if @_initializer.first.include?('rspec')
25
20
  end
26
21
 
27
22
  def generate_selenium_helper
28
- if @_initializer.first.include?('selenium')
29
- template('helpers/selenium_helper.tt', "#{name}/helpers/selenium_helper.rb")
30
- end
23
+ return unless @_initializer.first.include?('selenium')
24
+
25
+ template('helpers/selenium_helper.tt', "#{name}/helpers/selenium_helper.rb")
31
26
  end
32
27
 
33
28
  def generate_driver_helper
34
- unless @_initializer.first.include?('watir')
35
- template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
36
- end
29
+ return if @_initializer.first.include?('watir')
30
+
31
+ template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
37
32
  end
38
33
  end
@@ -3,7 +3,6 @@
3
3
  require_relative 'generator'
4
4
 
5
5
  class RspecGenerator < Generator
6
-
7
6
  def generate_spec
8
7
  template('rspec/spec.tt', "#{name}/spec/login_page_spec.rb")
9
8
  end
@@ -12,4 +11,3 @@ class RspecGenerator < Generator
12
11
  template('rspec/base_spec.tt', "#{name}/spec/base_spec.rb")
13
12
  end
14
13
  end
15
-
@@ -1,97 +1,60 @@
1
- What is Raider?
2
- ===========
1
+ # Ruby Raider
3
2
 
4
- Raider is a tool to make the setup and start of automation projects in ruby easier, with one command you are ready to go
3
+ This is a gem to make setup and start of UI automation projects easier
4
+ You can find more information and updates on releases in : https://ruby-raider.com/
5
5
 
6
- # Pre-requisites:
6
+ Just do:
7
7
 
8
- Install RVM:
9
- https://rvm.io/rvm/install
8
+ **gem install ruby_raider**
10
9
 
11
- # How to use the framework:
10
+ then do:
12
11
 
13
- If you want to run all the tests from your terminal do:
14
- *rspec spec/*
12
+ **raider new [name_of_project]**
15
13
 
16
- If you want to run all the tests in parallel do:
17
- *parallel_rspec spec/*
14
+ and you will have a new project in the folder you are in
18
15
 
19
- # How are specs organized:
16
+ Currently we only support:
20
17
 
21
- We use 'context' as the highest grouping level to indicate in which part of the application we are as an example:
18
+ * Gerating a Selenium with both Cucumber and Rspec framework
19
+ * Gerating a Watir with both Cucumber and Rspec framework
20
+ * Generating an Appium project with Rspec and Cucumber on IOS
22
21
 
23
- *context 'On the login page'/*
22
+ In order to run the appium tests, download the example [app](https://github.com/cloudgrey-io/the-app/releases/tag/v1.10.0)
24
23
 
25
- We use 'describe' from the user perspective to describe an action that the user can or cannot take:
24
+ This works in all the platforms (Tested on Mac OS, Linux and Windows)
26
25
 
27
- *describe 'A user can'/*
28
-
29
- or
30
-
31
- *describe 'A user cannot'/*
32
-
33
- This saves us repetition and forces us into an structure
34
-
35
- At last we use 'it' for the specific action the user can or cannot perform:
36
-
37
- it 'login with right credentials'
38
-
39
- If we group all of this together it will look like
40
-
41
- ```ruby
42
- context 'On the login page' do
43
- describe 'A user can' do
44
- it 'login with the right credentials' do
45
- end
46
- end
47
-
48
- describe 'A user cannot' do
49
- it 'login with the wrong credentials' do
50
- end
51
- end
52
- end
26
+ **Ruby raider provides the following list of commands**
53
27
  ```
54
- This is readed as 'On the login page a user can login with the right credentials' and 'On the login page a user cannot login with the wrong credentials'
28
+ raider browser [BROWSER] # Sets the default browser for a project
55
29
 
56
- # How pages are organized:
30
+ raider feature [FEATURE_NAME] # Creates a new feature
57
31
 
58
- ```ruby#{' '}
59
- require_relative '../abstract/base_page'
32
+ raider help [COMMAND] # Describe available commands or one specific command
60
33
 
61
- class MainPage < BasePage
34
+ raider helper [HELPER_NAME] # Creates a new helper
62
35
 
63
- using Raider::WatirHelper
36
+ raider new [PROJECT_NAME] # Creates a new framework based on settings picked
64
37
 
65
- def url(_page)
66
- '/'
67
- end
38
+ raider page [PAGE_NAME] # Creates a new page object
68
39
 
69
- # Actions
40
+ raider path [PATH] # Sets the default path for scaffolding
70
41
 
71
- def change_currency(currency)
72
- currency_dropdown.select currency
73
- end
42
+ raider raid # It runs all the tests in a project
74
43
 
75
- # Validations
44
+ raider spec [SPEC_NAME] # Creates a new spec
76
45
 
77
- def validate_currency(currency)
78
- expect(currency_dropdown.include?(currency)).to be true
79
- end
46
+ raider url [URL] # Sets the default url for a project
47
+ ```
80
48
 
81
- private
49
+ It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and
50
+ specs.
82
51
 
83
- # Elements
52
+ If you want to set the default path for the creation of your features, helpers and specs:
84
53
 
85
- def currency_dropdown
86
- browser.select(class: %w[dropdown-menu currency])
87
- end
88
- end
54
+ ```
55
+ raider path [PATH_NAME] --feature or -f
56
+ raider path [PATH_NAME] --spec or -s
57
+ raider path [PATH_NAME] --helper or -h
89
58
  ```
90
59
 
91
- Pages are organized in Actions (things a user can perform on the page), Validations (assertions), and Elements.
92
- Each page has to have a url define, and each page is using the module WatirHelper to add methods on runtime to the Watir elements
93
-
94
- # Mobile:
95
-
96
- For the appium base project to work you need to have [appium](https://appium.io)
97
- and download [the example app](https://github.com/cloudgrey-io/the-app/releases/tag/v1.10.0)
60
+ If you don't specify an option path will assume you want to change the default path for pages
data/lib/ruby_raider.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
  require 'yaml'
3
5
  require_relative 'generators/menu_generator'
@@ -5,20 +7,20 @@ require_relative '../lib/scaffolding/scaffolding'
5
7
  require_relative '../lib/utilities/utilities'
6
8
 
7
9
  class RubyRaider < Thor
8
- desc "new [PROJECT_NAME]", "Creates a new framework based on settings picked"
10
+ desc 'new [PROJECT_NAME]', 'Creates a new framework based on settings picked'
9
11
 
10
12
  def new(project_name)
11
13
  MenuGenerator.generate_choice_menu(project_name)
12
14
  end
13
15
 
14
- desc "page [PAGE_NAME]", "Creates a new page object"
16
+ desc 'page [PAGE_NAME]', 'Creates a new page object'
15
17
  option :path,
16
- :type => :string, :required => false, :desc => 'The path where your page will be created', :aliases => '-p'
18
+ type: :string, required: false, desc: 'The path where your page will be created', aliases: '-p'
17
19
  option :delete,
18
- :type => :boolean, :required => false, :desc => 'This will delete the selected page', :aliases => '-d'
20
+ type: :boolean, required: false, desc: 'This will delete the selected page', aliases: '-d'
19
21
 
20
22
  def page(name)
21
- path = options[:path].nil? ? load_config_path : options[:path]
23
+ path = options[:path].nil? ? load_config_path('page') : options[:path]
22
24
  if options[:delete]
23
25
  Scaffolding.new([name, path]).delete_class
24
26
  else
@@ -26,14 +28,14 @@ class RubyRaider < Thor
26
28
  end
27
29
  end
28
30
 
29
- desc "feature [FEATURE_NAME]", "Creates a new feature"
31
+ desc 'feature [FEATURE_NAME]', 'Creates a new feature'
30
32
  option :path,
31
- :type => :string, :required => false, :desc => 'The path where your feature will be created', :aliases => '-p'
33
+ type: :string, required: false, desc: 'The path where your feature will be created', aliases: '-p'
32
34
  option :delete,
33
- :type => :boolean, :required => false, :desc => 'This will delete the selected feature', :aliases => '-d'
35
+ type: :boolean, required: false, desc: 'This will delete the selected feature', aliases: '-d'
34
36
 
35
37
  def feature(name)
36
- path = options[:path].nil? ? load_config_path : options[:path]
38
+ path = options[:path].nil? ? load_config_path('feature') : options[:path]
37
39
  if options[:delete]
38
40
  Scaffolding.new([name, path]).delete_feature
39
41
  else
@@ -41,14 +43,14 @@ class RubyRaider < Thor
41
43
  end
42
44
  end
43
45
 
44
- desc "spec [SPEC_NAME]", "Creates a new spec"
46
+ desc 'spec [SPEC_NAME]', 'Creates a new spec'
45
47
  option :path,
46
- :type => :string, :required => false, :desc => 'The path where your spec will be created', :aliases => '-p'
48
+ type: :string, required: false, desc: 'The path where your spec will be created', aliases: '-p'
47
49
  option :delete,
48
- :type => :boolean, :required => false, :desc => 'This will delete the selected spec', :aliases => '-d'
50
+ type: :boolean, required: false, desc: 'This will delete the selected spec', aliases: '-d'
49
51
 
50
52
  def spec(name)
51
- path = options[:path].nil? ? load_config_path : options[:path]
53
+ path = options[:path].nil? ? load_config_path('spec') : options[:path]
52
54
  if options[:delete]
53
55
  Scaffolding.new([name, path]).delete_spec
54
56
  else
@@ -56,33 +58,67 @@ class RubyRaider < Thor
56
58
  end
57
59
  end
58
60
 
59
- desc "path [PATH]", "Sets the default path for scaffolding"
61
+ desc 'helper [HELPER_NAME]', 'Creates a new helper'
62
+ option :path,
63
+ type: :string, required: false, desc: 'The path where your helper will be created', aliases: '-p'
64
+ option :delete,
65
+ type: :boolean, required: false, desc: 'This will delete the selected helper', aliases: '-d'
66
+
67
+ def helper(name)
68
+ path = options[:path].nil? ? load_config_path('helper') : options[:path]
69
+ if options[:delete]
70
+ Scaffolding.new([name, path]).delete_helper
71
+ else
72
+ Scaffolding.new([name, path]).generate_helper
73
+ end
74
+ end
60
75
 
76
+ desc 'path [PATH]', 'Sets the default path for scaffolding'
77
+ option :feature,
78
+ type: :boolean, required: false, desc: 'The default path for your features', aliases: '-f'
79
+ option :helper,
80
+ type: :boolean, required: false, desc: 'The default path for your helpers', aliases: '-h'
81
+ option :spec,
82
+ type: :boolean, required: false, desc: 'The default path for your specs', aliases: '-s'
61
83
  def path(default_path)
62
- Utilities.new.path = default_path
84
+ type = options.empty? ? 'page' : options.keys.first
85
+ Utilities.new.send("#{type}_path=", default_path)
63
86
  end
64
87
 
65
- desc "url [URL]", "Sets the default url for a project"
88
+ desc 'url [URL]', 'Sets the default url for a project'
66
89
 
67
90
  def url(default_url)
68
91
  Utilities.new.url = default_url
69
92
  end
70
93
 
71
- desc "browser [BROWSER]", "Sets the default browser for a project"
94
+ desc 'browser [BROWSER]', 'Sets the default browser for a project'
72
95
 
73
96
  def browser(default_browser)
74
97
  Utilities.new.browser = default_browser
75
98
  end
76
99
 
77
- desc "raid", "It runs all the tests in a project"
100
+ desc 'raid', 'It runs all the tests in a project'
78
101
 
79
102
  def raid
80
103
  Utilities.new.run
81
104
  end
82
105
 
106
+ desc 'scaffold [SCAFFOLD_NAME]', 'It generates everything needed to start automating'
107
+ def scaffold(name)
108
+ if Pathname.new('spec').exist? && !Pathname.new('features').exist?
109
+ Scaffolding.new([name, load_config_path('spec')]).generate_spec
110
+ Scaffolding.new([name, load_config_path('page')]).generate_class
111
+ elsif Pathname.new('features').exist?
112
+ Scaffolding.new([name, load_config_path('feature')]).generate_feature
113
+ Scaffolding.new([name, load_config_path('page')]).generate_class
114
+ else
115
+ raise 'No features or spec folders where found. We are not sure which type of project you are running'
116
+ end
117
+ end
118
+
83
119
  no_commands do
84
- def load_config_path
85
- YAML.load_file('config/config.yml')['path'] unless YAML.load_file('config/config.yml').nil?
120
+ def load_config_path(type)
121
+ YAML.load_file('config/config.yml')["#{type}_path"] unless YAML.load_file('config/config.yml').nil?
86
122
  end
87
123
  end
88
124
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
 
3
5
  class Scaffolding < Thor::Group
@@ -7,7 +9,7 @@ class Scaffolding < Thor::Group
7
9
  argument :path, optional: true
8
10
 
9
11
  def self.source_root
10
- File.dirname(__FILE__) + '/templates'
12
+ "#{File.dirname(__FILE__)}/templates"
11
13
  end
12
14
 
13
15
  def generate_class
@@ -22,6 +24,10 @@ class Scaffolding < Thor::Group
22
24
  template('spec.tt', default_path("spec/#{name}_spec.rb", '_spec.rb'))
23
25
  end
24
26
 
27
+ def generate_helper
28
+ template('helper.tt', default_path("helpers/#{name}_helper.rb", '_helper.rb'))
29
+ end
30
+
25
31
  def delete_class
26
32
  remove_file(default_path("page_objects/pages/#{name}_page.rb", '_page.rb'))
27
33
  end
@@ -34,6 +40,10 @@ class Scaffolding < Thor::Group
34
40
  remove_file(default_path("spec/#{name}_spec.rb", '_spec.rb'))
35
41
  end
36
42
 
43
+ def delete_helper
44
+ remove_file(default_path("helpers/#{name}_helper.rb", '_helper.rb'))
45
+ end
46
+
37
47
  def default_path(standard_path, file_type)
38
48
  path.nil? ? standard_path : "#{path}/#{name}#{file_type}"
39
49
  end
@@ -0,0 +1,3 @@
1
+ module <%= name.split('_').map {|word| word.capitalize }.join + 'Helper' %>
2
+ # Add your helper code here
3
+ end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  class Utilities
4
-
5
6
  def initialize
6
7
  @path = 'config/config.yml'
7
8
  @config = YAML.load_file(@path)
@@ -12,8 +13,23 @@ class Utilities
12
13
  overwrite_yaml
13
14
  end
14
15
 
15
- def path=(path)
16
- @config['path'] = path
16
+ def page_path=(path)
17
+ @config['page_path'] = path
18
+ overwrite_yaml
19
+ end
20
+
21
+ def spec_path=(path)
22
+ @config['spec_path'] = path
23
+ overwrite_yaml
24
+ end
25
+
26
+ def feature_path=(path)
27
+ @config['feature_path'] = path
28
+ overwrite_yaml
29
+ end
30
+
31
+ def helper_path=(path)
32
+ @config['helper_path'] = path
17
33
  overwrite_yaml
18
34
  end
19
35
 
data/ruby_raider.gemspec CHANGED
@@ -2,13 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'ruby_raider'
5
- s.version = '0.3.0'
5
+ s.version = '0.3.3'
6
6
  s.summary = 'A gem to make setup and start of UI automation projects easier'
7
7
  s.description = 'This gem has everything you need to start working with test automation'
8
8
  s.authors = ['Agustin Pequeno']
9
9
  s.email = 'agustin.pe94@gmail.com'
10
- s.homepage = 'http://github.com/aguspe/ruby_raider'
11
- s.files = %w[bin/* lib/* lib/**/*]
10
+ s.homepage = 'https://github.com/RubyRaider/ruby_raider'
12
11
  s.license = 'MIT'
13
12
  s.required_ruby_version = '>= 3.0.0'
14
13
  s.files = `git ls-files -z`.split("\x0")
@@ -16,9 +15,9 @@ Gem::Specification.new do |s|
16
15
  s.executables << 'raider'
17
16
  s.add_development_dependency 'rake', '~> 13.0.6'
18
17
  s.add_development_dependency 'reek', '~> 6.1.0'
18
+ s.add_development_dependency 'rspec', '~> 3.11.0'
19
19
  s.add_development_dependency 'rubocop', '~> 1.27'
20
20
  s.add_development_dependency 'rubocop-rspec', '~> 2.9.0'
21
- s.add_development_dependency 'rspec', '~> 3.11.0'
22
21
 
23
22
  s.add_runtime_dependency 'highline', '~> 2.0.3'
24
23
  s.add_runtime_dependency 'thor', '~> 1.2.1'
@@ -1,4 +1,5 @@
1
1
  require 'pathname'
2
+ require 'yaml'
2
3
  require_relative 'spec_helper'
3
4
  require_relative '../lib/ruby_raider'
4
5
  require_relative '../lib/generators/common_generator'
@@ -28,6 +29,11 @@ describe RubyRaider do
28
29
  expect(Pathname.new("spec/#{name}_spec.rb")).to be_file
29
30
  end
30
31
 
32
+ it 'creates a helper' do
33
+ raider.new.invoke(:helper, nil, %W[#{name}])
34
+ expect(Pathname.new("helpers/#{name}_helper.rb")).to be_file
35
+ end
36
+
31
37
  it 'deletes a page' do
32
38
  raider.new.invoke(:page, nil, %W[#{name}])
33
39
  raider.new.invoke(:page, nil, %W[#{name} --delete])
@@ -46,8 +52,14 @@ describe RubyRaider do
46
52
  expect(Pathname.new("spec/#{name}_spec.rb")).to_not be_file
47
53
  end
48
54
 
55
+ it 'deletes a helper' do
56
+ raider.new.invoke(:helper, nil, %W[#{name}])
57
+ raider.new.invoke(:helper, nil, %W[#{name} --delete])
58
+ expect(Pathname.new("helpers/#{name}_helper.rb")).to_not be_file
59
+ end
60
+
49
61
  after(:all) do
50
- folders = %w[test config page_objects features]
62
+ folders = %w[test config page_objects features helpers]
51
63
  folders.each do |folder|
52
64
  FileUtils.rm_rf(folder)
53
65
  end
@@ -73,8 +85,129 @@ describe RubyRaider do
73
85
  expect(Pathname.new("#{path}/#{name}_spec.rb")).to be_file
74
86
  end
75
87
 
88
+ it 'creates a helper' do
89
+ raider.new.invoke(:helper, nil, %W[#{name} --path #{path}])
90
+ expect(Pathname.new("#{path}/#{name}_helper.rb")).to be_file
91
+ end
92
+
76
93
  after(:each) do
77
94
  FileUtils.rm_rf(path)
78
95
  end
79
96
  end
97
+
98
+ context 'changes the default path' do
99
+ let(:path) { 'test_folder' }
100
+
101
+ before(:all) do
102
+ CommonGenerator.new(%w[rspec cucumber test]).invoke(:generate_config_file)
103
+ FileUtils.cp_lr('test/config', './')
104
+ end
105
+
106
+ it 'changes the path for pages' do
107
+ raider.new.invoke(:path, nil, %W[#{path}])
108
+ config = YAML.load_file('config/config.yml')
109
+ expect(config['page_path']).to eql path
110
+ end
111
+
112
+ it 'changes the path for features' do
113
+ raider.new.invoke(:path, nil, %W[#{path} -f])
114
+ config = YAML.load_file('config/config.yml')
115
+ expect(config['feature_path']).to eql path
116
+ end
117
+
118
+ it 'changes the path for specs' do
119
+ raider.new.invoke(:path, nil, %W[#{path} -s])
120
+ config = YAML.load_file('config/config.yml')
121
+ expect(config['spec_path']).to eql path
122
+ end
123
+
124
+ it 'creates page' do
125
+ raider.new.invoke(:path, nil, %W[#{path}])
126
+ raider.new.invoke(:page, nil, %W[#{name}])
127
+ expect(Pathname.new("#{path}/#{name}_page.rb")).to be_file
128
+ end
129
+
130
+ it 'creates feature' do
131
+ raider.new.invoke(:path, nil, %W[#{path} -f])
132
+ raider.new.invoke(:feature, nil, %W[#{name}])
133
+ expect(Pathname.new("#{path}/#{name}.feature")).to be_file
134
+ end
135
+
136
+ it 'creates spec' do
137
+ raider.new.invoke(:path, nil, %W[#{path} -s])
138
+ raider.new.invoke(:spec, nil, %W[#{name}])
139
+ expect(Pathname.new("#{path}/#{name}_spec.rb")).to be_file
140
+ end
141
+
142
+ it 'creates spec' do
143
+ raider.new.invoke(:path, nil, %W[#{path} -h])
144
+ raider.new.invoke(:helper, nil, %W[#{name}])
145
+ expect(Pathname.new("#{path}/#{name}_helper.rb")).to be_file
146
+ end
147
+
148
+ after(:all) do
149
+ folders = %w[test_folder test config]
150
+ folders.each do |folder|
151
+ FileUtils.rm_rf(folder)
152
+ end
153
+ end
154
+ end
155
+
156
+ context 'updates the config file' do
157
+ before(:all) do
158
+ CommonGenerator.new(%w[rspec selenium test]).invoke(:generate_config_file)
159
+ FileUtils.cp_lr('test/config', './')
160
+ end
161
+
162
+ it 'updates the url' do
163
+ raider.new.invoke(:url, nil, %W[test.com])
164
+ config = YAML.load_file('config/config.yml')
165
+ expect(config['url']).to eql 'test.com'
166
+ end
167
+
168
+ it 'updates the browser' do
169
+ raider.new.invoke(:browser, nil, %W[:firefox])
170
+ config = YAML.load_file('config/config.yml')
171
+ expect(config['browser']).to eql ':firefox'
172
+ end
173
+
174
+ after(:all) do
175
+ folders = %w[test config]
176
+ folders.each do |folder|
177
+ FileUtils.rm_rf(folder)
178
+ end
179
+ end
180
+ end
181
+
182
+ context 'scaffolding' do
183
+ before(:all) do
184
+ CommonGenerator.new(%w[rspec selenium test]).invoke(:generate_config_file)
185
+ FileUtils.cp_lr('test/config', './')
186
+ end
187
+
188
+ context 'with a spec folder' do
189
+ it 'scaffolds for rspec' do
190
+ raider.new.invoke(:scaffold, nil, %W[#{name}])
191
+ expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file
192
+ expect(Pathname.new("spec/#{name}_spec.rb")).to be_file
193
+ end
194
+ end
195
+
196
+ context 'with a features folder' do
197
+ it 'scaffolds for cucumber' do
198
+ FileUtils.mkdir 'features'
199
+ raider.new.invoke(:scaffold, nil, %W[#{name}])
200
+ expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file
201
+ expect(Pathname.new("features/#{name}.feature")).to be_file
202
+ end
203
+ end
204
+
205
+ after(:all) do
206
+ folders = %w[test config page_objects features]
207
+ folders.each do |folder|
208
+ FileUtils.rm_rf(folder)
209
+ end
210
+ FileUtils.rm('spec/test_spec.rb') if Pathname.new('spec/test_spec.rb').exist?
211
+ end
212
+ end
80
213
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_raider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pequeno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-04 00:00:00.000000000 Z
11
+ date: 2022-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -39,47 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 6.1.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: rubocop
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.27'
47
+ version: 3.11.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.27'
54
+ version: 3.11.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop-rspec
56
+ name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.9.0
61
+ version: '1.27'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.9.0
68
+ version: '1.27'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: rubocop-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.11.0
75
+ version: 2.9.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.11.0
82
+ version: 2.9.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: highline
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +180,7 @@ files:
180
180
  - lib/ruby_raider.rb
181
181
  - lib/scaffolding/scaffolding.rb
182
182
  - lib/scaffolding/templates/feature.tt
183
+ - lib/scaffolding/templates/helper.tt
183
184
  - lib/scaffolding/templates/page_object.tt
184
185
  - lib/scaffolding/templates/spec.tt
185
186
  - lib/utilities/utilities.rb
@@ -191,7 +192,7 @@ files:
191
192
  - spec/rspec_generator_spec.rb
192
193
  - spec/ruby_raider_spec.rb
193
194
  - spec/spec_helper.rb
194
- homepage: http://github.com/aguspe/ruby_raider
195
+ homepage: https://github.com/RubyRaider/ruby_raider
195
196
  licenses:
196
197
  - MIT
197
198
  metadata: {}