test_rail_integration 0.0.8.2 → 0.0.8.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc5cbef07f354e0d32aa921ae232a51994faf657
4
- data.tar.gz: b30b50310e51039182a2419f486a77dbbe421a2a
3
+ metadata.gz: f140aef8b78ccaef86afb9b9a76591fdb85f4681
4
+ data.tar.gz: 507af599a9e2f715736a7398800e33fdc1d68707
5
5
  SHA512:
6
- metadata.gz: 888b1a1edff070819afd93b279c8506a8656ab3baf99958c17945bc9498371cfeac1dda88ea46abcea3a7e2befc2ed0d7431cbfe9175cf6c48ed7fde8b26bced
7
- data.tar.gz: 84c180ac6ee8100369b6c70c759029eecd434764a77890f47b43fceccf3d191ed0205e30c415f108a1759975c33828744822f632f7dcf03f9818aa9adfab0b58
6
+ metadata.gz: 6a8874e5145e6f62023369d4e5e3c6b628a5f1c61fabf6d58c8157cc9d62942d9ba97f5d61f95280e13695eb789e5cf2ee86a10cbdeb67483f6e3188a5965108
7
+ data.tar.gz: 026b0fd649a021e4fe749e2fd61a3f4393a6519c1dd6ec2d34721634410d0eef57315162bee7622b2ea6f60776d82bb278690a575a888f228416fa82712dd1dc
data/Gemfile CHANGED
@@ -3,4 +3,5 @@ source 'https://rubygems.org'
3
3
  gem 'thor'
4
4
  gem 'fileutils'
5
5
  gem 'rspec'
6
- gem 'simplecov-teamcity-summary'
6
+ gem 'simplecov-teamcity-summary'
7
+ gem 'cucumber'
data/Gemfile.lock CHANGED
@@ -1,11 +1,21 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
+ builder (3.2.2)
5
+ cucumber (1.3.19)
6
+ builder (>= 2.1.2)
7
+ diff-lcs (>= 1.1.3)
8
+ gherkin (~> 2.12)
9
+ multi_json (>= 1.7.5, < 2.0)
10
+ multi_test (>= 0.1.2)
4
11
  diff-lcs (1.2.5)
5
12
  docile (1.1.5)
6
13
  fileutils (0.7)
7
14
  rmagick (>= 2.13.1)
15
+ gherkin (2.12.2)
16
+ multi_json (~> 1.3)
8
17
  multi_json (1.11.0)
18
+ multi_test (0.1.2)
9
19
  rmagick (2.13.4)
10
20
  rspec (3.2.0)
11
21
  rspec-core (~> 3.2.0)
@@ -33,6 +43,7 @@ PLATFORMS
33
43
  ruby
34
44
 
35
45
  DEPENDENCIES
46
+ cucumber
36
47
  fileutils
37
48
  rspec
38
49
  simplecov-teamcity-summary
@@ -1,11 +1,11 @@
1
1
  :connection_data:
2
- :url: https://mlp.testrail.com
3
- :username: Twilight
4
- :password: Sparkle
2
+ :url: #put here url of your TestRail server
3
+ :username: #TestRail username
4
+ :password: #Password for TestRail user
5
5
 
6
- :project: 2 # Test project id can be found in Test Rail
7
- :test_suite: 63 # Test suite id can be found in Test Rail
8
- :assigned_to: 27 # Id of person could be found in Test Rail
6
+ :project: # Test project id can be found in Test Rail
7
+ :test_suite: # Test suite id can be found in Test Rail
8
+ :assigned_to: # Id of person could be found in Test Rail
9
9
  :description_of_run: "Automatically generated report by auto tests."
10
10
 
11
11
  :status_comment: 0
@@ -22,9 +22,9 @@
22
22
 
23
23
  :in_progress: " (in progress)" #value for changing test run name for monitoring complete of test run
24
24
 
25
- :test_run_id: 513
25
+ :test_run_id: 0 #parametrized test run from "ruby run_test_run.rb <test run number>"
26
26
 
27
- :exec_command: "cucumber -p lazada.#{parameters.venture}.#{parameters.environment} TESTRAIL=1 --format AllureCucumber::Formatter DRIVER=grid SELENIUM_GRID_SERVER_URL=http://192.168.100.1:4444/wd/hub -t "
27
+ :exec_command: "cucumber -p lazada.#{parameters.venture}.#{parameters.environment} TESTRAIL=1 --color -f json -o cucumber.json -t "
28
28
 
