bot 0.0.1 → 0.0.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/bot/bot_controller.rb +23 -0
  3. data/lib/bot.rb +7 -1
  4. data/lib/bot/adapter.rb +8 -0
  5. data/lib/bot/adapters/base.rb +15 -0
  6. data/lib/bot/adapters/kik.rb +26 -0
  7. data/lib/bot/adapters/test.rb +19 -0
  8. data/lib/bot/configuration.rb +21 -0
  9. data/lib/bot/engine.rb +4 -0
  10. data/lib/bot/handler.rb +46 -0
  11. data/lib/bot/responder.rb +96 -0
  12. data/lib/bot/responder_chain.rb +15 -0
  13. data/lib/bot/route_extensions.rb +7 -0
  14. data/lib/bot/rspec.rb +23 -0
  15. data/lib/bot/rspec/fixnum_helper.rb +13 -0
  16. data/lib/bot/rspec/matchers.rb +41 -0
  17. data/lib/bot/rspec/syntax.rb +39 -0
  18. data/lib/bot/version.rb +1 -1
  19. data/lib/generators/bot/install/install_generator.rb +24 -0
  20. data/lib/generators/bot/install/templates/application_handler.rb +7 -0
  21. data/lib/generators/bot/install/templates/application_responder.rb +11 -0
  22. data/lib/generators/bot/install/templates/initializer.rb +3 -0
  23. data/lib/generators/bot/responder/responder_generator.rb +25 -0
  24. data/lib/generators/rspec/install_generator.rb +14 -0
  25. data/lib/generators/rspec/responder_generator.rb +14 -0
  26. data/lib/generators/rspec/templates/application_handler_spec.rb +5 -0
  27. data/lib/generators/rspec/templates/responder_spec.rb +17 -0
  28. data/test/dummy/app/bot/application_handler.rb +5 -0
  29. data/test/dummy/app/bot/application_responder.rb +2 -0
  30. data/test/dummy/app/bot/responders/multi.rb +11 -0
  31. data/test/dummy/app/bot/responders/scan.rb +11 -0
  32. data/test/dummy/app/bot/responders/test.rb +11 -0
  33. data/test/dummy/app/bot/responders/text.rb +9 -0
  34. data/test/dummy/config/environments/development.rb +2 -0
  35. data/test/dummy/config/initializers/bot.rb +3 -0
  36. data/test/dummy/config/routes.rb +1 -2
  37. data/test/dummy/db/development.sqlite3 +0 -0
  38. data/test/dummy/db/schema.rb +16 -0
  39. data/test/dummy/db/test.sqlite3 +0 -0
  40. data/test/dummy/log/development.log +4 -0
  41. data/test/dummy/log/test.log +2345 -0
  42. data/test/integration/navigation_test.rb +24 -1
  43. data/test/test_helper.rb +2 -0
  44. metadata +90 -8
  45. data/app/controllers/bot/kik_controller.rb +0 -8
  46. data/config/routes.rb +0 -3
  47. data/lib/bot/message_handler.rb +0 -26
@@ -1,9 +1,32 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class NavigationTest < ActionDispatch::IntegrationTest
4
+ def setup
5
+ Bot::Adapter::Test.empty_messages
6
+ end
7
+
4
8
  test "notify" do
5
- post "/bot/kik-notify"
9
+ post "/bot/notify"
10
+ assert_equal 200, status
11
+
12
+ post "/bot/notify", {"messages"=>[{"body"=>"Hello", "readReceiptRequested"=>true, "from"=>"bnmrrs", "timestamp"=>1452785908454, "type"=>"text", "id"=>"2af0d873-d157-4627-b863-8be11b0dfd86"}]}
13
+ assert_text_response('Hello text!')
14
+ end
15
+
16
+ test "notify special types" do
17
+ post "/bot/notify", {"messages"=>[{"body"=>"Hello", "readReceiptRequested"=>true, "from"=>"bnmrrs", "timestamp"=>1452785908454, "type"=>"scan-data", "id"=>"2af0d873-d157-4627-b863-8be11b0dfd86"}]}
18
+ assert_text_response('Hello scan!')
19
+ end
20
+
21
+ test "notify multi types" do
22
+ post "/bot/notify", {"messages"=>[{"body"=>"multi", "readReceiptRequested"=>true, "from"=>"bnmrrs", "timestamp"=>1452785908454, "type"=>"scan-data", "id"=>"2af0d873-d157-4627-b863-8be11b0dfd86"}]}
23
+ assert_text_response('Hello multi!')
24
+ end
25
+
26
+ def assert_text_response(message)
6
27
  assert_equal 200, status
