adhearsion 2.0.1 → 2.1.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.
Files changed (62) hide show
  1. data/.travis.yml +4 -3
  2. data/CHANGELOG.md +30 -0
  3. data/README.markdown +1 -0
  4. data/adhearsion.gemspec +3 -4
  5. data/bin/ahn +0 -20
  6. data/features/cli_create.feature +1 -1
  7. data/features/cli_restart.feature +25 -1
  8. data/features/cli_start.feature +0 -2
  9. data/features/plugin_generator.feature +66 -15
  10. data/features/support/env.rb +0 -13
  11. data/lib/adhearsion.rb +26 -6
  12. data/lib/adhearsion/call.rb +42 -7
  13. data/lib/adhearsion/call_controller.rb +5 -2
  14. data/lib/adhearsion/call_controller/dial.rb +92 -50
  15. data/lib/adhearsion/call_controller/input.rb +19 -6
  16. data/lib/adhearsion/call_controller/menu_dsl/menu.rb +4 -0
  17. data/lib/adhearsion/call_controller/output.rb +143 -161
  18. data/lib/adhearsion/call_controller/output/abstract_player.rb +30 -0
  19. data/lib/adhearsion/call_controller/output/async_player.rb +26 -0
  20. data/lib/adhearsion/call_controller/output/formatter.rb +81 -0
  21. data/lib/adhearsion/call_controller/output/player.rb +25 -0
  22. data/lib/adhearsion/call_controller/record.rb +19 -2
  23. data/lib/adhearsion/events.rb +3 -0
  24. data/lib/adhearsion/foundation.rb +12 -6
  25. data/lib/adhearsion/foundation/exception_handler.rb +8 -6
  26. data/lib/adhearsion/generators/app/templates/README.md +13 -0
  27. data/lib/adhearsion/generators/app/templates/config/adhearsion.rb +7 -1
  28. data/lib/adhearsion/generators/plugin/plugin_generator.rb +1 -0
  29. data/lib/adhearsion/generators/plugin/templates/plugin-template.gemspec.tt +3 -7
  30. data/lib/adhearsion/generators/plugin/templates/spec/spec_helper.rb.tt +0 -1
  31. data/lib/adhearsion/outbound_call.rb +15 -5
  32. data/lib/adhearsion/punchblock_plugin.rb +13 -2
  33. data/lib/adhearsion/punchblock_plugin/initializer.rb +13 -12
  34. data/lib/adhearsion/router.rb +43 -2
  35. data/lib/adhearsion/router/evented_route.rb +15 -0
  36. data/lib/adhearsion/router/openended_route.rb +16 -0
  37. data/lib/adhearsion/router/route.rb +31 -13
  38. data/lib/adhearsion/router/unaccepting_route.rb +11 -0
  39. data/lib/adhearsion/version.rb +1 -1
  40. data/pre-commit +14 -1
  41. data/spec/adhearsion/call_controller/dial_spec.rb +105 -10
  42. data/spec/adhearsion/call_controller/input_spec.rb +19 -21
  43. data/spec/adhearsion/call_controller/output/async_player_spec.rb +67 -0
  44. data/spec/adhearsion/call_controller/output/formatter_spec.rb +90 -0
  45. data/spec/adhearsion/call_controller/output/player_spec.rb +65 -0
  46. data/spec/adhearsion/call_controller/output_spec.rb +436 -190
  47. data/spec/adhearsion/call_controller/record_spec.rb +49 -6
  48. data/spec/adhearsion/call_controller_spec.rb +10 -2
  49. data/spec/adhearsion/call_spec.rb +138 -0
  50. data/spec/adhearsion/calls_spec.rb +1 -1
  51. data/spec/adhearsion/outbound_call_spec.rb +48 -8
  52. data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +34 -23
  53. data/spec/adhearsion/router/evented_route_spec.rb +34 -0
  54. data/spec/adhearsion/router/openended_route_spec.rb +61 -0
  55. data/spec/adhearsion/router/route_spec.rb +26 -4
  56. data/spec/adhearsion/router/unaccepting_route_spec.rb +72 -0
  57. data/spec/adhearsion/router_spec.rb +107 -2
  58. data/spec/adhearsion_spec.rb +19 -0
  59. data/spec/capture_warnings.rb +28 -21
  60. data/spec/spec_helper.rb +2 -3
  61. data/spec/support/call_controller_test_helpers.rb +31 -30
  62. metadata +32 -29