29
- :types: 4 #types for filtering from Test Rail
29
+ :types: #types for filtering from Test Rail
30
30
 
@@ -4,17 +4,21 @@ require_relative 'generator/project/check'
4
4
 
5
5
  class CLI < Thor
6
6
  include TestRail
7
- desc "perform", "Creates project for interaction with TestRail"
8
7
 
8
+ desc "perform", "Creates project for interaction with TestRail"
9
9
  def perform
10
10
  TestRail::Generators::Project.copy_file('run_test_run.rb')
11
11
  TestRail::Generators::Project.copy_file("test_rail_data.yml", "config/data/")
12
12
  end
13
13
 
14
- desc "check_test_run_and_update", "Check test run statuses and update"
15
-
14
+ desc "check_test_run_and_update", "Check test run statuses and update. Set test run id through --test_run_id parameter"
15
+ option :test_run_id
16
16
  def check_test_run_and_update
17
- TestRail::Check.check_test_run_statuses
17
+ if options[:test_run_id]
18
+ TestRail::Check.check_test_run_statuses(options[:test_run_id])
19
+ else
20
+ puts "You must set correct test run id through --test_run_id"
21
+ end
18
22
  end
19
23
  end
20
24
 
@@ -30,7 +30,7 @@ module TestRail
30
30
  # client.send_post("add_result_for_case/12/3131", status_id: '1', comment: "Test passed" )
31
31
  #
32
32
  def self.commit_test_result(test_case_result)
33
- client.send_post("add_result_for_case/#{TEST_RUN_ID}/#{test_case_result.test_case_id}", test_case_result.to_test_rail_api)
33
+ client.send_post("add_result_for_case/#{test_run_id}/#{test_case_result.test_case_id}", test_case_result.to_test_rail_api)
34
34
  end
35
35
 
36
36
  #
@@ -7,10 +7,12 @@ module TestRail
7
7
 
8
8
  class Check
9
9
 
10
- def self.check_test_run_statuses
10
+ def self.check_test_run_statuses(test_run_id)
11
11
  start_time = Time.new
12
12
  results = []
13
13
 
14
+ TestRail::Connection.test_run_id=(test_run_id)
15
+
14
16
  test_cases_ids = Connection.cases_with_types
15
17
  test_cases_ids.each do |test_case_id|
16
18
 
@@ -1,4 +1,5 @@
1
1
  require_relative 'test_rail_data_load'
2
+ require 'cucumber'
2
3
 
3
4
  module TestRail
4
5
  class TestCaseResult
@@ -9,7 +10,8 @@ module TestRail
9
10
  :assign_to,
10
11
  :previous_comment,
11
12
  :scenario,
12
- :test_results
13
+ :test_results,
14
+ :title
13
15
 
14
16
  COMMENT_STATUS ||= TestRail::TestRailDataLoad.test_rail_data[:status_comment]
15
17
  PASS ||= TestRail::TestRailDataLoad.test_rail_data[:test_pass]
@@ -29,6 +31,13 @@ module TestRail
29
31
  def initialize(scenario)
30
32
  self.test_case_id = scenario.source_tag_names.find { |e| e.match(TEST_RAIL_ID_REGEX) }[2..-1]
31
33
  self.scenario = scenario
34
+ if scenario.kind_of? Cucumber::Ast::OutlineTable::ExampleRow
35
+ self.title = scenario.scenario_outline.title
36
+ self.exception_message = scenario.scenario_exception unless defined?(scenario.scenario_exception).nil?
37
+ else
38
+ self.title = scenario.title
39
+ self.exception_message = scenario.steps.exception unless defined?(scenario.steps).nil?
40
+ end
32
41
  self.test_results = TestRail::Connection.get_test_results(self.test_case_id)
33
42
  self.previous_comment = get_last_failed_comment unless get_indexes_of_fails.empty?
34
43
  end
@@ -94,7 +103,7 @@ module TestRail
94
103
 
95
104
  if failed?
96
105
  self.comment ||= COMMENT[:fail]
97
- self.exception_message = scenario.steps.exception rescue nil
106
+ self.exception_message = self.exception_message rescue nil
98
107
  self.assign_to = ASSIGN_TO
99
108
  end
100
109
 
@@ -111,7 +120,7 @@ module TestRail
111
120
  # {status_id: 1, comment: "Test passed"}
112
121
  #
113
122
  def to_test_rail_api