28
+ assert_equal Bot::Adapter::Test.sent_messages.count, 1
29
+ assert_equal Bot::Adapter::Test.sent_messages.first["body"], message
7
30
  end
8
31
  end
9
32
 
@@ -6,6 +6,8 @@ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db
6
6
  ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
7
7
  require "rails/test_help"
8
8
 
9
+ require 'pry'
10
+
9
11
  # Filter out Minitest backtrace while allowing backtrace from other libraries
10
12
  # to be shown.
11
13
  Minitest.backtrace_filter = Minitest::BacktraceFilter.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Morris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-15 00:00:00.000000000 Z
11
+ date: 2016-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.5
19
+ version: 4.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.2.5
26
+ version: 4.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: sqlite3
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -46,18 +88,44 @@ extensions: []
46
88
  extra_rdoc_files: []
47
89
  files:
48
90
  - Rakefile
49
- - app/controllers/bot/kik_controller.rb
50
- - config/routes.rb
91
+ - app/controllers/bot/bot_controller.rb
51
92
  - lib/bot.rb
93
+ - lib/bot/adapter.rb
94
+ - lib/bot/adapters/base.rb
95
+ - lib/bot/adapters/kik.rb
96
+ - lib/bot/adapters/test.rb
97
+ - lib/bot/configuration.rb
52
98
  - lib/bot/engine.rb
53
- - lib/bot/message_handler.rb
99
+ - lib/bot/handler.rb
100
+ - lib/bot/responder.rb
101
+ - lib/bot/responder_chain.rb
102
+ - lib/bot/route_extensions.rb
103
+ - lib/bot/rspec.rb
104
+ - lib/bot/rspec/fixnum_helper.rb
105
+ - lib/bot/rspec/matchers.rb
106
+ - lib/bot/rspec/syntax.rb
54
107
  - lib/bot/version.rb
108
+ - lib/generators/bot/install/install_generator.rb
109
+ - lib/generators/bot/install/templates/application_handler.rb
110
+ - lib/generators/bot/install/templates/application_responder.rb
111
+ - lib/generators/bot/install/templates/initializer.rb
112
+ - lib/generators/bot/responder/responder_generator.rb
113
+ - lib/generators/rspec/install_generator.rb
114
+ - lib/generators/rspec/responder_generator.rb
115
+ - lib/generators/rspec/templates/application_handler_spec.rb
116
+ - lib/generators/rspec/templates/responder_spec.rb
55
117
  - lib/tasks/bot_builder_tasks.rake
56
118
  - test/bot_test.rb
57
119
  - test/dummy/README.rdoc
58
120
  - test/dummy/Rakefile
59
121
  - test/dummy/app/assets/javascripts/application.js
60
122
  - test/dummy/app/assets/stylesheets/application.css
123
+ - test/dummy/app/bot/application_handler.rb
124
+ - test/dummy/app/bot/application_responder.rb
125
+ - test/dummy/app/bot/responders/multi.rb
126
+ - test/dummy/app/bot/responders/scan.rb
127
+ - test/dummy/app/bot/responders/test.rb
128
+ - test/dummy/app/bot/responders/text.rb
61
129
  - test/dummy/app/controllers/application_controller.rb
62
130
  - test/dummy/app/helpers/application_helper.rb
63
131
  - test/dummy/app/views/layouts/application.html.erb
@@ -75,6 +143,7 @@ files:
75
143
  - test/dummy/config/environments/test.rb
76
144
  - test/dummy/config/initializers/assets.rb
77
145
  - test/dummy/config/initializers/backtrace_silencers.rb
