SaudeiD 0.2.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 (62) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +3 -0
  4. data/CODE_OF_CONDUCT.md +84 -0
  5. data/Gemfile +10 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +37 -0
  8. data/Rakefile +8 -0
  9. data/SaudeiD.gemspec +30 -0
  10. data/bin/SaudeiD +146 -0
  11. data/bin/console +15 -0
  12. data/bin/saudeid +146 -0
  13. data/bin/setup +8 -0
  14. data/lib/SaudeiD/SaudeiD_helper.rb +41 -0
  15. data/lib/SaudeiD/version.rb +5 -0
  16. data/lib/SaudeiD.rb +7 -0
  17. data/lib/SkeletonApi/.gitignore +1 -0
  18. data/lib/SkeletonApi/.rubocop.yml +62 -0
  19. data/lib/SkeletonApi/.solargraph.yml +16 -0
  20. data/lib/SkeletonApi/Gemfile +18 -0
  21. data/lib/SkeletonApi/README.md +36 -0
  22. data/lib/SkeletonApi/cucumber.yml +11 -0
  23. data/lib/SkeletonApi/features/specs/.gitkeep +0 -0
  24. data/lib/SkeletonApi/features/steps_definitions/.gitkeep +0 -0
  25. data/lib/SkeletonApi/features/support/config/environments/dev.yml +5 -0
  26. data/lib/SkeletonApi/features/support/config/environments/qa.yml +5 -0
  27. data/lib/SkeletonApi/features/support/data/factories/.gitkeep +0 -0
  28. data/lib/SkeletonApi/features/support/data/models/.gitkeep +0 -0
  29. data/lib/SkeletonApi/features/support/data/schemas/.gitkeep +0 -0
  30. data/lib/SkeletonApi/features/support/env.rb +28 -0
  31. data/lib/SkeletonApi/features/support/helper.rb +6 -0
  32. data/lib/SkeletonApi/features/support/hooks.rb +53 -0
  33. data/lib/SkeletonApi/features/support/services/.gitkeep +0 -0
  34. data/lib/SkeletonApi/report/.gitkeep +0 -0
  35. data/lib/SkeletonApi/report/junit/.gitkeep +0 -0
  36. data/lib/SkeletonWeb/.gitignore +8 -0
  37. data/lib/SkeletonWeb/.rubocop.yml +53 -0
  38. data/lib/SkeletonWeb/.solargraph.yml +16 -0
  39. data/lib/SkeletonWeb/Gemfile +13 -0
  40. data/lib/SkeletonWeb/README.md +49 -0
  41. data/lib/SkeletonWeb/cucumber.yml +17 -0
  42. data/lib/SkeletonWeb/features/specs/.gitkeep +0 -0
  43. data/lib/SkeletonWeb/features/steps_definitions/.gitkeep +0 -0
  44. data/lib/SkeletonWeb/features/support/config/elements.yml +2 -0
  45. data/lib/SkeletonWeb/features/support/config/environments/dev.yml +1 -0
  46. data/lib/SkeletonWeb/features/support/config/environments/qa.yml +1 -0
  47. data/lib/SkeletonWeb/features/support/env.rb +49 -0
  48. data/lib/SkeletonWeb/features/support/helper.rb +37 -0
  49. data/lib/SkeletonWeb/features/support/hooks.rb +56 -0
  50. data/lib/SkeletonWeb/features/support/pages/base_page.rb +3 -0
  51. data/lib/SkeletonWeb/report/.gitkeep +0 -0
  52. data/lib/SkeletonWeb/report/junit/.gitkeep +0 -0
  53. data/lib/SkeletonWeb/report/screenshots/test_failed/.gitkeep +0 -0
  54. data/lib/SkeletonWeb/report/screenshots/test_passed/.gitkeep +0 -0
  55. data/lib/locales/en.yml +17 -0
  56. data/lib/locales/pt.yml +16 -0
  57. data/lib/templates/feature.tt +8 -0
  58. data/lib/templates/page.tt +8 -0
  59. data/lib/templates/services.tt +10 -0
  60. data/lib/templates/steps.tt +5 -0
  61. data/sig/SaudeiD.rbs +4 -0
  62. metadata +191 -0