114
- comment_message = "#{self.comment[:comment]} \"#{self.scenario.title}\""
123
+ comment_message = "#{self.comment[:comment]} \"#{self.title}\""
115
124
  comment_message = "**[#{Fixtures.instance['venture']}]** #{self.comment[:comment]} for \"#{self.title}\"" unless defined?(Fixtures.instance['venture']).nil?
116
125
  comment_message += "\n Exception : #{self.exception_message}" unless self.exception_message.nil?
117
126
  comment_message += "\n #{self.previous_comment}" if self.comment[:status] == COMMENT[:fail][:status] || self.comment[:status] == COMMENT[:unchanged_pass][:status]
@@ -1,3 +1,3 @@
1
1
  module TestRailIntegration
2
- VERSION = "0.0.8.2"
2
+ VERSION = "0.0.8.3"
3
3
  end
@@ -8,6 +8,10 @@ describe 'Api calls' do
8
8
  before(:each) do
9
9
  allow(TestRail::Connection).to receive(:commit_test_result).and_return('good!')
10
10
  @scenario = double('scenario')
11
+ @steps = double('scenario')
12
+ allow(@steps).to receive(:exception).and_return(nil)
13
+ allow(@scenario).to receive(:steps).and_return(@steps)
14
+ allow(@scenario).to receive(:kind_of?).and_return(false)
11
15
  allow(@scenario).to receive(:source_tag_names).and_return(['@C4556'])
12
16
  allow(@scenario).to receive(:title).and_return('title')
13
17
  allow(@scenario).to receive(:passed?).and_return(true)
@@ -16,7 +16,7 @@ describe 'Checking test run' do
16
16
  end
17
17
 
18
18
  it 'should change status to fail' do
19
- test_case_results = TestRail::Check.check_test_run_statuses
19
+ test_case_results = TestRail::Check.check_test_run_statuses(anything)
20
20
  expect(test_case_results[0].comment).to eq({:status => 5, :comment => "test **failed:**"})
21
21
  end
22
22
 
@@ -25,7 +25,12 @@ describe 'Checking test run' do
25
25
  expect(TestRail::Connection).to receive(:get_case_info).once
26
26
  expect(TestRail::Connection).to receive(:get_test_results).once
27
27
  expect(TestRail::Connection).to receive(:commit_test_result).once
28
- TestRail::Check.check_test_run_statuses
28
+ TestRail::Check.check_test_run_statuses(anything)
29
+ end
30
+
31
+ it 'should set test run id with new id' do
32
+ TestRail::Check.check_test_run_statuses('11111')
33
+ expect(TestRail::Connection::test_run_id).to eq('11111')
29
34
  end
30
35
 
31
36
  end
@@ -40,7 +45,7 @@ describe 'Checking test run' do
40
45
  end
41
46
 
42
47
  it 'should have two results' do
43
- test_case_results = TestRail::Check.check_test_run_statuses
48
+ test_case_results = TestRail::Check.check_test_run_statuses(anything)
44
49
  expect(test_case_results.length).to eq 2
45
50
  end
46
51
 
@@ -49,7 +54,7 @@ describe 'Checking test run' do
49
54
  expect(TestRail::Connection).to receive(:get_case_info).twice
50
55
  expect(TestRail::Connection).to receive(:get_test_results).twice
51
56
  expect(TestRail::Connection).to receive(:commit_test_result).twice
52
- TestRail::Check.check_test_run_statuses
57
+ TestRail::Check.check_test_run_statuses(anything)
53
58
  end
54
59
 
55
60
  end
