cucumber-mingle 1.0.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.
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
data/README ADDED
File without changes
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'cucumber-mingle'
6
+ s.version = '1.0.0'
7
+ s.authors = ["Vincent Xu"]
8
+ s.description = 'Cucumber Mingle Integration'
9
+ s.summary = 'cucumber-mingle-1.0.0'
10
+ s.email = 'vincent.hao.xu@gmail.com'
11
+
12
+ s.platform = Gem::Platform::RUBY
13
+
14
+ s.add_dependency 'cucumber', '~> 0.9.2'
15
+ s.add_dependency 'activeresource', '~> 3.0.1'
16
+
17
+ s.add_development_dependency 'rake', '~> 0.8.7'
18
+ # s.add_development_dependency 'rcov', '~> 0.9.9'
19
+
20
+ s.rubygems_version = "1.3.7"
21
+ s.files = `git ls-files`.split("\n")
22
+ # s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ # s.extra_rdoc_files = ["LICENSE", "README.rdoc", "History.txt"]
24
+ s.rdoc_options = ["--charset=UTF-8"]
25
+ s.require_path = "lib"
26
+ end
Binary file
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
3
+ require 'cucumber/formatter/unicode'
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
+ require 'calculator'
6
+
7
+ Before do
8
+ @calc = Calculator.new
9
+ end
10
+
11
+ After do
12
+ end
13
+
14
+ Given /I have entered (\d+) into the calculator/ do |n|
15
+ @calc.push n.to_i
16
+ end
17
+
18
+ When /I press (\w+)/ do |op|
19
+ @result = @calc.send op
20
+ end
21
+
22
+ Then /the result should be (.*) on the screen/ do |result|
23
+ @result.should == result.to_f
24
+ end
@@ -0,0 +1,18 @@
1
+ require 'cucumber/mingle'
2
+
3
+ AfterConfiguration do |config|
4
+ Cucumber::Mingle.features config, :host => 'http://localhost:8080', :user => 'vincentx',
5
+ :password => 'password', :project => 'calculator', :filters => 'Type IS Story'
6
+ Cucumber::Mingle.results do |invalid_cards, passed, failed, pending|
7
+ count = passed.length + failed.length + pending.length
8
+ test_report = Cucumber::Mingle::Card.new
9
+ test_report.name = "#{Time.now}"
10
+ test_report.type = 'Test Report'
11
+ test_report.description = ''
12
+ test_report.save
13
+ test_report = Cucumber::Mingle::Card.find_by_number(test_report.id)
14
+ test_report['Scenario Count'] = count
15
+ test_report['Automated Scenario Count'] = count-pending.length
16
+ test_report.save
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ class Calculator
2
+ def push(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def add
8
+ @args.inject(0){|n,sum| sum+=n}
9
+ end
10
+
11
+ def divide
12
+ @args[0].to_f / @args[1].to_f
13
+ end
14
+ end
@@ -0,0 +1,107 @@
1
+ require 'rubygems'
2
+ require 'active_resource'
3
+
4
+ module Cucumber
5
+ module Mingle
6
+ @invalid_cards = []
7
+
8
+ def self.features(config, options)
9
+ url = "#{options[:host]}/api/v2/projects/#{options[:project]}"
10
+ Card.site, Card.filters = url, options[:filter]
11
+ Card.user, Card.password = options[:user], options[:password]
12
+ config.formats << ['Cucumber::Mingle::Formatter', config.out_stream]
13
+ end
14
+
15
+ def self.report_invaild_card(card)
16
+ @invalid_cards << card
17
+ end
18
+
19
+ def self.summary(passed, failed, pending)
20
+ to_scenario = Proc.new {|s| Scenario.new(s)}
21
+ @handler.call(@invalid_cards, passed.map(&to_scenario), failed.map(&to_scenario), pending.map(&to_scenario)) if @handler
22
+ end
23
+
24
+ def self.results(&handler)
25
+ @handler = handler
26
+ end
27
+
28
+ class Scenario
29
+ attr_reader :source, :card, :feature
30
+
31
+ def initialize(source)
32
+ @source = source
33
+ @feature = source.feature rescue source.scenario_outline.feature
34
+ @card = @feature.card
35
+ end
36
+ end
37
+
38
+ class Card < ActiveResource::Base
39
+ def self.filters=(filters)
40
+ @filters = filters
41
+ end
42
+
43
+ def self.find_by_number(number)
44
+ card = self.find(number)
45
+ card.id = card.number
46
+ card
47
+ end
48
+
49
+ def self.all
50
+ !@filters ? self.find(:all, :params=> {:page => 'all'}) : self.find(:all, :params => {:page => 'all', 'filters[mql]'.to_sym => @filters})
51
+ end
52
+
53
+ def type
54
+ attributes['card_type_name']
55
+ end
56
+
57
+ def type=(type)
58
+ attributes['card_type_name'] = type
59
+ end
60
+
61
+ def [](name)
62
+ property = properties.find { |p| p.name == name }
63
+ property.value if property
64
+ end
65
+
66
+ def []=(name, value)
67
+ property = properties.find { |p| p.name == name }
68
+ property.value = value if property
69
+ end
70
+ end
71
+
72
+ class Formatter
73
+ def initialize(step_mother, io, options)
74
+ @step_mother = step_mother
75
+ end
76
+
77
+ def after_features(*args)
78
+ Cucumber::Mingle.summary(@step_mother.scenarios(:passed), @step_mother.scenarios(:failed), @step_mother.scenarios(:undefined))
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ class Cucumber::Runtime
85
+ alias cucumber_features features
86
+ def features
87
+ filters = []
88
+ features = Cucumber::Ast::Features.new
89
+ Cucumber::Mingle::Card.all.map do | card |
90
+ feature_file = Cucumber::FeatureFile.new("#{card.number}-#{card.name}.feature", card.description)
91
+ feature = feature_file.parse(filters, {}) rescue nil
92
+ if feature
93
+ class <<feature
94
+ attr_accessor :card
95
+ end
96
+ feature.card = card
97
+ features.add_feature(feature)
98
+ else
99
+ Cucumber::Mingle.report_invaild_card(card)
100
+ end
101
+ end
102
+ features
103
+ end
104
+ end
105
+
106
+
107
+
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cucumber-mingle
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Vincent Xu
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-03 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: cucumber
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 63
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 2
34
+ version: 0.9.2
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: activeresource
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 5
46
+ segments:
47
+ - 3
48
+ - 0
49
+ - 1
50
+ version: 3.0.1
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 49
62
+ segments:
63
+ - 0
64
+ - 8
65
+ - 7
66
+ version: 0.8.7
67
+ type: :development
68
+ version_requirements: *id003
69
+ description: Cucumber Mingle Integration
70
+ email: vincent.hao.xu@gmail.com
71
+ executables: []
72
+
73
+ extensions: []
74
+
75
+ extra_rdoc_files: []
76
+
77
+ files:
78
+ - Gemfile
79
+ - README
80
+ - cucumber-mingle.gemspec
81
+ - examples/calculator.mingle
82
+ - examples/features/step_definitons/calculator_steps.rb
83
+ - examples/features/support/env.rb
84
+ - examples/lib/calculator.rb
85
+ - lib/cucumber/mingle.rb
86
+ has_rdoc: true
87
+ homepage:
88
+ licenses: []
89
+
90
+ post_install_message:
91
+ rdoc_options:
92
+ - --charset=UTF-8
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ hash: 3
110
+ segments:
111
+ - 0
112
+ version: "0"
113
+ requirements: []
114
+
115
+ rubyforge_project:
116
+ rubygems_version: 1.3.7
117
+ signing_key:
118
+ specification_version: 3
119
+ summary: cucumber-mingle-1.0.0
120
+ test_files: []
121
+