stddtool 0.3.1.1 → 0.5.0.1
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/lib/stddtool.rb +210 -227
- metadata +17 -4
- data/lib/objects.rb +0 -94
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a76f2860a1034d498debff40c95430820672f253
|
4
|
+
data.tar.gz: 763ba36d5c0b9ade26fc7ce5065d635c96853fb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 762a58b64e6446448b45b6484ee534e071f9ecf4a03dace0bbcf4dda2ec6b64000c0bab46e8b799df29d27e2e5388c8c0d580d91b5b095b59d7dc44a70b90eff
|
7
|
+
data.tar.gz: 775638653d5391ef5121b53701ff25e0d1f15f4181c71fba1bed095821e5c32f03e013e5dbf6a7f2444aa8043b4a0eb070240ee30b4a399d59fc746f1ca7ede2
|
data/lib/stddtool.rb
CHANGED
@@ -6,268 +6,251 @@ require 'ostruct'
|
|
6
6
|
require 'cucumber/formatter/io'
|
7
7
|
require 'gherkin/formatter/argument'
|
8
8
|
require 'base64'
|
9
|
-
require 'objects'
|
10
9
|
require 'cucumber/ast/scenario_outline'
|
11
10
|
require 'cucumber/ast/scenario'
|
11
|
+
require 'stdd_api'
|
12
12
|
|
13
|
-
class STDDTool
|
14
|
-
AST_CLASSES = {
|
15
|
-
Cucumber::Ast::Scenario => 'scenario',
|
16
|
-
Cucumber::Ast::ScenarioOutline => 'scenario_outline'
|
17
|
-
}
|
18
|
-
|
19
|
-
def initialize(step_mother, io, options)
|
20
|
-
@buildnr = ENV['BUILD']
|
21
|
-
@job = ENV['JOB']
|
22
|
-
@url = ENV['STDD_URL'] ? ENV['STDD_URL'] : ['http://www.stddtool.se']
|
23
|
-
@proxy = ENV['http_proxy'] ? URI.parse('http://'+ENV['http_proxy']) : OpenStruct.new
|
24
|
-
# Generate string as runId
|
25
|
-
o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
|
26
|
-
@runID = (0...50).map{ o[rand(o.length)] }.join
|
27
|
-
@delayed_messages = []
|
28
|
-
p @runID
|
29
|
-
@connectionError = nil
|
30
|
-
p "Initiating STDDTool(#{@url}) formatter for #{@job} : #{@buildnr}"
|
31
|
-
@inside_outline = false
|
32
|
-
end
|
33
13
|
|
34
|
-
def embed(src, mime_type, label)
|
35
|
-
p "got embedding"
|
36
|
-
case(mime_type)
|
37
|
-
when /^image\/(png|gif|jpg|jpeg)/
|
38
|
-
p "Encoding image from #{src}"
|
39
|
-
buf = Base64.encode64(open(src,'rb') { |io| io.read })
|
40
|
-
embeddingObj=EmbeddingObj.new(mime_type,buf)
|
41
|
-
|
42
|
-
p "starts to post embedding"
|
43
|
-
postEmbedding(@scenarioID,embeddingObj)
|
44
|
-
p "posted embedding to scenario with id : #{@scenarioID}"
|
45
|
-
end
|
46
|
-
end
|
47
14
|
|
48
|
-
def puts(message)
|
49
|
-
@delayed_messages << message
|
50
|
-
end
|
51
15
|
|
16
|
+
module Cucumber
|
17
|
+
module Formatter
|
18
|
+
class STDDTool
|
19
|
+
include Io
|
20
|
+
attr_reader :runtime
|
52
21
|
|
22
|
+
AST_CLASSES = {
|
23
|
+
Cucumber::Ast::Scenario => 'scenario',
|
24
|
+
Cucumber::Ast::ScenarioOutline => 'scenario_outline'
|
25
|
+
}
|
53
26
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
27
|
+
def initialize(runtime, path_or_io, options)
|
28
|
+
@runtime, @io, @options = runtime, ensure_io(path_or_io, "stddtool"), options
|
29
|
+
@delayed_messages = []
|
30
|
+
@io.puts @runID
|
31
|
+
@connection_error = nil
|
32
|
+
@io.puts "Initiating STDDTool(#{@url}) formatter for #{@project} : #{@module}"
|
33
|
+
@inside_outline = false
|
34
|
+
@io.flush
|
58
35
|
|
59
|
-
|
60
|
-
@feature_element.tags = Array.new
|
61
|
-
@feature_element.feature_ID = @featureID
|
36
|
+
@stdd_client = STDDAPI::Client.new(ENV['STDD_URL'],ENV['http_proxy'])
|
62
37
|
|
63
|
-
|
38
|
+
#Collect all enviroment-variables
|
39
|
+
@customer_name = ENV['CUSTOMER']
|
40
|
+
@project_name = ENV['PROJECT']
|
64
41
|
|
65
|
-
|
66
|
-
|
67
|
-
|
42
|
+
@run_name = ENV['RUN']
|
43
|
+
@run_source = ENV['SOURCE']
|
44
|
+
@run_revision = ENV['REV']
|
68
45
|
|
69
|
-
|
70
|
-
# @in_background = true
|
71
|
-
end
|
46
|
+
init_customer_project_and_run(@customer_name,@project_name,@run_name,@run_source,@run_revision)
|
72
47
|
|
73
|
-
|
74
|
-
|
75
|
-
end
|
48
|
+
@module_name = ENV['MODULE']
|
49
|
+
init_module(@module_name)
|
76
50
|
|
77
|
-
|
78
|
-
@delayed_messages = []
|
79
|
-
@start_time = Time.now
|
80
|
-
end
|
51
|
+
end
|
81
52
|
|
82
|
-
|
83
|
-
|
84
|
-
|
53
|
+
def init_module name
|
54
|
+
return if @connection_error
|
55
|
+
valid,response = @stdd_client.create_module(@run.id,name,'cucumber',Time.now)
|
56
|
+
if(valid)
|
57
|
+
@module = response
|
58
|
+
else
|
59
|
+
@connection_error = response
|
60
|
+
puts @connection_error
|
61
|
+
end
|
62
|
+
end
|
85
63
|
|
86
|
-
|
87
|
-
|
88
|
-
|
64
|
+
def init_customer_project_and_run customer_name, project_name, run_name, run_source, run_revision
|
65
|
+
return if @connection_error
|
66
|
+
#Customer
|
67
|
+
create_customer_if_not_exist(customer_name)
|
68
|
+
|
69
|
+
#Project
|
70
|
+
create_project_if_not_exists(@customer.id,project_name)
|
71
|
+
|
72
|
+
#Run
|
73
|
+
valid, response = @stdd_client.create_run(@project.id,run_name,run_source,run_revision)
|
74
|
+
if(valid)
|
75
|
+
@run = response
|
76
|
+
else
|
77
|
+
@connection_error = response
|
78
|
+
puts @connection_error
|
79
|
+
end
|
89
80
|
|
90
|
-
|
91
|
-
p "Background #{name}"
|
92
|
-
@feature_element.name=name
|
93
|
-
@feature_element.keyword = keyword
|
94
|
-
postFeatureElement(@feature_element)
|
95
|
-
end
|
81
|
+
end
|
96
82
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
postFeatureElement(@feature_element)
|
102
|
-
end
|
83
|
+
def create_customer_if_not_exist customer_name
|
84
|
+
return if @connection_error
|
85
|
+
# Kontrollera om kunden finns
|
86
|
+
valid, response = @stdd_client.get_customer customer_name
|
103
87
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
88
|
+
# Om kunden finns
|
89
|
+
if(valid && response)
|
90
|
+
puts "Customer already exists"
|
91
|
+
else
|
92
|
+
puts "Customer does not exist, creating new.."
|
93
|
+
# Skapa en kund
|
94
|
+
valid, response = @stdd_client.create_customer customer_name
|
95
|
+
end
|
96
|
+
|
97
|
+
if(valid)
|
98
|
+
@customer = response
|
99
|
+
return true
|
100
|
+
else
|
101
|
+
@connection_error = response
|
102
|
+
puts @connection_error
|
103
|
+
return false
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
def create_project_if_not_exists customer_id,project_name
|
109
|
+
return if @connection_error
|
110
|
+
# Kontrollera om projektet finns
|
111
|
+
valid, response = @stdd_client.get_project customer_id, project_name
|
112
|
+
|
113
|
+
# Om projektet finns
|
114
|
+
if(valid)
|
115
|
+
puts "Project already exists"
|
116
|
+
@project = response
|
117
|
+
return true
|
118
|
+
end
|
119
|
+
|
120
|
+
puts "Project does not exist, creating new.."
|
121
|
+
# Skapa ett projekt
|
122
|
+
valid, response = @stdd_client.create_project customer_id, project_name
|
123
|
+
if valid
|
124
|
+
@project = response
|
125
|
+
return true
|
126
|
+
else
|
127
|
+
@connection_error = response
|
128
|
+
puts @connection_error
|
129
|
+
return false
|
130
|
+
end
|
110
131
|
|
111
|
-
def postFeature(featureObj)
|
112
|
-
if @connectionError
|
113
|
-
p "FEATURE WILL NOT BE REPORTED TO STDDTOOL DUE TO : #{@connectionError}"
|
114
|
-
return
|
115
132
|
end
|
116
133
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
134
|
+
def embed(src, mime_type, label)
|
135
|
+
return if @connection_error
|
136
|
+
@io.puts "got embedding"
|
137
|
+
case mime_type
|
138
|
+
when /^image\/(png|gif|jpg|jpeg)/
|
139
|
+
buf = Base64.encode64(open(src,'rb') { |io| io.read })
|
140
|
+
embedding=STDDAPI::Objects::Embedding.new(@scenario.id,mime_type,buf)
|
141
|
+
|
142
|
+
valid,response = @stdd_client.add_embedding_to_scenario(embedding)
|
143
|
+
if(valid)
|
127
144
|
#success
|
128
145
|
else
|
129
|
-
|
130
|
-
@
|
131
|
-
|
146
|
+
@connection_error = response
|
147
|
+
puts @connection_error
|
148
|
+
end
|
132
149
|
end
|
150
|
+
end
|
133
151
|
|
134
|
-
|
152
|
+
def before_feature(feature)
|
153
|
+
return if @connection_error
|
154
|
+
# puts feature.source_tag_names
|
155
|
+
@feature = STDDAPI::Objects::Feature.new(@module.id,feature.title,Time.now)
|
156
|
+
@feature.description = feature.description
|
157
|
+
@feature.tags = feature.source_tag_names
|
158
|
+
@feature.file = feature.file
|
159
|
+
|
160
|
+
valid,response = @stdd_client.create_feature(@feature)
|
161
|
+
if(valid)
|
162
|
+
@feature.id = response
|
163
|
+
else
|
164
|
+
@connection_error = response
|
165
|
+
puts @connection_error
|
166
|
+
end
|
167
|
+
|
168
|
+
# @feature_element = FeatureElement.new
|
169
|
+
# @feature_element.tags = Array.new
|
170
|
+
# @feature_element.feature_ID = @featureID
|
171
|
+
@scenario = STDDAPI::Objects::Scenario.new(@feature.id, "",'scenario','Scenario')
|
172
|
+
@scenario.tags=Array.new
|
135
173
|
|
136
|
-
if parsed["error"]
|
137
|
-
p parsed["error"]
|
138
174
|
end
|
139
|
-
@featureID = parsed["_id"]
|
140
175
|
|
141
|
-
|
176
|
+
def tag_name(tag_name)
|
177
|
+
return if @connection_error
|
178
|
+
@scenario ? @scenario.tags.push({'name' => tag_name}) : true
|
179
|
+
end
|
142
180
|
|
143
|
-
|
144
|
-
|
145
|
-
|
181
|
+
def before_step(step)
|
182
|
+
return if @connection_error
|
183
|
+
@delayed_messages = []
|
184
|
+
@step_start_time = Time.now
|
185
|
+
end
|
146
186
|
|
147
|
-
|
187
|
+
def before_step_result(*args)
|
188
|
+
return if @connection_error
|
189
|
+
@step_duration = Time.now - @step_start_time
|
190
|
+
end
|
148
191
|
|
192
|
+
def before_feature_element(feature_element)
|
193
|
+
return if @connection_error
|
194
|
+
@scenario.element_type = AST_CLASSES[feature_element.class]
|
195
|
+
end
|
149
196
|
|
150
|
-
|
151
|
-
|
152
|
-
#
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
# end
|
157
|
-
|
158
|
-
# def before_examples(examples)
|
159
|
-
# @inside_outline = true
|
160
|
-
# end
|
161
|
-
|
162
|
-
# def after_examples(examples)
|
163
|
-
# @inside_outline = false
|
164
|
-
# end
|
165
|
-
# def before_table_row(table_row)
|
166
|
-
# # @cellArray = Array.new
|
167
|
-
# end
|
168
|
-
|
169
|
-
# #additional code for scenario-outline
|
170
|
-
|
171
|
-
# def before_outline_table(outline_table)
|
172
|
-
# p "before outline table"
|
173
|
-
# @inside_outline = true
|
174
|
-
# @outline_row = 0
|
175
|
-
# end
|
176
|
-
|
177
|
-
# def after_outline_table(outline_table)
|
178
|
-
# p "after outline table"
|
179
|
-
# @outline_row = nil
|
180
|
-
# @inside_outline = false
|
181
|
-
# end
|
182
|
-
|
183
|
-
# def before_examples(examples)
|
184
|
-
# @examples_array = Array.new
|
185
|
-
# @examplesRowNumber=0;
|
186
|
-
# end
|
187
|
-
|
188
|
-
# def examples_name(keyword, name)
|
189
|
-
# p "keyword: #{keyword}"
|
190
|
-
# p "name: #{name}"
|
191
|
-
# end
|
192
|
-
|
193
|
-
# # def after_examples_array(arg1)
|
194
|
-
# # p "after examples array: #{arg1}"
|
195
|
-
# # end
|
196
|
-
# def before_table_row(table_row)
|
197
|
-
# # @cellArray = Array.new
|
198
|
-
# end
|
199
|
-
|
200
|
-
# def table_cell_value(value, status)
|
201
|
-
# scenarioExampleCell=ScenarioExampleCell.new(@examplesRowNumber,value,status)
|
202
|
-
# postScenarioExampleCell(@scenarioID,scenarioExampleCell)
|
203
|
-
# end
|
204
|
-
|
205
|
-
# def after_table_row(table_row)
|
206
|
-
|
207
|
-
# p @cellArray
|
208
|
-
# if table_row.exception
|
209
|
-
# p "tr exception: #{table_row.exception}"
|
210
|
-
|
211
|
-
# end
|
212
|
-
# p "after table row"
|
213
|
-
# if @outline_row
|
214
|
-
# @outline_row += 1
|
215
|
-
# end
|
216
|
-
# @examplesRowNumber = @examplesRowNumber +1
|
217
|
-
# end
|
218
|
-
|
219
|
-
# def after_examples(examples)
|
220
|
-
# p "after examples"
|
221
|
-
# end
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
def postStep(scenarioID,stepObj)
|
227
|
-
return if @connectionError
|
228
|
-
|
229
|
-
p "posting step #{stepObj.step_name}"
|
230
|
-
uri = URI.parse(@url)
|
231
|
-
path = "/collectionapi/scenarios/#{scenarioID}"
|
232
|
-
req = Net::HTTP::Put.new(path, initheader = { 'X-Auth-Token' => '97f0ad9e24ca5e0408a269748d7fe0a0'})
|
233
|
-
req.body = stepObj.to_json
|
234
|
-
response = Net::HTTP::Proxy(@proxy.host, @proxy.port).new(uri.host, uri.port).start {|http| http.request(req) }
|
235
|
-
end
|
197
|
+
def background_name(keyword, name, file_colon_line, source_indent)
|
198
|
+
return if @connection_error
|
199
|
+
@io.puts "Background #{name}"
|
200
|
+
@scenario.name=name
|
201
|
+
@scenario.keyword = keyword
|
202
|
+
post_scenario
|
236
203
|
|
237
|
-
|
238
|
-
return if @connectionError
|
204
|
+
end
|
239
205
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
206
|
+
def scenario_name(keyword, name, file_colon_line, source_indent)
|
207
|
+
return if @connection_error
|
208
|
+
@io.puts "scenario #{name}"
|
209
|
+
@scenario.name=name
|
210
|
+
@scenario.keyword = keyword
|
211
|
+
post_scenario
|
212
|
+
|
213
|
+
end
|
246
214
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
request.body = feature_element.to_json
|
258
|
-
response = http.request(request)
|
259
|
-
# puts response.body
|
260
|
-
parsed = JSON.parse(response.body)
|
261
|
-
@scenarioID = parsed["_id"]
|
262
|
-
end
|
215
|
+
def post_scenario
|
216
|
+
return if @connection_error
|
217
|
+
valid,response = @stdd_client.create_scenario(@scenario)
|
218
|
+
if(valid)
|
219
|
+
@scenario.id = response
|
220
|
+
else
|
221
|
+
@connection_error = response
|
222
|
+
puts @connection_error
|
223
|
+
end
|
224
|
+
end
|
263
225
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
226
|
+
def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background, file_colon_line)
|
227
|
+
return if @connection_error
|
228
|
+
step_name = step_match.format_args(lambda{|param| "*#{param}*"})
|
229
|
+
@step = STDDAPI::Objects::Step.new(@scenario.id,keyword, step_name)
|
230
|
+
@step.status=status
|
231
|
+
@step.error_message = exception
|
232
|
+
@step.duration = @step_duration
|
233
|
+
@step.messages = @delayed_messages
|
234
|
+
|
235
|
+
valid,response = @stdd_client.add_step_to_scenario(@step)
|
236
|
+
if(valid)
|
237
|
+
# success
|
238
|
+
else
|
239
|
+
@connection_error = response
|
240
|
+
puts @connection_error
|
241
|
+
end
|
242
|
+
end
|
272
243
|
|
273
|
-
|
244
|
+
def after_features(features)
|
245
|
+
return if @connection_error
|
246
|
+
valid, response = @stdd_client.update_module_stopTime(@module.id,Time.now)
|
247
|
+
if(valid)
|
248
|
+
@module = response
|
249
|
+
else
|
250
|
+
@connection_error = response
|
251
|
+
puts @connection_error
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stddtool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Danielsson
|
@@ -11,15 +11,28 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
date: 2014-02-05 00:00:00.000000000 Z
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: stdd_api
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.2.0.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 0.2.0.1
|
29
|
+
description: Cucumber formatter that reports cucumber testresults to STDDTool
|
16
30
|
email: anton.danielsson@learningwell.se
|
17
31
|
executables: []
|
18
32
|
extensions: []
|
19
33
|
extra_rdoc_files: []
|
20
34
|
files:
|
21
35
|
- lib/stddtool.rb
|
22
|
-
- lib/objects.rb
|
23
36
|
homepage: https://github.com/antda/cucumber-stddtool
|
24
37
|
licenses:
|
25
38
|
- MIT
|
data/lib/objects.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
class FeatureObj
|
4
|
-
def initialize(job,build,title,description,file,tags,runId)
|
5
|
-
@id = title.downcase.gsub(' ', '-')
|
6
|
-
@job = job
|
7
|
-
@build = build
|
8
|
-
@feature_title=title
|
9
|
-
@feature_description = description
|
10
|
-
@feature_file = file
|
11
|
-
@runID = runId
|
12
|
-
|
13
|
-
tagArr = Array.new
|
14
|
-
tags.each do |tag|
|
15
|
-
tagArr.push({'name' => tag})
|
16
|
-
end
|
17
|
-
|
18
|
-
@feature_tags = tagArr
|
19
|
-
|
20
|
-
end
|
21
|
-
attr_accessor :feature_title
|
22
|
-
def to_json
|
23
|
-
{
|
24
|
-
'id' => @id,
|
25
|
-
'job' => @job,
|
26
|
-
'build' => @build,
|
27
|
-
'runID' => @runID,
|
28
|
-
'title' => @feature_title,
|
29
|
-
'description' => @feature_description ,
|
30
|
-
'file' => @feature_file,
|
31
|
-
'tags' => @feature_tags,
|
32
|
-
}.to_json
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
class StepObj
|
38
|
-
def initialize(keyword, name, status,exception,duration,messages)
|
39
|
-
@step_keyword=keyword
|
40
|
-
@step_name=name
|
41
|
-
@step_status=status
|
42
|
-
@step_exception = exception
|
43
|
-
@step_duration = duration
|
44
|
-
@step_messages = messages
|
45
|
-
end
|
46
|
-
attr_accessor :step_name
|
47
|
-
def to_json
|
48
|
-
{'$addToSet' =>
|
49
|
-
{'steps' =>{'keyword' => @step_keyword,
|
50
|
-
'name' => @step_name ,
|
51
|
-
'result' => {'status' =>@step_status,'error_message'=> @step_exception,'duration'=>@step_duration},
|
52
|
-
'messages' => @step_messages
|
53
|
-
}
|
54
|
-
}
|
55
|
-
}.to_json
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class FeatureElement
|
60
|
-
def initialize()
|
61
|
-
tags = Array.new
|
62
|
-
end
|
63
|
-
attr_accessor :feature_ID,:keyword,:tags,:name,:element_type
|
64
|
-
def to_json
|
65
|
-
{'featureId' => @feature_ID,'keyword' => @keyword, 'name' => @name,'tags' => @tags,'element_type' => @element_type}.to_json
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
class EmbeddingObj
|
70
|
-
def initialize(mime_type,data)
|
71
|
-
@mime_type = mime_type
|
72
|
-
@data=data
|
73
|
-
end
|
74
|
-
def to_json
|
75
|
-
{'$addToSet' =>{'embeddings' =>{'mime_type' => @mime_type,'data' => @data}}}.to_json
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
# class ScenarioExampleCell
|
80
|
-
# def initialize(row,value,status)
|
81
|
-
# @row = row
|
82
|
-
# @value=value
|
83
|
-
# @status=status
|
84
|
-
# end
|
85
|
-
# def to_json
|
86
|
-
# {"$addToSet" =>
|
87
|
-
# {"outline.#{@row.to_s}" =>{
|
88
|
-
# "value" => @value,
|
89
|
-
# "status" => @status
|
90
|
-
# }
|
91
|
-
# }
|
92
|
-
# }.to_json
|
93
|
-
# end
|
94
|
-
# end
|