laziness 0.1.5 → 0.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 622956ad7a455f78936d697f1f21cd6cb62c820c
4
- data.tar.gz: c4f4653e0dd6667d43a3ff45f8eab4063b4a1690
3
+ metadata.gz: 353b8c42facc5a505560e6b414990779a3f323cc
4
+ data.tar.gz: c3f63565b0e52a3f6795cf8e0795888ba5cb453a
5
5
  SHA512:
6
- metadata.gz: ecb218a57e2978c4019167a0bb90a72ec9824612035b8e198f29ad3ea000c2f52643c001937e1fabb28ee88d2402013e31fc6517bd560db1064cdb27b6e89d4e
7
- data.tar.gz: 738574f928528f2b953d8da1e8c2bd6e0752038bb9ff732e0ed531283c3c8693041b2159d541f1864a454645401911fd28f1576c3796c070e8b0b4eb571f086c
6
+ metadata.gz: d958f1c1afd12cd0a172e7d44b67c60ad8d35282d029950a301c48ea189ee34099a92f55ca2c1e50e0fc947ef95a48a71bbb8cbe3b153c186a23ce0005a69c50
7
+ data.tar.gz: 8e6f9f9e7f6f03605864daad3dcaf7cd41a9ab045555ef8271b556aa10b2efef8244bc4363952ceafe489657d15265ad9f2e2421a45a6cab32f726782917e583
data/Gemfile.lock CHANGED
@@ -1,7 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- laziness (0.1.5)
4
+ laziness (0.1.6)
5
+ eventmachine
6
+ faye-websocket (>= 0.8.0)
5
7
  hashie
6
8
  httparty
7
9
 
@@ -12,8 +14,12 @@ GEM
12
14
  crack (0.4.2)
13
15
  safe_yaml (~> 1.0.0)
14
16
  diff-lcs (1.2.5)
15
- hashie (3.4.2)
16
- httparty (0.13.5)
17
+ eventmachine (1.0.8)
18
+ faye-websocket (0.10.0)
19
+ eventmachine (>= 0.12.0)
20
+ websocket-driver (>= 0.5.1)
21
+ hashie (3.4.3)
22
+ httparty (0.13.7)
17
23
  json (~> 1.8)
18
24
  multi_xml (>= 0.5.2)
19
25
  json (1.8.3)
@@ -35,6 +41,9 @@ GEM
35
41
  webmock (1.18.0)
36
42
  addressable (>= 2.3.6)
37
43
  crack (>= 0.3.2)
44
+ websocket-driver (0.6.2)
45
+ websocket-extensions (>= 0.1.0)
46
+ websocket-extensions (0.1.2)
38
47
 
39
48
  PLATFORMS
40
49
  ruby
data/README.md CHANGED
@@ -25,7 +25,11 @@ Or install it yourself:
25
25
  gem install laziness
26
26
  ```
27
27
 
28
- ## USAGE
28
+ ## WEB API USAGE
29
+
30
+ The [Slack Web API](https://api.slack.com/web) is made up of HTTP RPC-style methods that allow you to communicate with Slack as yourself via an access token.
31
+
32
+ You start by creating a `Client` with the access token you want to use. You can make calls to each [type](https://api.slack.com/types) using the [methods](https://api.slack.com/methods).
29
33
 
30
34
  ```
31
35
  client = Slack.client(access_token: "your-access-token")
@@ -104,6 +108,12 @@ client.oauth.access(client_id, client_secret, code, redirect_uri) # exchange api
104
108
 
105
109
  ### Presence
106
110
 
111
+ ### RTM
112
+
113
+ ```
114
+ client.rtm.start # get an rtm session back with a url for connecting
115
+ ```
116
+
107
117
  ### Search
108
118
 
109
119
  ### Stars
@@ -116,6 +126,37 @@ client.users.find(user_id) # get info about a specific user
116
126
  client.users.set_active # sets the current user (defined by the access_token) as active