@@ -27,13 +27,12 @@ end
27
27
 
28
28
  Thread.abort_on_exception = true
29
29
 
30
- UUID.state_file = false
31
-
32
30
  Bundler.require(:default, :test) if defined?(Bundler)
33
31
 
34
32
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
35
33
 
36
34
  RSpec.configure do |config|
35
+ config.treat_symbols_as_metadata_keys_with_true_values = true
37
36
  config.mock_framework = :flexmock
38
37
  config.filter_run :focus => true
39
38
  config.run_all_when_everything_filtered = true
@@ -69,6 +68,6 @@ module MarmaladeIsBetterThanJam
69
68
  end
70
69
 
71
70
  def new_uuid
72
- UUID.new.generate.to_s
71
+ SecureRandom.uuid
73
72
  end
74
73
  alias :random_call_id :new_uuid
@@ -4,48 +4,49 @@ module CallControllerTestHelpers
4
4
  include FlexMock::ArgumentTypes
5
5
 
6
6
  def self.included(test_case)
7
- test_case.let(:call_id) { new_uuid }
8
- test_case.let(:call) { Adhearsion::Call.new }
9
- test_case.let(:block) { nil }
10
-
11
- test_case.subject do
12
- case test_case.describes
13
- when Class
14
- test_case.describes
15
- when Module
16
- Class.new Adhearsion::CallController
17
- end.new call, :doo => :dah, &block
18
- end
7
+ test_case.let(:call_id) { new_uuid }
8
+ test_case.let(:call) { Adhearsion::Call.new }
9
+ test_case.let(:block) { nil }
10
+ test_case.let(:controller) { new_controller test_case.describes }
11
+
12
+ test_case.subject { controller }
19
13
 
20
14
  test_case.before do
21
15
  flexmock subject
16
+ flexmock controller
22
17
  flexmock call, :write_command => true, :id => call_id
23
18
  end
24
19
  end
25
20
 
26
- def expect_message_waiting_for_response(message)
27
- subject.should_receive(:write_and_await_response).once.with(message).and_return message
28
- message.request!
29
- end
30
-
31
- def expect_message_of_type_waiting_for_response(message)
32
- subject.should_receive(:write_and_await_response).once.with(message.class).and_return message
33
- message.request!
34
- end
35
-
36
- def expect_component_execution(component)
37
- subject.should_receive(:execute_component_and_await_completion).once.with(component).and_return(component)
21
+ def new_controller(target = nil)
22
+ case target
23
+ when Class
24
+ raise "Your described class should inherit from Adhearsion::CallController" unless target.ancestors.include?(Adhearsion::CallController)
25
+ target
26
+ when Module, nil
27
+ Class.new Adhearsion::CallController
28
+ end.new call, :doo => :dah, &block
38
29
  end
39
30
 
40
- def mock_with_potential_matches(potential_matches)
41
- Adhearsion::Punchblock::MenuDSL::CalculatedMatch.new :potential_matches => potential_matches
31
+ def expect_message_waiting_for_response(message, fail = false)
32
+ expectation = controller.should_receive(:write_and_await_response).once.with message
33
+ if fail
34
+ expectation.and_raise fail
35
+ else
36
+ expectation.and_return message
37
+ end
42
38
  end
43
39
 
44
- def mock_with_exact_matches(exact_matches)
45
- Adhearsion::Punchblock::MenuDSL::CalculatedMatch.new :exact_matches => exact_matches
40
+ def expect_message_of_type_waiting_for_response(message)
41
+ controller.should_receive(:write_and_await_response).once.with(message.class).and_return message
46
42
  end
47
43
 
48
- def mock_with_potential_and_exact_matches(potential_matches, exact_matches)
49
- Adhearsion::Punchblock::MenuDSL::CalculatedMatch.new :potential_matches => potential_matches, :exact_matches => exact_matches
44
+ def expect_component_execution(component, fail = false)
45
+ expectation = controller.should_receive(:execute_component_and_await_completion).once.with(component)
46
+ if fail
47
+ expectation.and_raise fail
48
+ else
49
+ expectation.and_return component
50
+ end
50
51
  end