@@ -0,0 +1,16 @@
1
+ ---
2
+ include:
3
+ - "**/*.rb"
4
+ exclude:
5
+ - spec/**/*
6
+ - step_definitions/**/*
7
+ - vendor/**/*
8
+ - ".bundle/**/*"
9
+ require: []
10
+ domains: []
11
+ reporters:
12
+ - rubocop
13
+ - require_not_found
14
+ require_paths: []
15
+ plugins: []
16
+ max_files: 5000
@@ -0,0 +1,18 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'awesome_print', '1.8'
4
+ gem 'cucumber', '5.2'
5
+ gem 'dotenv', '2.7'
6
+ gem 'factory_bot'
7
+ gem 'faker'
8
+ gem 'google-cloud-pubsub', '~> 2.9', '>= 2.9.2'
9
+ gem 'httparty'
10
+ gem 'json_matchers'
11
+ gem 'pg', '1.2.3'
12
+ gem 'pry', '0.12.2'
13
+ gem 'report_builder', '1.8'
14
+ gem 'rspec', '3.10'
15
+ gem 'rspec_junit_formatter', '~> 0.2.3'
16
+ gem 'selenium-webdriver', '3.142.7'
17
+ gem 'solargraph'
18
+ gem 'touch_action'
@@ -0,0 +1,36 @@
1
+ ## Getting Started ##
2
+
3
+ ### Installing gems ###
4
+ To install gems type:
5
+ ```shell
6
+ bundle install
7
+ ```
8
+
9
+ ### Run tests in DEV###
10
+ Type this in the tests folder:
11
+ ```shell
12
+ bundle exec cucumber
13
+ ```
14
+ ### Run tests in HMG ###
15
+ Type this in the tests folder:
16
+ ```shell
17
+ bundle exec cucumber -p json -p hmg
18
+ ```
19
+
20
+ ### HTML Report###
21
+ Type this in the tests folder:
22
+ ```shell
23
+ bundle exec cucumber -p html -p hmg
24
+ ```
25
+
26
+ ### Json Report###
27
+ Type this in the tests folder:
28
+ ```shell
29
+ bundle exec cucumber -p json -p hmg
30
+ ```
31
+
32
+ ### Run with tags###
33
+ Type this in the tests folder:
34
+ ```shell
35
+ bundle exec cucumber --tags @run
36
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ default: -p pretty -p json -p html -p qa -p env_qa -p xml
3
+ ci: -p pretty -p json -p html -p qa -p env_qa -p xml
4
+
5
+ pretty: -f pretty
6
+ progress: -f progress
7
+ json: -f json --out=report/report.json
8
+ html: -f html --out=report/report.html
9
+ xml: -f junit --out=report/junit
10
+ qa: ENV_TYPE=qa
11
+ env_qa: ENV_PREFIX=qa
File without changes
@@ -0,0 +1,5 @@
1
+ BASE_URI: 'https://www.google.com/'
2
+
3
+ API_HEADERS: { 'Content-Type': 'application/json' }
4
+
5
+ TOPIC_MS_PRODUCTS_CREATE: 'MY-TOPIC'
@@ -0,0 +1,5 @@
1
+ BASE_URI: 'https://www.google.com/'
2
+
3
+ API_HEADERS: { 'Content-Type': 'application/json' }
4
+
5
+ TOPIC_MS_PRODUCTS_CREATE: 'MY-TOPIC'
@@ -0,0 +1,28 @@
1
+ require 'awesome_print'
2
+ require 'cucumber'
3
+ require 'dotenv/load'
4
+ require 'factory_bot'
5
+ require 'faker'
6
+ require 'google/cloud/pubsub'
7
+ require 'httparty'
8
+ require 'httparty/request'
9
+ require 'httparty/response/headers'
10
+ require 'pg'
11
+ require 'pry'
12
+ require 'report_builder'
13
+ require 'rspec'
14
+ require 'json_matchers/rspec'
15
+
16
+ require_relative 'helper'
17
+ require_relative 'data/models/model'
18
+
19
+ World(Helper)
20
+
21
+ World(FactoryBot::Syntax::Methods)
22
+
23
+ Dotenv.load('../.env')
24
+
25
+ CONFIG = YAML.load_file(File.join(Dir.pwd, "features/support/config/environments/#{ENV['ENV_TYPE']}.yml"))
26
+ ENV['GOOGLE_APPLICATION_CREDENTIALS'] = File.join(Dir.pwd, '../path_file.json')
27
+
28
+ JsonMatchers.schema_root = File.join(Dir.pwd, 'features/support/data/schemas')
@@ -0,0 +1,6 @@
1
+ module Helper
2
+ def create_message_pubsub(topic, body)
3
+ topic = @pubsub.topic topic
4
+ topic.publish body.to_json
5
+ end
6
+ end
@@ -0,0 +1,53 @@
1
+ Before do
2
+ @service = ->(klass) { klass.new }
3
+
4
+ @pubsub = Google::Cloud::PubSub.new
5
+ end
6
+
7
+ After do |scenario|
8
+ exception_message(scenario)
9
+ end
10
+
11
+ def exception_message(scenario)
12
+ scene = scenario.failed?
13
+ return unless scene == true
14
+
15
+ print_reason(scenario)
16
+ end
17
+
18
+ def print_reason(scenario)
19
+ puts "\n--------------------------------------------------------------------------------------------"
20
+ puts 'Reason:'
21
+ puts "\n - Request body: #{@payload.to_json}"
22
+ puts "\n - Response code: #{@response.response.code}"
23
+ puts "\n - Response body: #{@response.parsed_response.to_json}"
24
+ puts "\nšŸ”„šŸ”„šŸ”„šŸžšŸžšŸžšŸ”„šŸ”„šŸ”„ #{scenario.exception.message}"
25
+ puts "--------------------------------------------------------------------------------------------\n"
26
+ end
27
+
28
+ AfterConfiguration do |config|
29
+ config.on_event(:test_case_finished) do |event|
30
+ puts "\n--------------------------------------------------------------------------------------------------"
31
+ puts 'Results:'
32
+ puts " - Scenario......: #{event.test_case.name}"
33
+ puts " - Result..: [ #{event.result.passed? ? 'āœ… ]' : 'āŒ ]'}"
34
+ puts "--------------------------------------------------------------------------------------------------\n"
35
+ end
36
+ end
37
+
38
+ at_exit do
39
+ @infos = {
40
+ 'Data do Teste' => Time.now.strftime('%d/%B/%Y'),
41
+ 'Hora do Teste' => Time.now.strftime('%HH%MM%SS')
42
+ }
43
+ ReportBuilder.configure do |config|
44
+ config.input_path = 'report/report.json'
45
+ config.report_path = 'report/report'
46
+ config.report_types = [:html]
47
+ config.include_images = true
48
+ config.report_title = '[SAUDE ID] MY - TITLE'
49
+ config.additional_info = @infos
50
+ config.collor = 'indigo'
51
+ end
52
+ ReportBuilder.build_report
53
+ end
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ .DS_Store
2
+ # Regression Test
3
+ Gemfile.lock
4
+ report/*.html
5
+ report/*.json
6
+ report/junit/*.xml
7
+ report/screenshots/test_failed/*.png
8
+ report/screenshots/test_passed/*.png
@@ -0,0 +1,53 @@
1
+ ---
2
+ AllCops:
3
+ NewCops: disable
4
+ SuggestExtensions: false
5
+
6
+ Style/Documentation:
7
+ Enabled: false
8
+
9
+ Style/FrozenStringLiteralComment:
10
+ Enabled: false
11
+
12
+ Naming/MethodName:
13
+ Enabled: false
14
+
15
+ Naming/AsciiIdentifiers:
16
+ Enabled: false
17
+
18
+ Layout/LineLength:
19
+ Max: 190
20
+
21
+ Metrics/BlockLength:
22
+ Max: 50
23
+
24
+ Metrics/MethodLength:
25
+ Exclude:
26
+ Max: 20
27
+
28
+ Metrics/AbcSize:
29
+ Enabled: false
30
+
31
+ Metrics/ModuleLength:
32
+ Enabled: false
33
+
34
+ Metrics/CyclomaticComplexity:
35
+ Max: 10
36
+
37
+ Metrics/ClassLength:
38
+ Enabled: false
39
+
40
+ Style/RedundantSort:
41
+ Enabled: false
42
+
43
+ Style/SingleArgumentDig:
44
+ Enabled: false
45
+
46
+ Style/HashSyntax:
47
+ Enabled: false
48
+
49
+ Style/RedundantRegexpEscape:
50
+ Enabled: false
51
+
52
+ Lint/MissingSuper:
53
+ Enabled: false
@@ -0,0 +1,16 @@
1
+ ---
2
+ include:
3
+ - "**/*.rb"
4
+ exclude:
5
+ - spec/**/*
6
+ - step_definitions/**/*
7
+ - vendor/**/*
8
+ - ".bundle/**/*"
9
+ require: []
10
+ domains: []
11
+ reporters:
12
+ - rubocop
13
+ - require_not_found
14
+ require_paths: []
15
+ plugins: []
16
+ max_files: 5000
@@ -0,0 +1,13 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'awesome_print', '1.8'
4
+ gem 'capybara', '3.36.0'
5
+ gem 'cucumber', '5.2'
6
+ gem 'dotenv', '2.7'
7
+ gem 'pry', '0.12.2'
8
+ gem 'report_builder', '1.8'
9
+ gem 'rspec', '3.10'
10
+ gem 'rspec_junit_formatter', '~> 0.2.3'
11
+ gem 'selenium-webdriver', '3.142.7'
12
+ gem 'solargraph'
13
+ gem 'touch_action'
@@ -0,0 +1,49 @@
1
+ ## Getting Started ##
2
+
3
+
4
+
5
+ ### Installing gems ###
6
+ To install gems type:
7
+ ```shell
8
+ bundle install
9
+ ```
10
+
11
+ ### Drivers: ###
12
+ Install and include in PATH
13
+ - [chromedriver](https://sites.google.com/a/chromium.org/chromedriver/)
14
+ - [phantomjs](http://phantomjs.org/)
15
+ - [internetExplorerDriver](http://www.seleniumhq.org/download/)
16
+ - [Firefox Geckodriver](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver)
17
+
18
+ Install [Webdriver Safari extension](http://selenium-release.storage.googleapis.com/2.48/SafariDriver.safariextz).
19
+
20
+
21
+ ### Run tests in DEV with Chrome###
22
+ Type this in the tests folder:
23
+ ```shell
24
+ bundle exec cucumber -p ci -p html -p headless -p dev
25
+ ```
26
+
27
+ ### Run tests in DEV with headless###
28
+ Type this in the tests folder:
29
+ ```shell
30
+ bundle exec cucumber -p ci -p html -p headless -p dev
31
+ ```
32
+
33
+ ### Run tests in HMG with Chrome###
34
+ Type this in the tests folder:
35
+ ```shell
36
+ bundle exec cucumber -p pretty -p html -p no_headless -p hmg
37
+ ```
38
+
39
+ ### Run tests in HMG with headless###
40
+ Type this in the tests folder:
41
+ ```shell
42
+ bundle exec cucumber -p ci -p html -p headless -p hmg
43
+ ```
44
+
45
+ ### Run with tags###
46
+ Type this in the tests folder:
47
+ ```shell
48
+ bundle exec cucumber --tags @run
49
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ default: -p pretty -p qa -p chrome -p html -p json -p xml --publish-quiet
3
+ ci: -p pretty -p qa -p chrome_headless -p html -p json -p xml --publish-quiet
4
+
5
+ source: --no-source
6
+ progress: --format progress
7
+ pretty: --format pretty
8
+ dev: ENV_TYPE=dev
9
+ qa: ENV_TYPE=qa
10
+ html: --format html --out=report/report.html
11
+ json: --format json --out=report/report.json
12
+ xml: --format junit --out=report/junit
13
+ screen: screenshot=true
14
+ chrome: BROWSER=chrome
15
+ chrome_headless: BROWSER=chrome_headless
16
+ firefox: BROWSER=firefox
17
+ firefox_headless: BROWSER=firefox_headless
File without changes
@@ -0,0 +1,2 @@
1
+ ---
2
+ # Elementos Pages
@@ -0,0 +1 @@
1
+ URL_BASE: https://www.google.com/
@@ -0,0 +1 @@
1
+ URL_BASE: https://www.google.com/
@@ -0,0 +1,49 @@
1
+ require 'awesome_print'
2
+ require 'capybara'
3
+ require 'capybara/cucumber'
4
+ require 'capybara/rspec'
5
+ require 'date'
6
+ require 'dotenv/load'
7
+ require 'pry'
8
+ require 'report_builder'
9
+ require 'rspec'
10
+ require 'rspec/expectations'
11
+ require 'selenium-webdriver'
12
+ require 'touch_action'
13
+
14
+ require_relative 'helper'
15
+
16
+ include Helper
17
+
18
+ CONFIG = YAML.load_file(File.join(Dir.pwd, "features/support/config/environments/#{ENV['ENV_TYPE']}.yml"))
19
+ EL = YAML.load_file('features/support/config/elements.yml')
20
+
21
+ @browser = ENV['BROWSER']
22
+
23
+ case @browser
24
+ when 'firefox'
25
+ @driver = :selenium
26
+ when 'firefox_headless'
27
+ @driver = :selenium_headless
28
+ when 'chrome'
29
+ @driver = :selenium_chrome
30
+ when 'chrome_headless'
31
+ Capybara.register_driver :selenium_chrome_headless do |app|
32
+ chrome_options = Selenium::WebDriver::Chrome::Options.new.tap do |options|
33
+ options.add_argument '--headless'
34
+ options.add_argument '--disable-gpu'
35
+ options.add_argument '--no-sandbox'
36
+ options.add_argument '--disable-site-isolation-trials'
37
+ end
38
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: chrome_options)
39
+ end
40
+ @driver = :selenium_chrome_headless
41
+ else
42
+ p 'Invalid browser'
43
+ end
44
+
45
+ Capybara.configure do |config|
46
+ config.default_driver = @driver
47
+ config.app_host = CONFIG['URL_BASE']
48
+ config.default_max_wait_time = 15
49
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+ # !/usr/bin/env ruby
3
+ require 'fileutils'
4
+
5
+ module Helper
6
+ include Capybara::DSL
7
+
8
+ def take_screenshot(scenario)
9
+ scn_name = scenario.name.gsub(%r{([_@#!%()\-=;><,{}\~\[\]\.\/\?\"\*\^\$\+\-]+)}, '_')
10
+ screenshot = scenario.failed? ? "#{Dir.pwd}/report/screenshots/test_failed/#{scn_name}.png" : "#{Dir.pwd}/report/screenshots/test_passed/#{scn_name}.png"
11
+ screenshot = screenshot.tr!(' ', '_') if screenshot.include?(' ')
12
+ page.save_screenshot(screenshot)
13
+ attach(screenshot, 'image/png')
14
+ end
15
+
16
+ def wait_until_text_exist(element, text)
17
+ 300.times do
18
+ find(element).assert_text(text) == true
19
+ break
20
+ rescue StandardError
21
+ sleep 0.1
22
+ end
23
+ end
24
+
25
+ def wait_until_element_exist(element)
26
+ 300.times do
27
+ find(element, wait: 0.5)
28
+ break
29
+ rescue StandardError
30
+ sleep 0.1
31
+ end
32
+ end
33
+
34
+ def element_wait(time)
35
+ sleep(time)
36
+ end
37
+ end
@@ -0,0 +1,56 @@
1
+ Before do
2
+ window = Capybara.current_session.current_window
3
+ window.resize_to(1366, 768)
4
+ window.maximize
5
+
6
+ @page = ->(klass) { klass.new }
7
+ end
8
+
9
+ After do |scenario|
10
+ take_screenshot(scenario)
11
+
12
+ exception_message(scenario)
13
+ end
14
+
15
+ def exception_message(scenario)
16
+ scene = scenario.failed?
17
+ return unless scene == true
18
+
19
+ print_reason(scenario)
20
+ end
21
+
22
+ def print_reason(scenario)
23
+ log("\n-------------")
24
+ log("\nINCONSISTENCY")
25
+ log("\n-------------")
26
+ log("\nšŸ”„šŸ”„šŸ”„ #{scenario.exception.message.split('(')[0]}")
27
+ end
28
+
29
+ AfterConfiguration do |config|
30
+ config.on_event(:test_case_finished) do |event|
31
+ puts "\n--------------------------------------------------------------------------------------------------"
32
+ puts 'Results:'
33
+ puts " - Scenario: #{event.test_case.name}"
34
+ puts " - Result..: [ #{event.result.passed? ? 'āœ… ]' : 'āŒ ]'}"
35
+ puts "--------------------------------------------------------------------------------------------------\n"
36
+ end
37
+ end
38
+
39
+ at_exit do
40
+ @infos = {
41
+ 'Browser' => Capybara.default_driver.to_s.capitalize,
42
+ 'Environment' => ENV['ENV_TYPE'],
43
+ 'Data do Teste' => Time.now.strftime('%d/%B/%Y'),
44
+ 'Hora do Teste' => Time.now.strftime('%H:%M:%S')
45
+ }
46
+
47
+ ReportBuilder.configure do |config|
48
+ config.input_path = 'report/report.json'
49
+ config.report_path = 'report/report'
50
+ config.report_types = [:html]
51
+ config.report_title = '[SaudeId] - My Title'
52
+ config.additional_info = @infos
53
+ config.color = 'indigo'
54
+ end
55
+ ReportBuilder.build_report
56
+ end
@@ -0,0 +1,3 @@
1
+ class BasePage
2
+ include Capybara::DSL
3
+ end
File without changes
File without changes
@@ -0,0 +1,17 @@
1
+ en:
2
+ first_scenario: "First Scenario"
3
+ background: "Background"
4
+ feature: "Feature"
5
+ scenario: "Scenario"
6
+ given: "Given"
7
+ when: "When"
8
+ then: "Then"
9
+ describe: description
10
+ context: description
11
+ it: does something
12
+ comments:
13
+ insert_steps: "Insert steps"
14
+ elements: "Declare all the elements of this page"
15
+ actions: "Declare all actions of this page"
16
+ services: "Where is the configuration of a particular request"
17
+
@@ -0,0 +1,16 @@
1
+ pt:
2
+ first_scenario: "Primeiro CenƔrio"
3
+ background: "Contexto"
4
+ feature: "Funcionalidade"
5
+ scenario: "CenƔrio"
6
+ given: "Dado"
7
+ when: "Quando"
8
+ then: "Entao"
9
+ describe: descrição
10
+ context: descrição
11
+ it: faz alguma coisa
12
+ comments:
13
+ insert_steps: "Insira os passos"
14
+ elements: "Declare todos os elementos da pƔgina"
15
+ actions: "Declare todas as aƧƵes da pƔgina"
16
+ services: "Onde fica as configuraĆ§Åes de uma determinada requisição"
@@ -0,0 +1,8 @@
1
+ <%= "#language: #{options[:lang]}" %>
2
+ <%= I18n.translate( :feature ) %>: <%= config[:name] %>
3
+
4
+ <%= I18n.translate( :background ) %>:
5
+ # <%= I18n.translate( "comments.insert_steps" ) %>
6
+
7
+ <%= I18n.translate( :scenario ) %>: <%= I18n.translate( :first_scenario ) %>
8
+ # <%= I18n.translate( "comments.insert_steps" ) %>
@@ -0,0 +1,8 @@
1
+ class <%= config[:name] %>Page < BasePage
2
+ # attr_reader :element
3
+
4
+ def initialize
5
+ # @element = EL['element']
6
+ end
7
+
8
+ end
@@ -0,0 +1,10 @@
1
+ class <%= config[:name] %>Service
2
+ include HTTParty
3
+
4
+ base_uri CONFIG['BASE_URI']
5
+ headers CONFIG['API_HEADERS']
6
+ default_timeout 120
7
+
8
+ def initialize() end
9
+
10
+ end
@@ -0,0 +1,5 @@
1
+ ######### <%= I18n.translate( :given ).upcase %> #########
2
+
3
+ ######### <%= I18n.translate( :when ).upcase %> #########
4
+
5
+ ######### <%= I18n.translate( :then ).upcase %> #########
data/sig/SaudeiD.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module SaudeiD
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end