117
127
  ```
118
128
 
129
+ ## REAL TIME API USAGE
130
+
131
+ The [Slack Real Time Messaging API](https://api.slack.com/rtm) is made up of Websocket events that allow you to communicate with Slack as a bot (or yourself) with an access token.
132
+
133
+ You start by creating a `Client` with the access token you want to use (bot or otherwise) and call the `rtm.start` method which will return the websocket url to use. You can make wait for [events](https://api.slack.com/events) and respond to those directly.
134
+
135
+ ```
136
+ client = Slack::Client.new bot_access_token
137
+ session = client.rtm.start
138
+
139
+ # Create a websocket for the session
140
+ ws = Slack::RealTime.new(session)
141
+
142
+ # Respond to open, close, and error events
143
+ ws.on(:error) { |event| print "ERROR OCCURRED (@ #{Time.now}): #{event.inspect}\n" }
144
+ ws.on(:close) { |event| print "CLOSED! (@ #{Time.now}): #{event.inspect}\n" }
145
+
146
+ # Respond to Slack events
147
+ ws.on(:message) do |data|
148
+ print "RECEIVED MESSAGE (@ #{Time.now}): #{data.inspect}\n"
149
+ # Message was placed in the Slack channel
150
+ end
151
+ ws.on(:channel_left) do |data|
152
+ print "SOMEONE LEFT (@ #{Time.now}): #{data.inspect}\n"
153
+ end
154
+ #...
155
+
156
+ # Run the websocket as a client
157
+ ws.run
158
+ ```
159
+
119
160
  ## CONTRIBUTING
120
161
 
121
162
  1. Clone the repository `git clone https://github.com/brilliantfantastic/laziness`
data/laziness.gemspec CHANGED
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.required_ruby_version = '>= 2.0'
22
22
 
23
- spec.add_runtime_dependency('httparty')
23
+ spec.add_runtime_dependency('eventmachine')
24
+ spec.add_runtime_dependency('faye-websocket', '>= 0.8.0')
24
25
  spec.add_runtime_dependency('hashie')
26
+ spec.add_runtime_dependency('httparty')
25
27
  end
@@ -0,0 +1,13 @@
1
+ module Slack
2
+ module API
3
+ class RTM < Base
4
+ def start(simple_latest=false, no_unreads=false)
5
+ parameters = {}
6
+ parameters[:simple_latest] = simple_latest if simple_latest
7
+ parameters[:no_unreads] = no_unreads if no_unreads
8
+ response = request :get, 'rtm.start', parameters
9
+ Slack::Session.parse response
10
+ end
11
+ end
12
+ end
13
+ end
data/lib/laziness/api.rb CHANGED
@@ -5,4 +5,5 @@ require 'laziness/api/auth'
5
5
  require 'laziness/api/channels'
6
6
  require 'laziness/api/groups'
7
7
  require 'laziness/api/oauth'
8
+ require 'laziness/api/rtm'
8
9
  require 'laziness/api/users'
@@ -22,6 +22,10 @@ module Slack
22
22
  @oauth ||= Slack::API::OAuth.new
23
23
  end
24
24
 
25
+ def rtm
26
+ @rtm ||= Slack::API::RTM.new(access_token)
27
+ end
28
+
25
29
  def users
26
30
  @users ||= Slack::API::Users.new(access_token)
27
31
  end
