cukerail 0.6.1 → 0.6.2

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
  SHA1:
3
- metadata.gz: 89cc129ef2405374219790ba71227bdb5e178904
4
- data.tar.gz: 91fe06120de5a825258e14fed46423e70ce2fda9
3
+ metadata.gz: ab0e9bf77e8c770d71213f34b24012e7a16c442b
4
+ data.tar.gz: 9ff864386200a05132d7b256224d283fcb83a844
5
5
  SHA512:
6
- metadata.gz: 9ef15180c2f8c5142987e98e705037d9db0379d8e10d07df25e12b677917ad15358f59c893e8a98d206467e9d7272ad3ad0782d6c11b51ebff4a8735ff4ff834
7
- data.tar.gz: 6ca51caba884892fcc3abc6932d1f5da6258ce9efe0096c64de1ec11806883ab81bd306fcdb2c0fb5264f6a1e95d19f0275042e9dcd7115a662a59a3260c1870
6
+ metadata.gz: dd003b53a3dd00f96a9fdb39495c9c6d97ea86ad24feace21ebc006c3fd6a15d49c9891ae16c1bf3e0cf5d2a3d7cb8ce6f84ed35f7ad19b5a4ba129ac7a2054c
7
+ data.tar.gz: 31089ad0838cc34fa3b5fb770af29b5b6f1a2490ae0068b9a648839357ccf96451acb5dfd3c6efcbd129ac1906124c287c703496343260248319b786a44796cd
@@ -1,3 +1,3 @@
1
1
  module Cukerail
2
- VERSION = "0.6.1"
2
+ VERSION = "0.6.2"
3
3
  end
data/lib/cukerail.rb CHANGED
@@ -102,36 +102,11 @@ module Cukerail
102
102
  end
103
103
 
104
104
  def send_steps(test_case,id)
105
- steps_as_string = test_case.test_steps.map{|step| step.source.last}
106
- .select{|step| step.is_a?(Cucumber::Core::Ast::Step)}
107
- .reject{|step| step.is_a?(Cucumber::Hooks::BeforeHook)}.map do | g_step |
108
- str = g_step.send(:keyword)+g_step.send(:name)
109
- str += g_step.multiline_arg.raw.map{|l|"\n| #{l.join(' | ')} |"}.join if g_step.multiline_arg.data_table?
110
- str
111
- end.join("\n")
112
- type_ids = [1]
113
- type_ids << 7 if test_case.tags.any?{|tag| tag.name =~/manual/}
114
- type_ids << 13 if test_case.tags.any?{|tag| tag.name =~/on_hold/}
115
- #get the highest precedence type found in the tags. E.g. if it's @on_hold and @manual it selects 13 for on hold
116
- type_id = ([13,7,1] & type_ids).first
117
-
118
- data = {'title'=>extract_title(test_case),
119
- 'type_id'=>type_id,
120
- 'custom_steps'=>steps_as_string,
121
- 'refs'=>refs(test_case)
122
- }
123
- testrail_api_client.send_post("update_case/#{id}",data)
105
+ testrail_api_client.send_post("update_case/#{id}",test_case_data(test_case))
124
106
  end
125
107
 
126
108
  def create_new_case(project_id,suite_id,sub_section_id,test_case)
127
- is_manual = test_case.tags.any?{|tag| tag.name =~/manual/}
128
- steps_as_string = test_case.test_steps.map{|step| step.source.last}.select{|step| step.is_a?(Cucumber::Core::Ast::Step)}.map{|step| "#{step.keyword}#{step.name}"}.join("\n")
129
- data = {'title'=>extract_title(test_case),
130
- 'type_id'=>(is_manual ? 7 : 1 ),
131
- 'custom_steps'=>steps_as_string,
132
- 'refs'=>refs(test_case)
133
- }
134
- testrail_api_client.send_post("add_case/#{sub_section_id || suite_id}", data)
109
+ testrail_api_client.send_post("add_case/#{sub_section_id || suite_id}",test_case_data(test_case))
135
110
  end
136
111
 
137
112
  def send_result(test_case,result,id,testrun)
@@ -214,6 +189,30 @@ module Cukerail
214
189
  all_tags(test_case).select{|tag| tag.name =~/(?:jira|ref)_/}.map{|ticket| /(?:jira|ref)_(\w+-\d+)$/.match(ticket.name)[1]}.uniq.join(",")
215
190
  end
216
191
 
