Ifd_Automation 1.6.0 → 1.7.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.
- checksums.yaml +4 -4
- data/bin/Ifd_Automation +34 -15
- data/bin/console +14 -0
- data/bin/documentation_generator.rb +119 -0
- data/bin/helper.rb +24 -19
- data/bin/setup +8 -0
- data/lib/Ifd_Automation.rb +2 -1
- data/lib/Ifd_Automation/all_steps.rb +8 -0
- data/lib/Ifd_Automation/database_steps.rb +106 -0
- data/lib/Ifd_Automation/email_steps.rb +67 -82
- data/lib/Ifd_Automation/file_steps.rb +30 -0
- data/lib/Ifd_Automation/{javascript_handling_steps.rb → javascript_steps.rb} +1 -2
- data/lib/Ifd_Automation/required_libs.rb +7 -0
- data/lib/Ifd_Automation/response.rb +105 -0
- data/lib/Ifd_Automation/ssh_steps.rb +47 -0
- data/lib/Ifd_Automation/version.rb +3 -5
- data/lib/Ifd_Automation/web_steps.rb +293 -0
- data/lib/Ifd_Automation/webservice_steps.rb +261 -0
- data/lib/{Ifd_Automation/methods/IFD_Assertion_methods.rb → Ifd_Automation_support/assertion_helpers.rb} +0 -1
- data/lib/Ifd_Automation_support/connection_helpers.rb +14 -0
- data/lib/{Ifd_Automation/methods → Ifd_Automation_support}/core.rb +103 -34
- data/lib/{Ifd_Automation/methods/javascript_handling_methods.rb → Ifd_Automation_support/javascript_helpers.rb} +0 -1
- data/lib/Ifd_Automation_support/mail_helpers.rb +17 -0
- data/lib/Ifd_Automation_support/selenium_sync_issues.rb +62 -0
- data/lib/{Ifd_Automation/methods/web_methods.rb → Ifd_Automation_support/web_steps_helpers.rb} +6 -1
- data/project/Gemfile +1 -19
- data/project/Gemfile.lock +203 -0
- data/project/features/TestData/globalData.yml +3 -11
- data/project/features/TestData/sshtest.txt +2 -0
- data/project/features/TestData/testfile.sql +2 -0
- data/project/features/{TestData/DownloadFolder/test.txt → TestSuite/test} +0 -0
- data/project/features/step_definitions/lib_steps/test.rb +16 -0
- data/project/features/step_definitions/repositories/project_object.yml +6 -6
- data/project/features/support/env.rb +46 -68
- data/project/features/support/project_config.yml +6 -37
- metadata +231 -51
- data/lib/Ifd_Automation/assertion_steps.rb +0 -96
- data/lib/Ifd_Automation/lib_file_steps.rb +0 -54
- data/lib/Ifd_Automation/lib_schema_data_steps.rb +0 -115
- data/lib/Ifd_Automation/lib_web_steps.rb +0 -184
- data/lib/Ifd_Automation/lib_webservice_steps.rb +0 -44
- data/lib/Ifd_Automation/methods/IFD_Connection.rb +0 -28
- data/lib/Ifd_Automation/methods/IFD_email_methods.rb +0 -16
- data/lib/Ifd_Automation/methods/IFD_webservice.rb +0 -17
- data/lib/Ifd_Automation/methods/database_methods.rb +0 -25
- data/lib/Ifd_Automation/methods/db_utils.rb +0 -37
- data/lib/Ifd_Automation/methods/error_handling_methods.rb +0 -87
- data/lib/Ifd_Automation/methods/lib_var.rb +0 -59
- data/lib/Ifd_Automation/methods/misc_methods.rb +0 -33
- data/lib/Ifd_Automation/methods/required_files.rb +0 -33
- data/lib/Ifd_Automation/methods/util.rb +0 -168
- data/lib/Ifd_Automation/methods/web_service_methods.rb +0 -63
- data/project/config/cucumber.yml +0 -3
- data/project/features/TestData/ExpectedDataFile/test.txt +0 -0
- data/project/features/TestData/SqlScript/test.sql +0 -0
- data/project/features/TestData/actual_images/infodation.jpg +0 -0
- data/project/features/TestData/expected_images/infodation.jpg +0 -0
- data/project/features/TestData/image_difference/infodation.jpg +0 -0
- data/project/features/TestData/screenshots/infodation.jpg +0 -0
- data/project/features/TestSuite/Login/login.feature +0 -11
- data/project/features/step_definitions/lib_steps/login_steps.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df8498418e7065e4ddcc12961d6142d0d5f5c80c
|
4
|
+
data.tar.gz: 6f32532b72cf8c054e8a00413d0dd464e0215d03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d8d6b66e566c2510a54338e7a796c9d059c0d03a9a708b41dcdf31a12e513a3b175ad190bbf55d4524c8f7f04f55e0244633224c4fd6d78b5e4677459195e76
|
7
|
+
data.tar.gz: 1590841f166adde9f93e4d4ab5f7117255ead493d9a847fc68822c5f4c2a3d333ad7b482a34fd465981297f44ea7bb8c40e8da1108ed6b7364d5c8514a338020
|
data/bin/Ifd_Automation
CHANGED
@@ -1,25 +1,44 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
2
|
require_relative 'helper.rb'
|
4
3
|
require_relative 'generate.rb'
|
4
|
+
require_relative 'documentation_generator.rb'
|
5
5
|
require 'Ifd_Automation/version'
|
6
6
|
|
7
7
|
@features_dir = File.join(FileUtils.pwd, "project")
|
8
8
|
@source_dir = File.join(File.dirname(__FILE__), '..', 'project')
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
10
|
+
search_string = ARGV.shift
|
11
|
+
case search_string
|
12
|
+
when /version/
|
13
|
+
puts IfdAutomation::VERSION
|
14
|
+
when /gen/
|
15
|
+
ifd_automation_scaffold
|
16
|
+
when /ls/
|
17
|
+
ORDERED_KINDS = %w[Given When Then]
|
18
|
+
heading = 'All Ifd_Automation steps'
|
19
|
+
|
20
|
+
# collect
|
21
|
+
steps_glob = File.expand_path('../../lib/Ifd_Automation/*_steps.rb', __FILE__)
|
22
|
+
step_names = `cat #{steps_glob}`.split($/).select { |line| line =~ /^\s*(Given|When|Then)/ }
|
23
|
+
|
24
|
+
# format
|
25
|
+
# step_names.map! do |step|
|
26
|
+
# DocumentationGenerator::StepDefinition.try_and_parse(step)
|
27
|
+
# p step
|
28
|
+
# end
|
29
|
+
|
30
|
+
# sort
|
31
|
+
# step_names = step_names.sort_by do |step|
|
32
|
+
# step =~ /^(\w+)(.*)/
|
33
|
+
# [ORDERED_KINDS.index($1), $2]
|
34
|
+
# end
|
35
|
+
|
36
|
+
# Output
|
37
|
+
puts "\e[4;34m\n# #{heading}\e[0m" # blue underline
|
38
|
+
puts step_names
|
39
|
+
else
|
40
|
+
print_help
|
24
41
|
end
|
25
42
|
|
43
|
+
|
44
|
+
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "Ifd_Automation"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
@@ -0,0 +1,119 @@
|
|
1
|
+
module DocumentationGenerator
|
2
|
+
|
3
|
+
module CommentExtractor
|
4
|
+
def parse_and_format_comment(comment)
|
5
|
+
comment.gsub!(/.*coding:.*UTF-8.*/, '')
|
6
|
+
comment.strip!
|
7
|
+
comment_lines = comment.split("\n").take_while { |line| line =~ /^\s*#/ }
|
8
|
+
comment_lines && comment_lines.join("\n").gsub(/^\s*# ?/, '')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class StepDefinition
|
13
|
+
|
14
|
+
extend CommentExtractor
|
15
|
+
|
16
|
+
def initialize(definition, comment = nil)
|
17
|
+
@definition = definition
|
18
|
+
@comment = comment
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.try_and_parse(code)
|
22
|
+
definition = code[/^\s*((When|Then|Given|AfterStep).*)do/, 1]
|
23
|
+
return unless definition
|
24
|
+
comment = parse_and_format_comment(code)
|
25
|
+
return if comment =~ /\bnodoc\b/
|
26
|
+
new(definition.strip, comment)
|
27
|
+
end
|
28
|
+
|
29
|
+
def format
|
30
|
+
<<-TEXT
|
31
|
+
* **#{format_definition}**
|
32
|
+
|
33
|
+
#{@comment.gsub(/^/, ' ')}
|
34
|
+
TEXT
|
35
|
+
end
|
36
|
+
|
37
|
+
def format_definition
|
38
|
+
if @definition =~ /AfterStep/
|
39
|
+
@definition[/@\w*/]
|
40
|
+
else
|
41
|
+
capture_groups = %w[([^\"]*) ([^"]*) (.*) (.*?) [^"]+ ([^\"]+) ([^']*) ([^/]*) (.+) (.*[^:])]
|
42
|
+
capture_groups.map! &Regexp.method(:escape)
|
43
|
+
|
44
|
+
@definition.
|
45
|
+
gsub('/^', '').
|
46
|
+
gsub('$/', '').
|
47
|
+
gsub(' ?', ' ').
|
48
|
+
gsub('(?:|I )', 'I ').
|
49
|
+
gsub('?:', '').
|
50
|
+
gsub(Regexp.new(capture_groups.join '|'), '...').
|
51
|
+
gsub(/\\\//, '/')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class StepDefinitionFile
|
57
|
+
|
58
|
+
FILE_COMMENT_END = 'FILE_COMMENT_END'
|
59
|
+
|
60
|
+
include CommentExtractor
|
61
|
+
|
62
|
+
def initialize(filename)
|
63
|
+
@filename = filename
|
64
|
+
@code = File.read(filename)
|
65
|
+
@steps = []
|
66
|
+
extract_comment
|
67
|
+
add_steps
|
68
|
+
end
|
69
|
+
|
70
|
+
def extract_comment
|
71
|
+
if @code.include?(FILE_COMMENT_END)
|
72
|
+
file_comment = @code.split(FILE_COMMENT_END).first
|
73
|
+
@comment = parse_and_format_comment(file_comment)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def add_steps
|
78
|
+
@code.split("\n\n").each do |block|
|
79
|
+
step = StepDefinition.try_and_parse(block)
|
80
|
+
if step
|
81
|
+
@steps << step
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def format
|
87
|
+
<<-TEXT
|
88
|
+
### #{format_filename}
|
89
|
+
|
90
|
+
#{@comment}
|
91
|
+
|
92
|
+
#{format_steps}
|
93
|
+
TEXT
|
94
|
+
end
|
95
|
+
|
96
|
+
def format_filename
|
97
|
+
@filename.split('/').last
|
98
|
+
end
|
99
|
+
|
100
|
+
def format_steps
|
101
|
+
@steps.collect { |step| step.format }.join("\n\n")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
class StepDefinitionsDirectory
|
106
|
+
def initialize(directory)
|
107
|
+
@step_definition_files = []
|
108
|
+
Dir["#{directory}/*.rb"].to_a.sort.each do |filename|
|
109
|
+
next if filename =~ /all_steps/
|
110
|
+
@step_definition_files << StepDefinitionFile.new(filename)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def format
|
115
|
+
@step_definition_files.collect { |step_definition_file| step_definition_file.format }.join("\n\n")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
data/bin/helper.rb
CHANGED
@@ -8,33 +8,36 @@ def msg(title, &block)
|
|
8
8
|
puts "-"*10 + "-------" + "-"*10 + "\n"
|
9
9
|
end
|
10
10
|
|
11
|
-
def print_usage
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
11
|
+
# def print_usage
|
12
|
+
# puts <<EOF
|
13
|
+
#
|
14
|
+
# Usage: Ifd_Automation <command-name> [parameters] [options]
|
15
|
+
#
|
16
|
+
# <command-name> can be one of
|
17
|
+
# help
|
18
|
+
# prints more detailed help information.
|
19
|
+
# gen
|
20
|
+
# generate a features folder structure.
|
21
|
+
# version
|
22
|
+
# prints the gem version
|
23
|
+
# ls
|
24
|
+
# list all steps name of Ifd Automation framework
|
25
|
+
# <options> can be
|
26
|
+
# -v, --verbose Turns on verbose logging
|
27
|
+
# EOF
|
28
|
+
# end
|
28
29
|
|
29
30
|
def print_help
|
30
31
|
puts <<EOF
|
31
|
-
|
32
|
+
Author: Anh Pham
|
33
|
+
|
32
34
|
Usage: Ifd_Automation <command-name> [parameters] [options]
|
33
|
-
|
35
|
+
|
34
36
|
<command-name> can be one of
|
35
37
|
help
|
36
38
|
gen
|
37
39
|
version
|
40
|
+
ls
|
38
41
|
|
39
42
|
Commands:
|
40
43
|
help : prints more detailed help information.
|
@@ -45,6 +48,8 @@ def print_help
|
|
45
48
|
|
46
49
|
version : prints the gem version
|
47
50
|
|
51
|
+
ls: list all steps name of Ifd Automation framework
|
52
|
+
|
48
53
|
<Options>
|
49
54
|
-v, --verbose Turns on verbose logging
|
50
55
|
EOF
|
data/bin/setup
ADDED
data/lib/Ifd_Automation.rb
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
require "Ifd_Automation/version"
|
2
|
+
Dir[File.dirname(__FILE__) + '/Ifd_Automation/*.rb'].each { |file| require file }
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require_relative 'required_libs'
|
2
|
+
|
3
|
+
Given /^I create connection to database with:$/ do |params|
|
4
|
+
unless params.hashes.empty?
|
5
|
+
@connection = Connection.new(params.hashes[0])
|
6
|
+
p "Connect to database successfully!" if @connection
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
# Example
|
11
|
+
# When I run multiple sql script:
|
12
|
+
# """
|
13
|
+
# delete from autofeatures where id=10;
|
14
|
+
# delete from autofeatures where id=11;
|
15
|
+
# """
|
16
|
+
And /^I run multiple sql script:$/ do |raw_data|
|
17
|
+
raw_data.strip!
|
18
|
+
script = raw_data.split(/\n/)
|
19
|
+
script.each do |row|
|
20
|
+
begin
|
21
|
+
sql = "#{row}"
|
22
|
+
@result = @connection.connection().execute(sql)
|
23
|
+
rescue Exception => e
|
24
|
+
raise e.message
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
When /^I run sql script from previous step$/ do
|
30
|
+
unless @file_data.nil?
|
31
|
+
begin
|
32
|
+
@file_data.each_line do |line|
|
33
|
+
if line.nil? || line =~ /^\s*\n*--/
|
34
|
+
puts "\nSQL: " + line;
|
35
|
+
next
|
36
|
+
end
|
37
|
+
line = line.strip();
|
38
|
+
# line = line[0..-2];
|
39
|
+
p line
|
40
|
+
@result = @connection.connection().execute(line)
|
41
|
+
sleep 1
|
42
|
+
end
|
43
|
+
|
44
|
+
rescue Exception => e
|
45
|
+
raise e.message
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Example
|
51
|
+
# When I run sql script "select * from users where email=stored='id'"
|
52
|
+
And /^I run sql script "(.*)"$/ do |sql|
|
53
|
+
script = check_match_url sql
|
54
|
+
begin
|
55
|
+
@result = @connection.connection().execute(script)
|
56
|
+
rescue Exception => e
|
57
|
+
raise e.message
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
Then /^Show me the result of SQL statement$/ do
|
62
|
+
unless @result.nil?
|
63
|
+
@result.each(:as => :hash) do |row|
|
64
|
+
puts row
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Example
|
70
|
+
# Then the result of SQL statement should be:
|
71
|
+
# """
|
72
|
+
# {"name": "quoc anh", "email": "anhpq.info@gmail.com"}
|
73
|
+
# """
|
74
|
+
Then /^the result of SQL statement should be:$/ do |json|
|
75
|
+
expected = JSON.parse(json)
|
76
|
+
@result.each(:as => :hash) do |row|
|
77
|
+
IFD_Assertion.assert_string_equal(row, expected)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# Example
|
82
|
+
# Then the result of SQL statement should have "email" with value "anhpq.info@gmail.com"
|
83
|
+
Then /^the result of SQL statement should have "(.*)" with value "(.*)"$/ do |json_path, value|
|
84
|
+
@result.each(:as => :hash) do |row|
|
85
|
+
results = JsonPath.new(json_path).on(row).to_a.map(&:to_s)
|
86
|
+
IFD_Assertion.assert_string_equal(results[0], value)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
When /^I store "(.*)" as "(.*)"$/ do |json_path, place_holder|
|
91
|
+
if @result.nil?
|
92
|
+
raise 'No record found, a request need to be made first before you can store data'
|
93
|
+
end
|
94
|
+
@stored = {} if @stored.nil?
|
95
|
+
@result.each(:as => :hash) do |row|
|
96
|
+
@stored[%/#{place_holder}/] = row[%/#{json_path}/]
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# def resolve_script script
|
102
|
+
# unless @stored.nil?
|
103
|
+
# @stored.each { |key, value| script = script.gsub /\{#{key}\}/, %/'#{value}'/ }
|
104
|
+
# end
|
105
|
+
# script
|
106
|
+
# end
|
@@ -1,91 +1,76 @@
|
|
1
|
-
require '
|
2
|
-
require_relative '
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
IFD_Email.send_email(to_address, subject, body_email)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
Then /^I send the email to "(.*)" with subject is "(.*)" and email body "(.*)"$/ do |to_address, subject, email_body|
|
16
|
-
email_body = email_body.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace, :replace => "'").encode('UTF-8')
|
17
|
-
IFD_Email.send_email(to_address, subject, email_body)
|
18
|
-
end
|
1
|
+
require 'action_mailer'
|
2
|
+
require_relative 'required_libs'
|
3
|
+
# Example:
|
4
|
+
#
|
5
|
+
# Then I send an email with:
|
6
|
+
# """
|
7
|
+
# From: from@example.com
|
8
|
+
# Reply-To: reply-to@example.com
|
9
|
+
# To: anh.pham@infodation.vn
|
10
|
+
# Subject: SUBJECT
|
11
|
+
# Attachments: globalData.yml
|
19
12
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
13
|
+
# BODY
|
14
|
+
# """
|
15
|
+
#
|
16
|
+
Then /^I send an e?mail with:$/ do |raw_data|
|
17
|
+
patiently do
|
18
|
+
raw_data.strip!
|
19
|
+
header, body = raw_data.split(/\n\n/, 2) # 2: maximum number of fields
|
20
|
+
conditions = {}
|
21
|
+
header.split("\n").each do |row|
|
22
|
+
if row.lstrip.chop.match(/^[a-z\-]+:/i)
|
23
|
+
key, value = row.split(":", 2)
|
24
|
+
conditions[key.gsub(' ','').underscore.to_sym] = value.gsub(' ','')
|
31
25
|
|
32
|
-
|
33
|
-
sleep 5
|
34
|
-
emails = Mail.find(:what => :last, :count => 1)
|
35
|
-
if emails.instance_of? Mail::Message
|
36
|
-
IFD_Assertion.assert_string_equal(email_from, emails.from[0].to_s)
|
37
|
-
email_content.raw[0].each do |line|
|
38
|
-
assert(true) if emails.body.should include(line.strip)
|
26
|
+
end
|
39
27
|
end
|
40
|
-
|
41
|
-
|
28
|
+
conditions[:body] = body if body
|
29
|
+
filepath = ($test_data_dir + conditions[:attachments] if conditions[:attachments])
|
30
|
+
IFD_Email.send_email(conditions[:to], conditions[:subject], conditions[:body],filepath)
|
42
31
|
end
|
43
32
|
end
|
44
33
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
34
|
+
# Example:
|
35
|
+
#
|
36
|
+
# Then I should receive an email with:
|
37
|
+
# """
|
38
|
+
# From: from@example.com
|
39
|
+
# Reply-To: reply-to@example.com
|
40
|
+
# To: anh.pham@infodation.vn
|
41
|
+
# Subject: SUBJECT
|
42
|
+
# Attachments: globalData.yml
|
43
|
+
|
44
|
+
# BODY
|
45
|
+
# """
|
46
|
+
#
|
47
|
+
|
48
|
+
Then /^I should receive an e?mail with:$/ do |raw_data|
|
49
|
+
patiently do
|
50
|
+
raw_data.strip!
|
51
|
+
header, body = raw_data.split(/\n\n/, 2) # 2: maximum number of fields
|
52
|
+
conditions = {}
|
53
|
+
header.split("\n").each do |row|
|
54
|
+
if row.lstrip.chop.match(/^[a-z\-]+:/i)
|
55
|
+
key, value = row.split(":", 2)
|
56
|
+
conditions[key.gsub(' ','').underscore.to_sym] = value.gsub(' ','')
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
conditions[:body] = body.squeeze(' ').strip if body
|
61
|
+
sleep 5
|
62
|
+
emails = Mail.find(:what => :last, :count => 1)
|
63
|
+
|
64
|
+
if emails.instance_of? Mail::Message
|
65
|
+
IFD_Assertion.assert_string_equal(conditions[:from], emails.from[0].to_s)
|
66
|
+
IFD_Assertion.assert_string_equal(conditions[:subject], emails.subject)
|
67
|
+
IFD_Assertion.assert_string_contain(conditions[:body], emails.body)
|
68
|
+
emails.attachments.each do |attachment|
|
69
|
+
IFD_Assertion.assert_string_equal(conditions[:attachments], attachment.filename)
|
70
|
+
end if conditions[:attachments]
|
71
|
+
else
|
72
|
+
raise "WARNING: *** No new Email is found"
|
53
73
|
end
|
54
|
-
else
|
55
|
-
raise "WARNING: *** No new Email is found"
|
56
74
|
end
|
57
75
|
end
|
58
|
-
|
59
|
-
# Then /^I send the email to "(.*)" with subject is "(.*)" and email body template in "(.*)" file and following conditions:$/ do |to_address, subject, file, data_table|
|
60
|
-
# data_file = File.read($test_data_dir + file)
|
61
|
-
# filepath = ($test_data_dir + file)
|
62
|
-
# body_email = data_file.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace, :replace => "'").encode('UTF-8')
|
63
|
-
# if File.exist?(filepath)
|
64
|
-
# raw_data = JSON.parse(JSON.generate(data_table))
|
65
|
-
# header = raw_data[0]
|
66
|
-
# value = raw_data[1]
|
67
|
-
# $test = String.new
|
68
|
-
# $i = 0
|
69
|
-
# body_email.each_line do |lines|
|
70
|
-
# header.zip(value).each do |headers, values|
|
71
|
-
# group1, group2, group3= lines.match(/(^.*)(:)(.*)/i).try(:captures)
|
72
|
-
# if headers == group1 && group1.size > 0
|
73
|
-
# $new_value = lines.gsub(group3, " #{values}")
|
74
|
-
# $test += "#{$new_value}"
|
75
|
-
# $i = 1
|
76
|
-
# break
|
77
|
-
# elsif headers == "taaknummer"
|
78
|
-
# $new_value = lines.gsub("[TASKID]", " #{values}")
|
79
|
-
# $test += "#{$new_value}"
|
80
|
-
# $i = 1
|
81
|
-
# else
|
82
|
-
# $i = 0
|
83
|
-
# end
|
84
|
-
# end
|
85
|
-
# if $i == 0
|
86
|
-
# $test += "#{lines}"
|
87
|
-
# end
|
88
|
-
# end
|
89
|
-
# IFD_Email.send_email(to_address, subject, $test)
|
90
|
-
# end
|
91
|
-
# end
|
76
|
+
|