@@ -0,0 +1,41 @@
1
+ require "securerandom"
2
+
3
+ module Slack
4
+ class Message < Base
5
+ def initialize(attributes)
6
+ super
7
+ symbolize_type attributes[:type]
8
+ end
9
+
10
+ class << self
11
+ def generate(attributes)
12
+ id = attributes.delete(:id) || generate_id
13
+ new({ id: id, type: :message }.merge attributes)
14
+ end
15
+
16
+ def generate_id
17
+ SecureRandom.random_number(9999999).to_s
18
+ end
19
+
20
+ def parse(message)
21
+ request = Request.new message
22
+ base = Base.parse request
23
+ new base
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def symbolize_type(type)
30
+ self.type = type.to_sym if type
31
+ end
32
+
33
+ class Request
34
+ attr_reader :body
35
+
36
+ def initialize(body)
37
+ @body = body
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,24 @@
1
+ module Slack
2
+ class Observer
3
+ attr_accessor :topic
4
+ attr_reader :observer, :func, :blk
5
+
6
+ def initialize(topic=nil, observer=nil, func=:update, &blk)
7
+ @topic = topic
8
+ @observer = observer
9
+ @func = func
10
+ @blk = blk
11
+ end
12
+
13
+ def execute(*args)
14
+ blk.call(*args) if blk
15
+ observer.send func, *args if observer && observer.respond_to?(func)
16
+ end
17
+
18
+ def ==(other)
19
+ return false if other.nil?
20
+ self.topic == other.topic && self.blk == other.blk &&
21
+ self.observer == other.observer && self.func == other.func
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,67 @@
1
+ require 'eventmachine'
2
+ require 'faye/websocket'
3
+
4
+ module Slack
5
+ class RealTime
6
+ attr_reader :session
7
+
8
+ def initialize(session)
9
+ @session = session
10
+ @events = Registry.new
11
+ end
12
+
13
+ def broadcast(channel, message, options={})
14
+ attributes = { channel: channel, text: message }.merge(options)
15
+ connection.send Message.generate(attributes).to_json
16
+ end
17
+
18
+ def run(queue=nil, options={})
19
+ EM.run do
20
+ connect(options)
21
+
22
+ connection.on(:open) { |event| EM.defer { @events.notify(:open, event) }}
23
+ connection.on(:message) { |event| send_message(event) }
24
+ connection.on(:close) do |event|
25
+ EM.defer { @events.notify(:close, event) }
26
+ shutdown
27
+ end
28
+ connection.on(:error) { |event| EM.defer { @events.notify(:error, event) }}
29
+
30
+ queue << connection if queue
31
+ end
32
+ end
33
+
34
+ def on(event=nil, handler=nil, func=:update, &blk)
35
+ @events.register event, handler, func, &blk
36
+ self
37
+ end
38
+
39
+ def off(event=nil, handler=nil, func=:update, &blk)
40
+ @events.unregister event, handler, func, &blk
41
+ end
42
+
43
+ def shutdown
44
+ connection.close if connection
45
+ EM.stop if EM.reactor_running?
46
+ @events.clear
47
+ end
48
+
49
+ private
50
+
51
+ attr_reader :connection
52
+
53
+ def connect(options={})
54
+ @connection ||=
55
+ Faye::WebSocket::Client.new(session.url, nil, default_options.merge(options))
56
+ end
57
+
58
+ def default_options
59
+ { ping: 10 }
60
+ end
61
+
62
+ def send_message(event)
63
+ message = Message.parse event.data
64
+ EM.defer { @events.notify(message.type, message) }
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,25 @@
1
+ module Slack
2
+ class Registry
3
+ attr_reader :observers
4
+
5
+ def initialize
6
+ @observers = []
7
+ end
8
+
9
+ def clear
10
+ observers.clear
11
+ end
12
+
13
+ def notify(topic, *args)
14
+ observers.select { |o| o.topic == topic }.map { |o| o.execute(*args) }
15
+ end
16
+
17
+ def register(topic=nil, observer=nil, func=:update, &blk)
18
+ observers << Observer.new(topic, observer, func, &blk)
19
+ end
20
+
21
+ def unregister(topic=nil, observer=nil, func=:update, &blk)
22
+ observers.delete Observer.new(topic, observer, func, &blk)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,4 @@
1
+ module Slack
2
+ class Session < Base
3
+ end
4
+ end
@@ -1,3 +1,3 @@
1
1
  module Slack
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/lib/laziness.rb CHANGED
@@ -6,7 +6,12 @@ require 'laziness/channel'
6
6
  require 'laziness/client'
7
7
  require 'laziness/errors'
8
8
  require 'laziness/group'
9
+ require 'laziness/message'
9
10
  require 'laziness/oauth'
11
+ require 'laziness/observer'
12
+ require 'laziness/real_time'
13
+ require 'laziness/registry'
14
+ require 'laziness/session'
10
15
  require 'laziness/user'