146
+ - test/dummy/config/initializers/bot.rb
78
147
  - test/dummy/config/initializers/cookies_serializer.rb
79
148
  - test/dummy/config/initializers/filter_parameter_logging.rb
80
149
  - test/dummy/config/initializers/inflections.rb
@@ -84,7 +153,10 @@ files:
84
153
  - test/dummy/config/locales/en.yml
85
154
  - test/dummy/config/routes.rb
86
155
  - test/dummy/config/secrets.yml
156
+ - test/dummy/db/development.sqlite3
157
+ - test/dummy/db/schema.rb
87
158
  - test/dummy/db/test.sqlite3
159
+ - test/dummy/log/development.log
88
160
  - test/dummy/log/test.log
89
161
  - test/dummy/public/404.html
90
162
  - test/dummy/public/422.html
@@ -114,11 +186,17 @@ rubyforge_project:
114
186
  rubygems_version: 2.5.1
115
187
  signing_key:
116
188
  specification_version: 4
117
- summary: Your bot bilder
189
+ summary: Your bot builder
118
190
  test_files:
119
191
  - test/bot_test.rb
120
192
  - test/dummy/app/assets/javascripts/application.js
121
193
  - test/dummy/app/assets/stylesheets/application.css
194
+ - test/dummy/app/bot/application_handler.rb
195
+ - test/dummy/app/bot/application_responder.rb
196
+ - test/dummy/app/bot/responders/multi.rb
197
+ - test/dummy/app/bot/responders/scan.rb
198
+ - test/dummy/app/bot/responders/test.rb
199
+ - test/dummy/app/bot/responders/text.rb
122
200
  - test/dummy/app/controllers/application_controller.rb
123
201
  - test/dummy/app/helpers/application_helper.rb
124
202
  - test/dummy/app/views/layouts/application.html.erb
@@ -135,6 +213,7 @@ test_files:
135
213
  - test/dummy/config/environments/test.rb
136
214
  - test/dummy/config/initializers/assets.rb
137
215
  - test/dummy/config/initializers/backtrace_silencers.rb
216
+ - test/dummy/config/initializers/bot.rb
138
217
  - test/dummy/config/initializers/cookies_serializer.rb
139
218
  - test/dummy/config/initializers/filter_parameter_logging.rb
140
219
  - test/dummy/config/initializers/inflections.rb
@@ -145,7 +224,10 @@ test_files:
145
224
  - test/dummy/config/routes.rb
146
225
  - test/dummy/config/secrets.yml
147
226
  - test/dummy/config.ru
227
+ - test/dummy/db/development.sqlite3
228
+ - test/dummy/db/schema.rb
148
229
  - test/dummy/db/test.sqlite3
230
+ - test/dummy/log/development.log
149
231
  - test/dummy/log/test.log
150
232
  - test/dummy/public/404.html
151
233
  - test/dummy/public/422.html
@@ -1,8 +0,0 @@
1
- class Bot::KikController < ActionController::Base
2
- def notify
3
- @responses = Bot::MessageHandler.new.handle(params[:messages]).compact
4
- Rails.logger.error @responses
5
- KIK_CLIENT.send_messages(@responses) if @responses.present?
6
- render json: []
7
- end
8
- end
@@ -1,3 +0,0 @@
1
- Bot::Engine.routes.draw do
2
- post '/kik-notify', to: 'kik#notify'
3
- end
@@ -1,26 +0,0 @@
1
- class Bot::MessageHandler
2
- def handle(messages)
3
- messages.flat_map { |m| handle_message(m) }
4
- end
5
-
6
- def execute_chain(message, responses, user)
7
- responders.each do |responder|
8
- responder = responder.new(message, user, responses, self)
9
- if responder.can_respond_to_type?(message['type']) && responder.respond_to?
10
- responses << responder.handle
11
- break
12
- end
13
- end
14
- responses
15
- end
16
-
17
- protected
18
-
19
- def handle_message(message)
20
- execute_chain(message, [], nil).flatten
21
- end
22
-
23
- def responders
24
- []
25
- end
26
- end