data/spec/cli_spec.rb ADDED
@@ -0,0 +1,74 @@
1
+ require 'rspec'
2
+ require_relative '../lib/test_rail_integration/cli'
3
+
4
+ describe CLI do
5
+
6
+ before(:all) do
7
+ @subject = CLI.new
8
+ end
9
+
10
+ context 'when executing perform cli command' do
11
+
12
+ before(:all) do
13
+ @subject.perform
14
+ end
15
+
16
+ it 'run_test_run.rb should be copied' do
17
+ expect(File.exist?('run_test_run.rb')).to eq(true)
18
+ end
19
+
20
+ it 'copied run_test_run.rb should be identical' do
21
+ expect(File.read('run_test_run.rb')).to eq(File.read('lib/test_rail_integration/generator/project/run_test_run.rb'))
22
+ end
23
+
24
+ it 'test_rail_data.yml should be copied' do
25
+ expect(File.exist?('config/data/test_rail_data.yml')).to eq(true)
26
+ end
27
+
28
+ it 'copied test_rail_data.yml should be identical' do
29
+ expect(File.exist?('run_test_run.rb')).to eq(true)
30
+ expect(File.read('run_test_run.rb')).to eq(File.read('lib/test_rail_integration/generator/project/run_test_run.rb'))
31
+ expect(File.exist?('config/data/test_rail_data.yml')).to eq(true)
32
+ expect(File.read('config/data/test_rail_data.yml')).to eq(File.read('lib/test_rail_integration/generator/project/test_rail_data.yml'))
33
+ end
34
+
35
+ end
36
+
37
+ context 'when executing check_test_run_and_update cli command ' do
38
+
39
+ context 'and not passing test_run_id param' do
40
+
41
+ it 'should see output message' do
42
+ result = capture(:stdout) { @subject.check_test_run_and_update }
43
+ expect(result).to eq("You must set correct test run id through --test_run_id\n")
44
+ end
45
+
46
+ it 'should not not call check_test_run_statuses method' do
47
+ expect(TestRail::Check).not_to receive(:check_test_run_statuses)
48
+ @subject.check_test_run_and_update
49
+ end
50
+
51
+ end
52
+
53
+ context 'and passing test run id parameter ' do
54
+
55
+ before(:all) do
56
+ @subject.options = {:test_run_id => 12345}
57
+ end
58
+
59
+ it 'should execute command once' do
60
+ expect(TestRail::Check).to receive(:check_test_run_statuses)
61
+ @subject.check_test_run_and_update
62
+ end
63
+
64
+ it 'should not see any output ' do
65
+ allow(TestRail::Check).to receive(:check_test_run_statuses).and_return([])
66
+ result = capture(:stdout) { @subject.check_test_run_and_update }
67
+ expect(result).to eq('')
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+
74
+ end
data/spec/hooks_spec.rb CHANGED
@@ -109,6 +109,9 @@ describe 'Update test results' do
109
109
 
110
110
  private
111
111
  def passed_scenario
112
+ @steps = double('steps')
113
+ allow(@steps).to receive(:exception).and_return(nil)
114
+ allow(@scenario).to receive(:steps).and_return(@steps)
112
115
  allow(@scenario).to receive(:passed?).and_return(true)
113
116
  @scenario
114
117
  end
@@ -116,9 +119,9 @@ describe 'Update test results' do
116
119
  private
117
120
  def failed_scenario
118
121
  allow(@scenario).to receive(:passed?).and_return(false)
119
- steps = double('steps')
120
- allow(steps).to receive(:exception).and_return('exception')
121
- allow(@scenario).to receive(:steps).and_return(steps)
122
+ @steps = double('steps')
123
+ allow(@steps).to receive(:exception).and_return("exception")
124
+ allow(@scenario).to receive(:steps).and_return(@steps)
122
125
  @scenario
123
126
  end
124
127
 