11
16
 
12
17
  module Slack
@@ -0,0 +1,12 @@
1
+ describe Slack::API::RTM do
2
+ let(:access_token) { "12345" }
3
+ subject { Slack::API::RTM.new access_token }
4
+
5
+ describe '.start' do
6
+ it 'returns the rtm session' do
7
+ stub_slack_request :get, "rtm.start?token=#{access_token}", 'rtm_start.json'
8
+ session = subject.start
9
+ expect(session.url).to eq 'wss://example.com'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,25 @@
1
+ describe Slack::Message do
2
+ describe "#parse" do
3
+ it "initializes a new message with a JSON string" do
4
+ message = Slack::Message.parse '{ "id": "1234", "type": "blah" }'
5
+ expect(message).to be_a Slack::Message
6
+ expect(message.id).to eq "1234"
7
+ expect(message.type).to eq :blah
8
+ end
9
+ end
10
+
11
+ describe "#generate" do
12
+ it "generates a new message with a random id and type" do
13
+ message = Slack::Message.generate text: "This is a test"
14
+ expect(message.id).to_not be_empty
15
+ expect(message.type).to eq :message
16
+ expect(message.text).to eq "This is a test"
17
+ end
18
+
19
+ it "can have an id specified" do
20
+ expect(Slack::Message).to_not receive(:generate_id)
21
+ message = Slack::Message.generate id: 12345
22
+ expect(message.id).to eq 12345
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,77 @@
1
+ describe Slack::Observer do
2
+ describe "#execute" do
3
+ it "calls the block" do
4
+ executed = false
5
+ observer = Slack::Observer.new do
6
+ executed = true
7
+ end.execute
8
+ expect(executed).to be_truthy
9
+ end
10
+
11
+ it "calls the method on the observer" do
12
+ @executed = false
13
+ def blah
14
+ @executed = true
15
+ end
16
+ observer = Slack::Observer.new nil, self, :blah
17
+ observer.execute
18
+ expect(@executed).to be_truthy
19
+ end
20
+
21
+ context "with arguments" do
22
+ it "calls the block" do
23
+ arguments = nil
24
+ observer = Slack::Observer.new do |argument1, argument2|
25
+ arguments = [argument1, argument2]
26
+ end.execute(:blah, :bleh)
27
+ expect(arguments).to eq [:blah, :bleh]
28
+ end
29
+
30
+ it "calls the method on the observer" do
31
+ @arguments = nil
32
+ def blah(argument)
33
+ @arguments = argument
34
+ end
35
+ observer = Slack::Observer.new nil, self, :blah
36
+ observer.execute :blah
37
+ expect(@arguments).to eq :blah
38
+ end
39
+ end
40
+ end
41
+
42
+ describe "#==" do
43
+ let(:blk) { -> { puts "blah" } }
44
+ let(:topic) { :topic }
45
+
46
+ it "is equal if the objects have the same topic and blocks" do
47
+ left = Slack::Observer.new topic, &blk
48
+ right = Slack::Observer.new topic, &blk
49
+ expect(left).to eq right
50
+ end
51
+
52
+ it "is equal if the objects have the same topic and observers" do
53
+ left = Slack::Observer.new topic, self
54
+ right = Slack::Observer.new topic, self
55
+ expect(left).to eq right
56
+ end
57
+
58
+ it "is not equal if the topics are different" do
59
+ left = Slack::Observer.new topic, &blk
60
+ right = Slack::Observer.new :blah, &blk
61
+ expect(left).to_not eq right
62
+ end
63
+
64
+ it "is not equal if the blocks are different" do
65
+ other_blk = -> { puts "blah" }
66
+ left = Slack::Observer.new topic, &blk
67
+ right = Slack::Observer.new topic, &other_blk
68
+ expect(left).to_not eq right
69
+ end
70
+
71
+ it "is not equal if the observer methods are different" do
72
+ left = Slack::Observer.new topic, self, :blah
73
+ right = Slack::Observer.new topic, self, :bleh
74
+ expect(left).to_not eq right
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,70 @@
1
+ describe Slack::RealTime do
2
+ let(:session) { double(:session, url: "wss://example.com") }
3
+ let(:queue) { Queue.new }
4
+ subject { Slack::RealTime.new(session) }
5
+
6
+ def with_websocket(subject, queue)
7
+ thread = Thread.new { subject.run(queue, ping: nil) }
8
+ thread.abort_on_exception = true
9
+ yield queue.pop if block_given?
10
+ subject.shutdown
11
+ thread.join
12
+ end
13
+
14
+ it "accepts a session" do
15
+ session = double(:session)
16
+ expect(Slack::RealTime.new(session).session).to eq session
17
+ end
18
+
19
+ describe "#run" do
20
+ it "creates the websocket on the queue" do
21
+ with_websocket(subject, queue) do |ws|
22
+ expect(ws).to be_an_instance_of Faye::WebSocket::Client
23
+ end
24
+ end
25
+ end
26
+
27
+ describe "#on" do
28
+ it "registers an event handler" do
29
+ expect_any_instance_of(Slack::Registry).to \
30
+ receive(:register).with(:message, nil, :update).and_call_original
31
+ subject.on :message
32
+ end
33
+ end
34
+
35
+ describe "#off" do
36
+ it "unregisters an event" do
37
+ expect_any_instance_of(Slack::Registry).to \
38
+ receive(:unregister).with(:open, nil, :update).and_call_original
39
+ subject.off :open
40
+ end
41
+ end
42
+
43
+ describe "#broadcast" do
44
+ before do
45
+ allow(EM).to receive(:defer).and_yield
46
+ allow(SecureRandom).to receive(:random_number).and_return 123
47
+ end
48
+
49
+ it "sends a message to a channel" do
50
+ channel = "C12345"
51
+ payload = { id: "123", type: :message, channel: channel,
52
+ text: "Would you like to play a game?" }
53
+ json = JSON.generate payload
54
+
55
+ with_websocket(subject, queue) do |ws|
56
+ expect(ws).to receive(:send).with json
57
+ subject.broadcast channel, "Would you like to play a game?"
58
+ end
59
+ end
60
+ end
61
+
62
+ describe "#shutdown" do
63
+ it "stops the event loop" do
64
+ expect(EM).to receive(:stop).at_least(:once).and_call_original
65
+ with_websocket(subject, queue) do
66
+ subject.shutdown
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,34 @@
1
+ describe Slack::Registry do
2
+ describe "#register" do
3
+ it "registers the handler with a block" do
4
+ expect { subject.register :topic do end }.to \
5
+ change { subject.observers.count }.by 1
6
+ end
7
+
8
+ it "registers the handler with an object and method" do
9
+ expect { subject.register :topic, self, :blah }.to \
10
+ change { subject.observers.count }.by 1
11
+ end
12
+ end
13
+
14
+ describe "#unregister" do
15
+ it "unregisters the handler with the same block signature" do
16
+ blk = -> { }
17
+ subject.register blk
18
+ expect { subject.unregister blk }.to \
19
+ change { subject.observers.count }.by -1
20
+ end
21
+ end
22
+
23
+ describe "#notify" do
24
+ it "calls the observers that match the topics" do
25
+ topic1_called = false
26
+ topic2_called = false
27
+ subject.register :topic1 do topic1_called = true end
28
+ subject.register :topic2 do topic2_called = true end
29
+ subject.notify :topic1
30
+ expect(topic1_called).to be_truthy
31
+ expect(topic2_called).to be_falsey
32
+ end
33
+ end
34
+ end
data/spec/spec_helper.rb CHANGED
@@ -12,5 +12,8 @@ RSpec.configure do |config|
12
12
  mocks.verify_partial_doubles = true