51
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adhearsion
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-06-04 00:00:00.000000000 Z
15
+ date: 2012-08-07 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activesupport
@@ -213,7 +213,7 @@ dependencies:
213
213
  requirements:
214
214
  - - ~>
215
215
  - !ruby/object:Gem::Version
216
- version: '1.0'
216
+ version: '1.4'
217
217
  type: :runtime
218
218
  prerelease: false
219
219
  version_requirements: !ruby/object:Gem::Requirement
@@ -221,7 +221,7 @@ dependencies:
221
221
  requirements:
222
222
  - - ~>
223
223
  - !ruby/object:Gem::Version
224
- version: '1.0'
224
+ version: '1.4'
225
225
  - !ruby/object:Gem::Dependency
226
226
  name: rake
227
227
  requirement: !ruby/object:Gem::Requirement
@@ -270,38 +270,22 @@ dependencies:
270
270
  - - ! '>='
271
271
  - !ruby/object:Gem::Version
272
272
  version: '0'
273
- - !ruby/object:Gem::Dependency
274
- name: uuid
275
- requirement: !ruby/object:Gem::Requirement
276
- none: false
277
- requirements:
278
- - - ! '>='
279
- - !ruby/object:Gem::Version
280
- version: '0'
281
- type: :runtime
282
- prerelease: false
283
- version_requirements: !ruby/object:Gem::Requirement
284
- none: false
285
- requirements:
286
- - - ! '>='
287
- - !ruby/object:Gem::Version
288
- version: '0'
289
273
  - !ruby/object:Gem::Dependency
290
274
  name: aruba
291
275
  requirement: !ruby/object:Gem::Requirement
292
276
  none: false
293
277
  requirements:
294
- - - ! '>='
278
+ - - ~>
295
279
  - !ruby/object:Gem::Version
296
- version: '0'
280
+ version: '0.4'
297
281
  type: :development
298
282
  prerelease: false
299
283
  version_requirements: !ruby/object:Gem::Requirement
300
284
  none: false
301
285
  requirements:
302
- - - ! '>='
286
+ - - ~>
303
287
  - !ruby/object:Gem::Version
304
- version: '0'
288
+ version: '0.4'
305
289
  - !ruby/object:Gem::Dependency
306
290
  name: ci_reporter
307
291
  requirement: !ruby/object:Gem::Requirement
@@ -389,7 +373,7 @@ dependencies:
389
373
  requirements:
390
374
  - - ~>
391
375
  - !ruby/object:Gem::Version
392
- version: 2.7.0
376
+ version: 2.11.0
393
377
  type: :development
394
378
  prerelease: false
395
379
  version_requirements: !ruby/object:Gem::Requirement
@@ -397,7 +381,7 @@ dependencies:
397
381
  requirements:
398
382
  - - ~>
399
383
  - !ruby/object:Gem::Version
400
- version: 2.7.0
384
+ version: 2.11.0
401
385
  - !ruby/object:Gem::Dependency
402
386
  name: ruby_gntp
403
387
  requirement: !ruby/object:Gem::Requirement
@@ -512,6 +496,10 @@ files:
512
496
  - lib/adhearsion/call_controller/menu_dsl/range_match_calculator.rb
513
497
  - lib/adhearsion/call_controller/menu_dsl/string_match_calculator.rb
514
498
  - lib/adhearsion/call_controller/output.rb
499
+ - lib/adhearsion/call_controller/output/abstract_player.rb
500
+ - lib/adhearsion/call_controller/output/async_player.rb
501
+ - lib/adhearsion/call_controller/output/formatter.rb
502
+ - lib/adhearsion/call_controller/output/player.rb
515
503
  - lib/adhearsion/call_controller/record.rb
516
504
  - lib/adhearsion/call_controller/utility.rb
517
505
  - lib/adhearsion/calls.rb
@@ -567,7 +555,10 @@ files:
567
555
  - lib/adhearsion/punchblock_plugin.rb
568
556
  - lib/adhearsion/punchblock_plugin/initializer.rb