192
+ def type_id(test_case)
193
+ type_ids = [1]
194
+ type_ids << 7 if test_case.tags.any?{|tag| tag.name =~/manual/}
195
+ type_ids << 13 if test_case.tags.any?{|tag| tag.name =~/on_hold/}
196
+ #get the highest precedence type found in the tags. E.g. if it's @on_hold and @manual it selects 13 for on hold
197
+ ([13,7,1] & type_ids).first
198
+ end
199
+
200
+ def test_case_data(test_case)
201
+ steps_as_string = test_case.test_steps.map{|step| step.source.last}
202
+ .select{|step| step.is_a?(Cucumber::Core::Ast::Step)}
203
+ .reject{|step| step.is_a?(Cucumber::Hooks::BeforeHook)}.map do | g_step |
204
+ str = g_step.send(:keyword)+g_step.send(:name)
205
+ str += g_step.multiline_arg.raw.map{|l|"\n| #{l.join(' | ')} |"}.join if g_step.multiline_arg.data_table?
206
+ str
207
+ end.join("\n")
208
+
209
+ {'title'=>extract_title(test_case),
210
+ 'type_id'=>type_id(test_case),
211
+ 'custom_steps'=>steps_as_string,
212
+ 'refs'=>refs(test_case)
213
+ }
214
+ end
215
+
217
216
  def update_run(run_id,case_ids)
218
217
  run = get_run(run_id)
219
218
  begin
data/lib/json_sender.rb CHANGED
@@ -29,7 +29,8 @@ module Cukerail
29
29
  if found_case
30
30
  result= found_case['id']
31
31
  else
32
- result = create_new_case(scenario,background_steps,project_id,suite_id,sub_section_id)['id']
32
+ test_case = create_new_case(scenario,background_steps,project_id,suite_id,sub_section_id)
33
+ result = test_case ? test_case['id'] : nil
33
34
  end
34
35
  return result
35
36
  end
@@ -58,11 +59,17 @@ module Cukerail
58
59
  def create_new_case(scenario,background_steps,project_id,suite_id,sub_section_id)
59
60
  data = prepare_data(scenario,background_steps)
60
61
  testrail_api_client.send_post("add_case/#{sub_section_id || suite_id}", data)
62
+ rescue StandardError => e
63
+ puts "#{e.message} in #{get_name(scenario)}"
64
+ return nil
61
65
  end
62
66
 
63
67
  def send_steps(scenario,background_steps,testcase_id)
64
68
  data = prepare_data(scenario,background_steps)
65
69
  testrail_api_client.send_post("update_case/#{testcase_id}",data)
70
+ rescue StandardError => e
71
+ puts "#{e.message} in #{get_name(scenario)}"
72
+ return nil
66
73
  end
67
74
 
68
75
  def prepare_data(scenario,background_steps)
@@ -1,5 +1,4 @@
1
1
  require_relative '../json_sender'
2
- require 'byebug'
3
2
  desc 'load a json results file into a test suite, JSON=filename'
4
3
  task :load_to_suite do
5
4
  raise 'You must have JSON=filename on the command line' unless ENV['JSON']
@@ -47,7 +46,8 @@ task :remove_from_test_run do
47
46
  testcase_ids << json_sender.get_id(scenario,background_steps,project_id,suite_id,sub_section_id)
48
47
  end
49
48
  end
50
- json_sender.remove_all_except_these_cases_from_testrun(testcase_ids,ENV['TESTRUN'].to_i)
49
+ # if the title is mroe than 255 characters then Testrail can't create the case, so the id will be nil so we should compact the array
50
+ json_sender.remove_all_except_these_cases_from_testrun(testcase_ids.compact,ENV['TESTRUN'].to_i)
51
51
  end
52
52
 
53
53
  desc "match test run cases to json results file,"
@@ -68,5 +68,6 @@ task :remove_from_test_suite do
68
68
  testcase_ids << json_sender.get_id(scenario,background_steps,project_id,suite_id,sub_section_id)
69
69
  end
70
70
  end
71
- json_sender.remove_all_except_these_cases_from_suite(testcase_ids,ex_project_id,ex_suite_id)
71
+ # if the title is mroe than 255 characters then Testrails can't create the case, so the id will be nil so we should compact the array
72
+ json_sender.remove_all_except_these_cases_from_suite(testcase_ids.compact,ex_project_id,ex_suite_id)
72
73
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cukerail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Small