13
13
  end
14
14
 
15
+ config.filter_run :focus
16
+ config.run_all_when_everything_filtered = true
17
+
15
18
  config.include SlackStubFactory
16
19
  end
@@ -0,0 +1,4 @@
1
+ {
2
+ "ok": true,
3
+ "url": "wss://example.com"
4
+ }
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: laziness
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Wright
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-07 00:00:00.000000000 Z
11
+ date: 2015-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: httparty
14
+ name: eventmachine
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faye-websocket
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.8.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.8.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: hashie
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: httparty
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  description: Laziness wraps the Slack API in a Ruby gem so Ruby programs can easily
42
70
  communicate with the Slack API (http://api.slack.com).
43
71
  email:
@@ -62,6 +90,7 @@ files:
62
90
  - lib/laziness/api/channels.rb
63
91
  - lib/laziness/api/groups.rb
64
92
  - lib/laziness/api/oauth.rb
93
+ - lib/laziness/api/rtm.rb
65
94
  - lib/laziness/api/users.rb
66
95
  - lib/laziness/auth.rb
67
96
  - lib/laziness/base.rb
@@ -69,16 +98,26 @@ files:
69
98
  - lib/laziness/client.rb
70
99
  - lib/laziness/errors.rb
71
100
  - lib/laziness/group.rb
101
+ - lib/laziness/message.rb
72
102
  - lib/laziness/oauth.rb
103
+ - lib/laziness/observer.rb
104
+ - lib/laziness/real_time.rb
105
+ - lib/laziness/registry.rb
106
+ - lib/laziness/session.rb
73
107
  - lib/laziness/user.rb
74
108
  - lib/laziness/version.rb
75
109
  - spec/laziness/api/auth_spec.rb
76
110
  - spec/laziness/api/channels_spec.rb
77
111
  - spec/laziness/api/groups_spec.rb
78
112
  - spec/laziness/api/oauth_spec.rb
113
+ - spec/laziness/api/rtm_spec.rb
79
114
  - spec/laziness/api/users_spec.rb
80
115
  - spec/laziness/client_spec.rb
81
116
  - spec/laziness/errors_spec.rb
117
+ - spec/laziness/message_spec.rb
118
+ - spec/laziness/observer_spec.rb
119
+ - spec/laziness/real_time_spec.rb
120
+ - spec/laziness/registry_spec.rb
82
121
  - spec/spec_helper.rb
83
122
  - spec/support/fixtures/auth_test.json
84
123
  - spec/support/fixtures/channels_info.json
@@ -86,6 +125,7 @@ files:
86
125
  - spec/support/fixtures/groups_info.json
87
126
  - spec/support/fixtures/groups_list.json
88
127
  - spec/support/fixtures/oauth_access.json
128
+ - spec/support/fixtures/rtm_start.json
89
129
  - spec/support/fixtures/successful_response.json
90
130
  - spec/support/fixtures/users_info.json
91
131
  - spec/support/fixtures/users_list.json
@@ -119,9 +159,14 @@ test_files:
119
159
  - spec/laziness/api/channels_spec.rb
120
160
  - spec/laziness/api/groups_spec.rb
121
161
  - spec/laziness/api/oauth_spec.rb
162
+ - spec/laziness/api/rtm_spec.rb
122
163
  - spec/laziness/api/users_spec.rb
123
164
  - spec/laziness/client_spec.rb
124
165
  - spec/laziness/errors_spec.rb
166
+ - spec/laziness/message_spec.rb
167
+ - spec/laziness/observer_spec.rb
168
+ - spec/laziness/real_time_spec.rb
169
+ - spec/laziness/registry_spec.rb
125
170
  - spec/spec_helper.rb
126
171
  - spec/support/fixtures/auth_test.json
127
172
  - spec/support/fixtures/channels_info.json
@@ -129,6 +174,7 @@ test_files:
129
174
  - spec/support/fixtures/groups_info.json
130
175
  - spec/support/fixtures/groups_list.json
131
176
  - spec/support/fixtures/oauth_access.json
177
+ - spec/support/fixtures/rtm_start.json
132
178
  - spec/support/fixtures/successful_response.json
133
179
  - spec/support/fixtures/users_info.json
134
180
  - spec/support/fixtures/users_list.json