@@ -0,0 +1,98 @@
1
+ require 'rspec'
2
+ require_relative '../lib/test_rail_integration/generator/connection'
3
+ require_relative '../lib/test_rail_integration/generator/test_rail_hooks'
4
+
5
+ describe 'Scenario types' do
6
+ before(:all) do
7
+ ENV['rspec-tests-running'] = '1'
8
+ end
9
+
10
+ context 'when scenario outline received' do
11
+
12
+ before(:each) do
13
+ allow(TestRail::Connection).to receive(:commit_test_result).and_return('good!')
14
+ @scenario = double('scenario')
15
+ @scenario_outline = double('scenario')
16
+ allow(@scenario_outline).to receive(:title).and_return('title scenario outline')
17
+ allow(@scenario).to receive(:scenario_outline).and_return(@scenario_outline)
18
+ allow(@scenario).to receive(:kind_of?).and_return(true)
19
+ allow(@scenario).to receive(:source_tag_names).and_return(['@C4556'])
20
+ allow(TestRail::Connection).to receive(:get_test_results).and_return([])
21
+ end
22
+
23
+ context 'with pass result' do
24
+
25
+ before do
26
+ allow(@scenario).to receive(:passed?).and_return(true)
27
+ allow(@scenario).to receive(:scenario_exception).and_return(nil)
28
+ end
29
+
30
+ it 'should receive outline title' do
31
+ test_result = TestRail::Hook.update_test_rail(@scenario)
32
+ expect(test_result.test_case_id).to eq('4556')
33
+ expect(test_result.comment).to eq({:status => 1, :comment => 'test **passed:**'})
34
+ expect(test_result.to_test_rail_api).to eq({:status_id => 1, :comment => "test **passed:** \"title scenario outline\""})
35
+ end
36
+ end
37
+
38
+ context 'with fail result' do
39
+
40
+ before do
41
+ allow(@scenario).to receive(:scenario_exception).and_return('scenario outline exception')
42
+ allow(@scenario).to receive(:passed?).and_return(false)
43
+ end
44
+
45
+ it 'should receive outline title and execption' do
46
+ test_result = TestRail::Hook.update_test_rail(@scenario)
47
+ expect(test_result.test_case_id).to eq('4556')
48
+ expect(test_result.comment).to eq({:status => 5, :comment => 'test **failed:**'})
49
+ expect(test_result.to_test_rail_api).to eq({:status_id => 5, :comment => "test **failed:** \"title scenario outline\"\n Exception : scenario outline exception\n "})
50
+ end
51
+ end
52
+ end
53
+
54
+ context 'when standart scenario received' do
55
+
56
+ before(:each) do
57
+ allow(TestRail::Connection).to receive(:commit_test_result).and_return('good!')
58
+ @scenario = double('scenario')
59
+ @steps = double('steps')
60
+ allow(@scenario).to receive(:kind_of?).and_return(false)
61
+ allow(@scenario).to receive(:source_tag_names).and_return(['@C4556'])
62
+ allow(@scenario).to receive(:title).and_return('title')
63
+ allow(TestRail::Connection).to receive(:get_test_results).and_return([])
64
+ end
65
+
66
+ context 'with passed result' do
67
+
68
+ before do
69
+ allow(@steps).to receive(:exception).and_return(nil)
70
+ allow(@scenario).to receive(:steps).and_return(@steps)
71
+ allow(@scenario).to receive(:passed?).and_return(true)
72
+ end
73
+
74
+ it "should keep title from scenrio" do
75
+ test_result = TestRail::Hook.update_test_rail(@scenario)
76
+ expect(test_result.test_case_id).to eq('4556')
77
+ expect(test_result.comment).to eq({:status => 1, :comment => 'test **passed:**'})
78
+ expect(test_result.to_test_rail_api).to eq({:status_id => 1, :comment => "test **passed:** \"title\""})
79
+ end
80
+ end
81
+
82
+ context 'with failed result' do
83
+
84
+ before do
85
+ allow(@steps).to receive(:exception).and_return('exception')
86
+ allow(@scenario).to receive(:steps).and_return(@steps)
87
+ allow(@scenario).to receive(:passed?).and_return(false)
88
+ end
89
+
90
+ it 'should receive scenario title and exception' do
91
+ test_result = TestRail::Hook.update_test_rail(@scenario)
92
+ expect(test_result.test_case_id).to eq('4556')
93
+ expect(test_result.comment).to eq({:status => 5, :comment => 'test **failed:**'})
94
+ expect(test_result.to_test_rail_api).to eq({:status_id => 5, :comment => "test **failed:** \"title\"\n Exception : exception\n "})
95
+ end
96
+ end
97
+ end
98
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,6 +7,18 @@ SimpleCov.start do
7
7
  end
8
8
  end
9
9
 
10
+ def capture(stream)
11
+ begin
12
+ stream = stream.to_s
13
+ eval "$#{stream} = StringIO.new"
14
+ yield
15
+ result = eval("$#{stream}").string
16
+ ensure
17
+ eval("$#{stream} = #{stream.upcase}")
18
+ end
19
+ result
20
+ end
21
+
10
22
  # This file was generated by the `rspec --init` command. Conventionally, all
11
23
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
12
24
  # The generated `.rspec` file contains `--require spec_helper` which will cause
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_rail_integration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8.2
4
+ version: 0.0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirikami
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-24 00:00:00.000000000 Z
11
+ date: 2015-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -181,7 +181,9 @@ files:
181
181
  - lib/test_rail_integration/version.rb
182
182
  - spec/api_calls_spec.rb
183
183
  - spec/check_test_run_spec.rb
184
+ - spec/cli_spec.rb
184
185
  - spec/hooks_spec.rb
186
+ - spec/scenario_types_spec.rb
185
187
  - spec/spec_helper.rb
186
188
  - test_rail_integration.gemspec
187
189
  homepage: https://github.com/Kirikami/test_rail_integration
@@ -211,5 +213,7 @@ summary: Gem for integration between framework and TestRail API
211
213
  test_files:
212
214
  - spec/api_calls_spec.rb
213
215
  - spec/check_test_run_spec.rb
216
+ - spec/cli_spec.rb
214
217
  - spec/hooks_spec.rb
218
+ - spec/scenario_types_spec.rb
215
219
  - spec/spec_helper.rb