voice_form 0.3.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/History.txt +24 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +251 -0
- data/Rakefile +55 -0
- data/examples/my_component.rb +62 -0
- data/examples/simon_game_voice_form.rb +47 -0
- data/lib/voice_form.rb +3 -0
- data/lib/voice_form/form.rb +101 -0
- data/lib/voice_form/form_field.rb +209 -0
- data/lib/voice_form/form_methods.rb +69 -0
- data/spec/form_field_spec.rb +303 -0
- data/spec/form_spec.rb +232 -0
- data/spec/spec_helper.rb +28 -0
- metadata +66 -0
data/spec/form_spec.rb
ADDED
@@ -0,0 +1,232 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe VoiceForm::Form do
|
4
|
+
include VoiceForm
|
5
|
+
|
6
|
+
attr_accessor :call
|
7
|
+
|
8
|
+
before do
|
9
|
+
@call = mock('CallContext', :play => nil, :speak => nil)
|
10
|
+
@call.stub!(:input).with(any_args).and_return('')
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should define form and run it" do
|
14
|
+
call_me = i_should_be_called
|
15
|
+
voice_form do
|
16
|
+
field(:my_field) { prompt :play => nil }
|
17
|
+
setup { call_me.call }
|
18
|
+
end
|
19
|
+
start_voice_form(@call)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should call setup block" do
|
23
|
+
call_me = i_should_be_called
|
24
|
+
voice_form do
|
25
|
+
setup { call_me.call }
|
26
|
+
field(:my_field) { prompt :play => nil }
|
27
|
+
end
|
28
|
+
run_form
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should run single form field" do
|
32
|
+
call_me = i_should_be_called
|
33
|
+
|
34
|
+
voice_form do
|
35
|
+
field(:my_field) do
|
36
|
+
prompt :play => nil
|
37
|
+
setup { call_me.call }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
run_form
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should run all form fields" do
|
45
|
+
first_call_me = i_should_be_called
|
46
|
+
second_call_me = i_should_be_called
|
47
|
+
|
48
|
+
voice_form do
|
49
|
+
field(:first_field) do
|
50
|
+
prompt :play => nil
|
51
|
+
setup { first_call_me.call }
|
52
|
+
end
|
53
|
+
field(:second_field) do
|
54
|
+
prompt :play => nil
|
55
|
+
setup { second_call_me.call }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
run_form
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should run do_blocks" do
|
63
|
+
do_block_call_me = i_should_be_called
|
64
|
+
|
65
|
+
voice_form do
|
66
|
+
do_block { do_block_call_me.call }
|
67
|
+
field(:my_field) { prompt :play => nil }
|
68
|
+
end
|
69
|
+
|
70
|
+
run_form
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should run all fields and do_blocks" do
|
74
|
+
field_call_me = i_should_be_called
|
75
|
+
do_block_call_me = i_should_be_called
|
76
|
+
|
77
|
+
voice_form do
|
78
|
+
field(:first_field) do
|
79
|
+
prompt :play => nil
|
80
|
+
setup { field_call_me.call }
|
81
|
+
end
|
82
|
+
do_block { do_block_call_me.call }
|
83
|
+
end
|
84
|
+
|
85
|
+
run_form
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should jump forward in form stack to field in goto" do
|
89
|
+
first_call_me = i_should_be_called
|
90
|
+
do_block_call_me = i_should_not_be_called
|
91
|
+
second_call_me = i_should_be_called
|
92
|
+
|
93
|
+
voice_form do
|
94
|
+
field(:first_field, :attempts => 1) do
|
95
|
+
prompt :play => nil
|
96
|
+
setup { first_call_me.call }
|
97
|
+
failure { form.goto :second_field }
|
98
|
+
end
|
99
|
+
|
100
|
+
do_block { do_block_call_me.call }
|
101
|
+
|
102
|
+
field(:second_field) do
|
103
|
+
prompt :play => nil
|
104
|
+
setup { second_call_me.call }
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
run_form
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should jump back in form stack to goto field and repeat form stack items" do
|
112
|
+
first_call_me = i_should_be_called(2)
|
113
|
+
do_block_call_me = i_should_be_called(2)
|
114
|
+
second_call_me = i_should_be_called(2)
|
115
|
+
|
116
|
+
voice_form do
|
117
|
+
field(:first_field, :attempts => 1) do
|
118
|
+
prompt :play => nil
|
119
|
+
setup { first_call_me.call }
|
120
|
+
end
|
121
|
+
|
122
|
+
do_block { do_block_call_me.call }
|
123
|
+
|
124
|
+
field(:second_field) do
|
125
|
+
prompt :play => nil
|
126
|
+
setup { second_call_me.call }
|
127
|
+
failure {
|
128
|
+
unless @once
|
129
|
+
@once = true
|
130
|
+
form.goto :first_field
|
131
|
+
end
|
132
|
+
}
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
run_form
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should restart form and repeat all form stack items" do
|
140
|
+
first_call_me = i_should_be_called(2)
|
141
|
+
do_block_call_me = i_should_be_called(2)
|
142
|
+
second_call_me = i_should_be_called(2)
|
143
|
+
|
144
|
+
voice_form do
|
145
|
+
field(:first_field, :attempts => 1) do
|
146
|
+
prompt :play => nil
|
147
|
+
setup { first_call_me.call }
|
148
|
+
end
|
149
|
+
|
150
|
+
do_block { do_block_call_me.call }
|
151
|
+
|
152
|
+
field(:second_field) do
|
153
|
+
prompt :play => nil
|
154
|
+
setup { second_call_me.call }
|
155
|
+
failure {
|
156
|
+
unless @once
|
157
|
+
@once = true
|
158
|
+
form.restart
|
159
|
+
end
|
160
|
+
}
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
run_form
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should exit form and not run subsequent fields" do
|
168
|
+
first_call_me = i_should_be_called
|
169
|
+
do_block_call_me = i_should_not_be_called
|
170
|
+
second_call_me = i_should_not_be_called
|
171
|
+
|
172
|
+
voice_form do
|
173
|
+
field(:first_field, :attempts => 1) do
|
174
|
+
prompt :play => nil
|
175
|
+
setup { first_call_me.call }
|
176
|
+
failure { form.exit }
|
177
|
+
end
|
178
|
+
|
179
|
+
do_block { do_block_call_me.call }
|
180
|
+
|
181
|
+
field(:second_field) do
|
182
|
+
prompt :play => nil
|
183
|
+
setup { second_call_me.call }
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
run_form
|
188
|
+
end
|
189
|
+
|
190
|
+
describe "current_field" do
|
191
|
+
it "should be name of current field being run" do
|
192
|
+
voice_form do
|
193
|
+
field(:my_field) do
|
194
|
+
prompt :play => nil
|
195
|
+
setup { @field = form.current_field }
|
196
|
+
end
|
197
|
+
end
|
198
|
+
run_form
|
199
|
+
|
200
|
+
@field.should == :my_field
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should be nil in do_block" do
|
204
|
+
voice_form do
|
205
|
+
field(:my_field) { prompt :play => nil }
|
206
|
+
do_block { @field = form.current_field }
|
207
|
+
end
|
208
|
+
run_form
|
209
|
+
|
210
|
+
@field.should be_nil
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should be nil after form is run" do
|
214
|
+
voice_form do
|
215
|
+
field(:my_field) { prompt :play => nil }
|
216
|
+
end
|
217
|
+
run_form
|
218
|
+
|
219
|
+
form.current_field.should be_nil
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
def voice_form(&block)
|
224
|
+
self.class.voice_form &block
|
225
|
+
options, block = *self.class.voice_form_options
|
226
|
+
self.form = VoiceForm::Form.new(options, &block)
|
227
|
+
end
|
228
|
+
|
229
|
+
def run_form
|
230
|
+
form.run(self)
|
231
|
+
end
|
232
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
$: << File.dirname(__FILE__) + '/../lib'
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'spec'
|
6
|
+
require 'active_support'
|
7
|
+
|
8
|
+
require 'voice_form/form_methods'
|
9
|
+
require 'voice_form/form'
|
10
|
+
require 'voice_form/form_field'
|
11
|
+
|
12
|
+
module SpecHelpers
|
13
|
+
def i_should_be_called(times=1, &block)
|
14
|
+
proc = mock('Proc should be called')
|
15
|
+
proc.should_receive(:call).exactly(times).times.instance_eval(&(block || Proc.new {}))
|
16
|
+
Proc.new { |*args| proc.call(*args) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def i_should_not_be_called(&block)
|
20
|
+
proc = mock('Proc should be called')
|
21
|
+
proc.should_not_receive(:call).instance_eval(&(block || Proc.new {}))
|
22
|
+
Proc.new { |*args| proc.call(*args) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
Spec::Runner.configure do |config|
|
27
|
+
config.include SpecHelpers
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: voice_form
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adam Meehan
|
8
|
+
autorequire: voice_form
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-03-23 00:00:00 +11:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A plugin for Adhearsion to create forms in the style of the VoiceXML form element.
|
17
|
+
email: adam.meehan@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- History.txt
|
24
|
+
files:
|
25
|
+
- MIT-LICENSE
|
26
|
+
- README.markdown
|
27
|
+
- Rakefile
|
28
|
+
- lib/voice_form.rb
|
29
|
+
- lib/voice_form
|
30
|
+
- lib/voice_form/form.rb
|
31
|
+
- lib/voice_form/form_field.rb
|
32
|
+
- lib/voice_form/form_methods.rb
|
33
|
+
- spec/form_field_spec.rb
|
34
|
+
- spec/spec_helper.rb
|
35
|
+
- spec/form_spec.rb
|
36
|
+
- examples/my_component.rb
|
37
|
+
- examples/simon_game_voice_form.rb
|
38
|
+
- History.txt
|
39
|
+
has_rdoc: false
|
40
|
+
homepage: http://github.com/adzap/voice_form
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: "0"
|
51
|
+
version:
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
version:
|
58
|
+
requirements: []
|
59
|
+
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 1.3.1
|
62
|
+
signing_key:
|
63
|
+
specification_version: 2
|
64
|
+
summary: A plugin for Adhearsion to create forms in the style of the VoiceXML form element.
|
65
|
+
test_files: []
|
66
|
+
|