cloudfactory 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,135 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <meta charset="UTF-8">
4
+ <head>
5
+ <style>
6
+ body {
7
+ margin: 0 auto;
8
+ padding: 0;
9
+ color: #000;
10
+ width: 960px;
11
+ background: #302D2F;
12
+ font-family: georgia;
13
+ }
14
+ #wrapper {
15
+ background: #FFF;
16
+ position: relative;
17
+ padding:0 10px;
18
+ }
19
+ #header {
20
+ border-bottom: solid 1px grey;
21
+ padding: 10px;
22
+ height: 50px;
23
+ text-align: center;
24
+ font-size: 36px;
25
+ font-weight: bold;
26
+ color: #666666;
27
+ }
28
+
29
+ ul{
30
+ list-style: decimal;
31
+ }
32
+ input[type=text] {
33
+ width:660px;
34
+ margin:4px;
35
+ font-size: 12px;
36
+ height:40px;
37
+ }
38
+ input[type=submit]{
39
+ width: 160px;
40
+ height: 40px;
41
+ border: solid 1px black;
42
+ }
43
+
44
+ #gender, #age, #location {
45
+ font-weight: bold;
46
+ color: #A9BED4;
47
+ }
48
+ a{
49
+ color: #007EB9;
50
+ }
51
+ #footer{
52
+ border-top: solid 1px grey;
53
+ padding: 10px;
54
+ text-align: center;
55
+ }
56
+ </style>
57
+ </head>
58
+ <body>
59
+ <div id="wrapper">
60
+ <div id="header">
61
+ Be a Match Maker
62
+ </div>
63
+ <div id="instructions">
64
+ <h2>Instructions:</h2>
65
+ <ul>
66
+ <li><img src="{{image_url}}" /></li>
67
+ <li>Then enter the url of hottest date found</li>
68
+ </ul>
69
+ </div>
70
+
71
+ <div id="station_2_form">
72
+ <div id = "field-panel">
73
+ <p>
74
+ <form>
75
+
76
+ <label>Gender</label><br />
77
+ <select id="gender_option" name="output[gender]">
78
+ <option value="Male">Male</option>
79
+ <option value="Female">Female</option>
80
+ </select>
81
+ <br />
82
+
83
+ <label>How rich?</label><br />
84
+ <select id="rich_option" name="output[rich]">
85
+ <option value="1">1</option>
86
+ <option value="2">2</option>
87
+ <option value="3">3</option>
88
+ </select>
89
+ <br />
90
+
91
+ <label>How Kind?</label><br />
92
+ <select id="kind_option" name="output[kind]">
93
+ <option value="1">1</option>
94
+ <option value="2">2</option>
95
+ <option value="3">3</option>
96
+ </select>
97
+ <br />
98
+
99
+ <label>How Attractive?</label><br />
100
+ <select id="attractive_option" name="output[attractive]">
101
+ <option value="1">1</option>
102
+ <option value="2">2</option>
103
+ <option value="3">3</option>
104
+ </select>
105
+ <br />
106
+
107
+ <input type="submit" value="submit" />
108
+
109
+ </form>
110
+ </p>
111
+ </div>
112
+ </div>
113
+ <div id="footer">
114
+ Copyright(c)
115
+ </div>
116
+ </div>
117
+ </body>
118
+ </html>
119
+
120
+ <!-- scripts -->
121
+ <script>
122
+ $(document).ready(function() {
123
+ var url = $("#instructions a").attr('href');
124
+ var splitted_url = url.split("/");
125
+ var gender = splitted_url[splitted_url.length - 3];
126
+ var new_gender = gender.toLowerCase() == "male" ? "female" : "male";
127
+ splitted_url[splitted_url.length - 3] = new_gender;
128
+ var age = splitted_url[splitted_url.length - 1];
129
+ age = decodeURI(age).split(" ")[0];
130
+ splitted_url[splitted_url.length - 1] = age;
131
+ var new_url = splitted_url.join("/");
132
+ $("#instructions a").attr('href',new_url);
133
+ });
134
+
135
+ </script>
@@ -0,0 +1,288 @@
1
+ require 'spec_helper'
2
+
3
+ describe CF::Badge do
4
+ context "add a badge" do
5
+ it "should add a badge to the station in DSL way" do
6
+ WebMock.allow_net_connect!
7
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
8
+ sleep 1
9
+ line = CF::Line.create(title,"Digitization") do |l|
10
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
11
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
12
+ end
13
+ station = CF::Station.create({:line => line, :type => "work"}) do |s|
14
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
15
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
16
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
17
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
18
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
19
+ end
20
+ @gold_standard = CF::GoldStandard.new({ :line => line,
21
+ :station => s,
22
+ :name => "easy_#{Time.now}",
23
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
24
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
25
+ })
26
+
27
+ @badge = CF::Badge.create({
28
+ :line => line,
29
+ :station => s,
30
+ :name => "Tomb Digitizer",
31
+ :description => "This badge qualifies you to work on tomb digitization tasks.",
32
+ :max_badges => 100,
33
+ :gold_standards => ["#{@gold_standard.settings[:name]}"],
34
+ :test_attributes =>
35
+ {
36
+ :type => "default",
37
+ :retries => 10,
38
+ :pass_percentage => 100,
39
+ :check_manually => true
40
+ }
41
+ })
42
+ end
43
+ end
44
+
45
+ it "should add a badge to the station in plain ruby way" do
46
+ WebMock.allow_net_connect!
47
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
48
+ sleep 1
49
+ @line = CF::Line.create(title,"Digitization") do |l|
50
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
51
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
52
+ end
53
+ station = CF::Station.create({:line => @line, :type => "work"}) do |s|
54
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
55
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
56
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
57
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
58
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
59
+ end
60
+ @gold_standard = CF::GoldStandard.new({ :line => @line,
61
+ :station => s,
62
+ :name => "easy",
63
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
64
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
65
+ })
66
+ end
67
+ badge = CF::Badge.new({
68
+ :name => "Tomb Digitizer",
69
+ :description => "This badge qualifies you to work on tomb digitization tasks.",
70
+ :max_badges => 100,
71
+ :gold_standards => ["#{@gold_standard.settings[:name]}"],
72
+ :test_attributes =>
73
+ {
74
+ :type => "default",
75
+ :retries => 10,
76
+ :pass_percentage => 100,
77
+ :check_manually => false
78
+ }
79
+ })
80
+ @line.stations.first.badges badge
81
+ @line.stations.first.badges.first.settings["name"].should eq(badge.settings[:name])
82
+ @line.stations.first.badges.first.settings['test']["form"].should eql({"_type"=>"TaskForm", "form_fields"=>[{"label"=>"First Name", "field_type"=>"short_answer", "required"=>true, "position"=>1}, {"label"=>"Middle Name", "field_type"=>"short_answer", "position"=>2}, {"label"=>"Last Name", "field_type"=>"short_answer", "required"=>true, "position"=>3}], "instruction"=>"Describe", "title"=>"Enter text from a business card image"})
83
+
84
+ end
85
+
86
+
87
+ it "should add a badge to the station with test form defined in DSL way" do
88
+ WebMock.allow_net_connect!
89
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
90
+ sleep 1
91
+ line = CF::Line.create(title,"Digitization") do |l|
92
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
93
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
94
+ end
95
+ station = CF::Station.create({:line => line, :type => "work"}) do |s|
96
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
97
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
98
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
99
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
100
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
101
+ end
102
+ @gold_standard = CF::GoldStandard.new({ :line => line,
103
+ :station => s,
104
+ :name => "easy_#{Time.now}",
105
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
106
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
107
+ })
108
+
109
+ @badge = CF::Badge.new({
110
+ :line => line,
111
+ :station => s,
112
+ :name => "Tomb Digitizer",
113
+ :description => "This badge qualifies you to work on tomb digitization tasks.",
114
+ :max_badges => 100,
115
+ :gold_standards => ["#{@gold_standard.settings[:name]}"],
116
+ :test_attributes =>
117
+ {
118
+ :type => "default",
119
+ :retries => 10,
120
+ :pass_percentage => 100,
121
+ :check_manually => true,
122
+ :form_attributes => {
123
+ :title => "Tombfinder Test",
124
+ :instruction => "Look at the image of the tomb in the url given and answer the asked questions.",
125
+ :type => "TaskForm",
126
+ :form_fields_attributes =>
127
+ [
128
+ { "label" => "Last Name", "field_type" => "radio_button", 'option_values' => ["LEIGH", "IRVING", "GERTRUDE"] },
129
+ { "label" => "Lizzie Year of Birth", "field_type" => "radio_button", 'option_values' => ["1873", "1933", "1896"] }
130
+ ]
131
+ }
132
+ }
133
+ })
134
+ end
135
+ line.stations.first.badges.first.settings[:test_attributes][:form_attributes][:type].should eql("TaskForm")
136
+ line.stations.first.badges.first.settings[:test_attributes][:form_attributes][:form_fields_attributes].should eql([{"label"=>"Last Name", "field_type"=>"radio_button", "option_values"=>["LEIGH", "IRVING", "GERTRUDE"]}, {"label"=>"Lizzie Year of Birth", "field_type"=>"radio_button", "option_values"=>["1873", "1933", "1896"]}])
137
+ end
138
+
139
+
140
+
141
+ it "should add a badge to the station with customtaskform as a badge testform form defined in DSL way" do
142
+ WebMock.allow_net_connect!
143
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
144
+ sleep 1
145
+ line = CF::Line.create(title,"Digitization") do |l|
146
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
147
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
148
+ end
149
+ station = CF::Station.create({:line => line, :type => "work"}) do |s|
150
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
151
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
152
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
153
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
154
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
155
+ end
156
+ @gold_standard = CF::GoldStandard.new({ :line => line,
157
+ :station => s,
158
+ :name => "easy_#{Time.now}",
159
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
160
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
161
+ })
162
+
163
+ @badge = CF::Badge.new({
164
+ :line => line,
165
+ :station => s,
166
+ :name => "Tomb Digitizer",
167
+ :description => "This badge qualifies you to work on tomb digitization tasks.",
168
+ :max_badges => 100,
169
+ :gold_standards => ["#{@gold_standard.settings[:name]}"],
170
+ :test_attributes =>
171
+ {
172
+ :type => "default",
173
+ :retries => 10,
174
+ :pass_percentage => 100,
175
+ :check_manually => true,
176
+ :form_attributes => {
177
+ :title => "Custom TestForm",
178
+ :instruction => "Look at the image of the tomb in the url given and answer the asked questions.",
179
+ :type => "CustomTaskForm",
180
+ :file =>"./spec/badges/station_1.html"
181
+ }
182
+ }
183
+ })
184
+ end
185
+ line.stations.first.badges.first.settings[:test_attributes][:form_attributes][:type].should eql("CustomTaskForm")
186
+ end
187
+
188
+
189
+ it "should add a badge with defined custom_task_form as a badge test form in plain ruby way " do
190
+ WebMock.allow_net_connect!
191
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
192
+ sleep 1
193
+ @line = CF::Line.create(title,"Digitization") do |l|
194
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
195
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
196
+ end
197
+ station = CF::Station.create({:line => @line, :type => "work"}) do |s|
198
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
199
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
200
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
201
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
202
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
203
+ end
204
+ @gold_standard = CF::GoldStandard.new({ :line => @line,
205
+ :station => s,
206
+ :name => "easy",
207
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
208
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
209
+ })
210
+ end
211
+ badge = CF::Badge.new({
212
+ :name => "Tomb Digitizer",
213
+ :description => "This badge qualifies you to work on tomb digitization tasks.",
214
+ :max_badges => 100,
215
+ :gold_standards => ["#{@gold_standard.settings[:name]}"],
216
+ :test_attributes =>
217
+ {
218
+ :type => "default",
219
+ :retries => 10,
220
+ :pass_percentage => 100,
221
+ :check_manually => false,
222
+ :form_attributes => {
223
+ :title => "Custom TestForm in plain ruby way",
224
+ :instruction => "Look at the image of the tomb in the url given and answer the asked questions.",
225
+ :type => "CustomTaskForm",
226
+ :file =>"./spec/badges/station_1.html"
227
+ }
228
+ }
229
+ })
230
+ @line.stations.first.badges badge
231
+ @line.stations.first.badges.first.settings["test"]["form"]["_type"].should eql("CustomTaskForm")
232
+ @line.stations.first.badges.first.settings["test"]["form"]["raw_html"].present?.should eql(true)
233
+ end
234
+
235
+
236
+ it "should add a badge with defined task_form as a badge test form in plain ruby way " do
237
+ WebMock.allow_net_connect!
238
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
239
+ sleep 1
240
+ @line = CF::Line.create(title,"Digitization") do |l|
241
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
242
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
243
+ end
244
+ station = CF::Station.create({:line => @line, :type => "work"}) do |s|
245
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
246
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
247
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
248
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
249
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
250
+ end
251
+ @gold_standard = CF::GoldStandard.new({ :line => @line,
252
+ :station => s,
253
+ :name => "easy",
254
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
255
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
256
+ })
257
+ end
258
+ badge = CF::Badge.new({
259
+ :name => "Tomb Digitizer",
260
+ :description => "This badge qualifies you to work on tomb digitization tasks.",
261
+ :max_badges => 100,
262
+ :gold_standards => ["#{@gold_standard.settings[:name]}"],
263
+ :test_attributes =>
264
+ {
265
+ :type => "default",
266
+ :retries => 10,
267
+ :pass_percentage => 100,
268
+ :check_manually => false,
269
+ :form_attributes => {
270
+ :title => "Tombfinder Test plain ruby way",
271
+ :instruction => "Look at the image of the tomb in the url given and answer the asked questions.",
272
+ :type => "TaskForm",
273
+ :form_fields_attributes =>
274
+ [
275
+ { "label" => "Last Name", "field_type" => "radio_button", 'option_values' => ["LEIGH", "IRVING", "GERTRUDE"] },
276
+ { "label" => "Lizzie Year of Birth", "field_type" => "radio_button", 'option_values' => ["1873", "1933", "1896"] }
277
+ ]
278
+ }
279
+ }
280
+ })
281
+ @line.stations.first.badges badge
282
+ @line.stations.first.badges.first.settings["test"]["form"]["_type"].should eql("TaskForm")
283
+ @line.stations.first.badges.first.settings["test"]["form"]["form_fields"].should eql([{"label"=>"Last Name", "field_type"=>"radio_button", "option_values"=>["LEIGH", "IRVING", "GERTRUDE"]}, {"label"=>"Lizzie Year of Birth", "field_type"=>"radio_button", "option_values"=>["1873", "1933", "1896"]}])
284
+
285
+ end
286
+
287
+ end
288
+ end
@@ -0,0 +1,179 @@
1
+ require 'spec_helper'
2
+
3
+ describe CF::GoldStandard do
4
+ context "add a glodstandard to a line" do
5
+ it "should add gold standard to a line in plain ruby way way" do
6
+ WebMock.allow_net_connect!
7
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
8
+ sleep 1
9
+ line = CF::Line.create(title,"Digitization") do |l|
10
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
11
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
12
+ CF::Station.create({:line => l, :type => "work"}) do |s|
13
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
14
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
15
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
16
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
17
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
18
+ end
19
+ end
20
+ end
21
+ gold_standard = CF::GoldStandard.new({:name => "easy", :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},:expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}})
22
+ line.gold_standards gold_standard
23
+ line.gold_standards.first.settings[:name].should eql("easy")
24
+ line.gold_standards.first.settings[:input].should eql({"image_url"=>"http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"})
25
+ line.gold_standards.first.settings[:expected_output].should eql({"first_name"=>{"value"=>"John"}, "last_name"=>{"value"=>"Lennon"}, "company"=>{"value"=>"Sprout"}})
26
+ end
27
+
28
+ it "should add gold standard to a line in Block DSL way" do
29
+ WebMock.allow_net_connect!
30
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
31
+ sleep 1
32
+ line = CF::Line.create(title,"Digitization") do |l|
33
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
34
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
35
+ CF::Station.create({:line => l, :type => "work"}) do |s|
36
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
37
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
38
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
39
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
40
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
41
+ end
42
+ end
43
+ end
44
+ gold_standard = CF::GoldStandard.new({ :line => line,
45
+ :name => "gold_standard_#{Time.new.strftime('%Y%b%d-%H%M%S')}",
46
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
47
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
48
+ })
49
+ line.gold_standards.should include(gold_standard)
50
+ end
51
+
52
+ it "should add gold standard to a line from a file in Block DSL way" do
53
+ WebMock.allow_net_connect!
54
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
55
+ sleep 1
56
+ line = CF::Line.create(title,"Digitization") do |l|
57
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
58
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
59
+ CF::Station.create({:line => l, :type => "work"}) do |s|
60
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
61
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
62
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
63
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
64
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
65
+ end
66
+ end
67
+ end
68
+ gold_standard = CF::GoldStandard.new({:line => line,:file =>"./spec/gold_standards.csv" })
69
+ line.gold_standards.should include(gold_standard)
70
+ end
71
+
72
+ it "should add gold standard to a line from a file in plain ruby way" do
73
+ WebMock.allow_net_connect!
74
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
75
+ sleep 1
76
+ line = CF::Line.create(title,"Digitization") do |l|
77
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
78
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
79
+ end
80
+ station = CF::Station.new({:type => "work"})
81
+ line.stations station
82
+ gold_standard = CF::GoldStandard.new({:file =>"./spec/gold_standards.csv" })
83
+ line.gold_standards gold_standard
84
+ line.gold_standards.first.settings["name"].should eql("gold_standard_1")
85
+ line.gold_standards.first.settings["input"].should eql({"Website"=>"aaple.com"})
86
+ line.gold_standards.first.settings["expected_output"].present?.should eql(true)
87
+ end
88
+ end
89
+
90
+ context "should add goldstandard to a station" do
91
+
92
+ it "should add gold standard to the station in block DSL way" do
93
+ WebMock.allow_net_connect!
94
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
95
+ sleep 1
96
+ line = CF::Line.create(title,"Digitization") do |l|
97
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
98
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
99
+ end
100
+ station = CF::Station.create({:line => line, :type => "work"}) do |s|
101
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
102
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
103
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
104
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
105
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
106
+ end
107
+ @gold_standard = CF::GoldStandard.new({ :line => line,
108
+ :station => s,
109
+ :name => "easy",
110
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
111
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
112
+ })
113
+ end
114
+ line.stations.first.gold_standards.should include(@gold_standard)
115
+ end
116
+
117
+
118
+ it "should add gold standard to the station in plain ruby way" do
119
+ WebMock.allow_net_connect!
120
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
121
+ sleep 1
122
+ line = CF::Line.create(title,"Digitization") do |l|
123
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
124
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
125
+ end
126
+ station = CF::Station.new({:type => "work"})
127
+ line.stations station
128
+ gold_standard = CF::GoldStandard.new({
129
+ :name => "easy",
130
+ :input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
131
+ :expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
132
+ })
133
+ line.stations.first.gold_standards gold_standard
134
+ line.stations.first.gold_standards.first.settings[:name].should eql("easy")
135
+ line.stations.first.gold_standards.first.settings[:input].should eql({"image_url"=>"http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"})
136
+ line.stations.first.gold_standards.first.settings[:expected_output].should eql({"first_name"=>{"value"=>"John"}, "last_name"=>{"value"=>"Lennon"}, "company"=>{"value"=>"Sprout"}})
137
+ end
138
+
139
+ it "should add gold standard to the station from a file in block DSL way" do
140
+ WebMock.allow_net_connect!
141
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
142
+ sleep 1
143
+ line = CF::Line.create(title,"Digitization") do |l|
144
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
145
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
146
+ end
147
+ station = CF::Station.create({:line => line, :type => "work"}) do |s|
148
+ CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
149
+ CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
150
+ CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
151
+ CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
152
+ CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
153
+ end
154
+ @gold_standard = CF::GoldStandard.create({ :line => line,
155
+ :station => s,
156
+ :file =>"./spec/gold_standards.csv"
157
+ })
158
+ end
159
+ line.stations.first.gold_standards.should include(@gold_standard)
160
+ end
161
+
162
+ it "should add gold standard to a station from a file in plain ruby way" do
163
+ WebMock.allow_net_connect!
164
+ title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
165
+ sleep 1
166
+ line = CF::Line.create(title,"Digitization") do |l|
167
+ CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
168
+ CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
169
+ end
170
+ station = CF::Station.new({:type => "work"})
171
+ line.stations station
172
+ gold_standard = CF::GoldStandard.new({:file =>"./spec/gold_standards.csv" })
173
+ line.stations.first.gold_standards gold_standard
174
+ line.stations.first.gold_standards.first.settings["name"].should eql("gold_standard_1")
175
+ line.stations.first.gold_standards.first.settings["input"].should eql({"Website"=>"aaple.com"})
176
+ line.stations.first.gold_standards.first.settings["expected_output"].present?.should eql(true)
177
+ end
178
+ end
179
+ end