bot 0.0.1 → 0.0.16

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 (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