569
557
  - lib/adhearsion/router.rb
558
+ - lib/adhearsion/router/evented_route.rb
559
+ - lib/adhearsion/router/openended_route.rb
570
560
  - lib/adhearsion/router/route.rb
561
+ - lib/adhearsion/router/unaccepting_route.rb
571
562
  - lib/adhearsion/rspec.rb
572
563
  - lib/adhearsion/script_ahn_loader.rb
573
564
  - lib/adhearsion/tasks.rb
@@ -587,6 +578,9 @@ files:
587
578
  - spec/adhearsion/call_controller/menu_dsl/menu_spec.rb
588
579
  - spec/adhearsion/call_controller/menu_dsl/range_match_calculator_spec.rb
589
580
  - spec/adhearsion/call_controller/menu_dsl/string_match_calculator_spec.rb
581
+ - spec/adhearsion/call_controller/output/async_player_spec.rb
582
+ - spec/adhearsion/call_controller/output/formatter_spec.rb
583
+ - spec/adhearsion/call_controller/output/player_spec.rb
590
584
  - spec/adhearsion/call_controller/output_spec.rb
591
585
  - spec/adhearsion/call_controller/record_spec.rb
592
586
  - spec/adhearsion/call_controller/utility_spec.rb
@@ -604,7 +598,10 @@ files:
604
598
  - spec/adhearsion/process_spec.rb
605
599
  - spec/adhearsion/punchblock_plugin/initializer_spec.rb
606
600
  - spec/adhearsion/punchblock_plugin_spec.rb
601
+ - spec/adhearsion/router/evented_route_spec.rb
602
+ - spec/adhearsion/router/openended_route_spec.rb
607
603
  - spec/adhearsion/router/route_spec.rb
604
+ - spec/adhearsion/router/unaccepting_route_spec.rb
608
605
  - spec/adhearsion/router_spec.rb
609
606
  - spec/adhearsion_spec.rb
610
607
  - spec/capture_warnings.rb
@@ -627,7 +624,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
627
624
  version: '0'
628
625
  segments:
629
626
  - 0
630
- hash: 1504459880693852795
627
+ hash: -4451670451160143860
631
628
  required_rubygems_version: !ruby/object:Gem::Requirement
632
629
  none: false
633
630
  requirements:
@@ -636,10 +633,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
636
633
  version: '0'
637
634
  segments:
638
635
  - 0
639
- hash: 1504459880693852795
636
+ hash: -4451670451160143860
640
637
  requirements: []
641
638
  rubyforge_project:
642
- rubygems_version: 1.8.21
639
+ rubygems_version: 1.8.24
643
640
  signing_key:
644
641
  specification_version: 3
645
642
  summary: Adhearsion, open-source telephony development framework
@@ -669,6 +666,9 @@ test_files:
669
666
  - spec/adhearsion/call_controller/menu_dsl/menu_spec.rb
670
667
  - spec/adhearsion/call_controller/menu_dsl/range_match_calculator_spec.rb
671
668
  - spec/adhearsion/call_controller/menu_dsl/string_match_calculator_spec.rb
669
+ - spec/adhearsion/call_controller/output/async_player_spec.rb
670
+ - spec/adhearsion/call_controller/output/formatter_spec.rb
671
+ - spec/adhearsion/call_controller/output/player_spec.rb
672
672
  - spec/adhearsion/call_controller/output_spec.rb
673
673
  - spec/adhearsion/call_controller/record_spec.rb
674
674
  - spec/adhearsion/call_controller/utility_spec.rb
@@ -686,7 +686,10 @@ test_files:
686
686
  - spec/adhearsion/process_spec.rb
687
687
  - spec/adhearsion/punchblock_plugin/initializer_spec.rb
688
688
  - spec/adhearsion/punchblock_plugin_spec.rb
689
+ - spec/adhearsion/router/evented_route_spec.rb
690
+ - spec/adhearsion/router/openended_route_spec.rb
689
691
  - spec/adhearsion/router/route_spec.rb
692
+ - spec/adhearsion/router/unaccepting_route_spec.rb
690
693
  - spec/adhearsion/router_spec.rb
691
694
  - spec/adhearsion_spec.rb
692
695
  - spec/capture_warnings.rb