Skip to content

Commit bba9d23

Browse files
authored
Merge pull request #13 from OpenSocket/test
Unit tests for socketclusterclient and commands.txt
2 parents a60ab50 + 71b30b2 commit bba9d23

17 files changed

+637
-19
lines changed

.rspec

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--color

.simplecov

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SimpleCov.start do
2+
add_group 'lib', 'lib'
3+
end

.travis.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
sudo: false
2+
language: ruby
3+
rvm:
4+
- 2.3.3
5+
before_install: gem install bundler -v 1.16.1

Gemfile

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
source "http://rubygems.org"
1+
source "https://rubygems.org"
22

3+
git_source(:github) {|repo_name| "https://github.com/opensocket" }
4+
5+
# Specify your gem's dependencies in socketclusterclient.gemspec
36
gemspec
47

58
gem 'websocket-eventmachine-client'

Gemfile.lock

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
PATH
2+
remote: .
3+
specs:
4+
socketclusterclient (1.0.0)
5+
websocket-eventmachine-client (~> 1.2)
6+
7+
GEM
8+
remote: https://rubygems.org/
9+
specs:
10+
diff-lcs (1.3)
11+
docile (1.3.1)
12+
eventmachine (1.2.7)
13+
json (2.1.0)
14+
rake (10.5.0)
15+
rspec (3.7.0)
16+
rspec-core (~> 3.7.0)
17+
rspec-expectations (~> 3.7.0)
18+
rspec-mocks (~> 3.7.0)
19+
rspec-core (3.7.1)
20+
rspec-support (~> 3.7.0)
21+
rspec-expectations (3.7.0)
22+
diff-lcs (>= 1.2.0, < 2.0)
23+
rspec-support (~> 3.7.0)
24+
rspec-mocks (3.7.0)
25+
diff-lcs (>= 1.2.0, < 2.0)
26+
rspec-support (~> 3.7.0)
27+
rspec-support (3.7.1)
28+
simplecov (0.16.1)
29+
docile (~> 1.1)
30+
json (>= 1.8, < 3)
31+
simplecov-html (~> 0.10.0)
32+
simplecov-html (0.10.2)
33+
websocket (1.2.8)
34+
websocket-eventmachine-base (1.2.0)
35+
eventmachine (~> 1.0)
36+
websocket (~> 1.0)
37+
websocket-native (~> 1.0)
38+
websocket-eventmachine-client (1.2.0)
39+
websocket-eventmachine-base (~> 1.0)
40+
websocket-native (1.0.0)
41+
42+
PLATFORMS
43+
ruby
44+
45+
DEPENDENCIES
46+
bundler (~> 1.16)
47+
rake (~> 10.0)
48+
rspec (~> 3.0)
49+
simplecov
50+
socketclusterclient!
51+
websocket-eventmachine-client
52+
53+
BUNDLED WITH
54+
1.16.1

Rakefile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
require "bundler/gem_tasks"
2+
require "rspec/core/rake_task"
3+
4+
RSpec::Core::RakeTask.new(:spec)
5+
6+
task :default => :spec

bin/console

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env ruby
2+
3+
require "bundler/setup"
4+
require "socketclusterclient"
5+
6+
# You can add fixtures and/or initialization code here to make experimenting
7+
# with your gem easier. You can also use a different console, if you like.
8+
9+
# (If you use this, don't forget to add pry to your Gemfile!)
10+
# require "pry"
11+
# Pry.start
12+
13+
require "irb"
14+
IRB.start(__FILE__)

bin/setup

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
IFS=$'\n\t'
4+
set -vx
5+
6+
bundle install
7+
8+
# Do any other automated setup that you need to do here

lib/socketclusterclient.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
require 'socketclusterclient/version'
2+
13
require_relative './sc_client'
24

35
#
46
# Module SocketclusterClient provides an interface for Socketcluster Client
57
#
68
# @author Maanav Shah <shahmaanav07@gmail.com>
79
#
8-
module SocketclusterClient
10+
module Socketclusterclient
911
end

lib/socketclusterclient/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
module SocketClusterClient
1+
module Socketclusterclient
22
VERSION = '1.0.0'.freeze
33
end

socketclusterclient.gemspec

+25-16
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,32 @@
1-
require 'rake'
21

3-
$LOAD_PATH.push File.expand_path('lib', __dir__)
2+
lib = File.expand_path("../lib", __FILE__)
3+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
44
require 'socketclusterclient/version'
55

6-
Gem::Specification.new do |s|
7-
s.name = 'socketclusterclient'
8-
s.version = SocketClusterClient::VERSION
9-
s.platform = Gem::Platform::RUBY
10-
s.licenses = ['MIT']
11-
s.summary = 'Ruby client for socketcluster'
12-
s.homepage = 'https://socketcluster.io/'
13-
s.description = 'A socketcluster client designed in ruby'
14-
s.email = %w[shahmaanav07@gmail.com piyushwww13@gmail.com sachinshinde7676@gmail.com]
15-
s.authors = ['Maanav Shah', 'Piyush Wani', 'Sachin Shinde']
6+
Gem::Specification.new do |spec|
7+
spec.name = 'socketclusterclient'
8+
spec.version = Socketclusterclient::VERSION
9+
spec.platform = Gem::Platform::RUBY
10+
spec.licenses = ['MIT']
11+
spec.summary = 'Ruby client for socketcluster'
12+
spec.homepage = 'https://socketcluster.io/'
13+
spec.description = 'A socketcluster client designed in ruby'
14+
spec.email = %w[shahmaanav07@gmail.com piyushwww13@gmail.com sachinshinde7676@gmail.com]
15+
spec.authors = ['Maanav Shah', 'Piyush Wani', 'Sachin Shinde']
1616

17-
s.files = Rake::FileList['lib/**/*.rb']
18-
s.require_paths = ['lib']
17+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
18+
f.match(%r{^(test|spec|features)/})
19+
end
20+
spec.bindir = "exe"
21+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22+
spec.require_paths = ["lib"]
1923

20-
s.required_ruby_version = '>= 2.2.0'
24+
spec.required_ruby_version = '>= 2.2.0'
25+
26+
spec.add_development_dependency "bundler", "~> 1.16"
27+
spec.add_development_dependency "rake", "~> 10.0"
28+
spec.add_development_dependency "rspec", "~> 3.0"
29+
spec.add_development_dependency "simplecov"
30+
spec.add_dependency('websocket-eventmachine-client', '~> 1.2')
2131

22-
s.add_dependency('websocket-eventmachine-client', '~> 1.2')
2332
end

spec/lib/data_models_spec.rb

+164
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
require 'spec_helper'
2+
3+
RSpec.describe DataModels do
4+
include DataModels
5+
6+
describe 'data_models' do
7+
context 'get_ack_object' do
8+
let(:error) { 'error' }
9+
let(:data) { { key: 'value' } }
10+
let(:cid) { [*1..6].sample }
11+
12+
before(:each) do
13+
@ack_object = get_ack_object(error, data, cid)
14+
end
15+
16+
it 'should return an ack object of type hash' do
17+
expect(@ack_object.class).to eq(Hash)
18+
end
19+
20+
it 'should return an error, data and cid in ack object' do
21+
expect(@ack_object.keys.include?(:error)).to be(true)
22+
expect(@ack_object[:error]).to eq(error)
23+
expect(@ack_object.keys.include?(:data)).to be(true)
24+
expect(@ack_object[:data]).to eq(data)
25+
expect(@ack_object.keys.include?(:cid)).to be(true)
26+
expect(@ack_object[:cid]).to eq(cid)
27+
end
28+
end
29+
30+
context 'get_emit_object' do
31+
let(:event) { 'event' }
32+
let(:data) { { key: 'value' } }
33+
34+
before(:each) do
35+
@emit_object = get_emit_object(event, data)
36+
end
37+
38+
it 'should return an emit object of type hash' do
39+
expect(@emit_object.class).to eq(Hash)
40+
end
41+
42+
it 'should return an event and data in emit object' do
43+
expect(@emit_object.keys.include?(:event)).to be(true)
44+
expect(@emit_object[:event]).to eq(event)
45+
expect(@emit_object.keys.include?(:data)).to be(true)
46+
expect(@emit_object[:data]).to eq(data)
47+
end
48+
end
49+
50+
context 'get_emit_ack_object' do
51+
let(:event) { 'event' }
52+
let(:data) { { key: 'value' } }
53+
let(:cid) { [*1..6].sample }
54+
55+
before(:each) do
56+
@emit_ack_object = get_emit_ack_object(event, data, cid)
57+
end
58+
59+
it 'should return an emit ack object of type hash' do
60+
expect(@emit_ack_object.class).to eq(Hash)
61+
end
62+
63+
it 'should return an event, data and cid in emit ack object' do
64+
expect(@emit_ack_object.keys.include?(:event)).to be(true)
65+
expect(@emit_ack_object[:event]).to eq(event)
66+
expect(@emit_ack_object.keys.include?(:data)).to be(true)
67+
expect(@emit_ack_object[:data]).to eq(data)
68+
expect(@emit_ack_object.keys.include?(:cid)).to be(true)
69+
expect(@emit_ack_object[:cid]).to eq(cid)
70+
end
71+
end
72+
73+
context 'get_handshake_object' do
74+
let(:cid) { [*1..6].sample }
75+
76+
before(:each) do
77+
@handshake_object = get_handshake_object(cid)
78+
end
79+
80+
it 'should return a handshake object of type hash' do
81+
expect(@handshake_object.class).to eq(Hash)
82+
end
83+
84+
it 'should return an event, data and cid in handshake object' do
85+
expect(@handshake_object.keys.include?(:event)).to be(true)
86+
expect(@handshake_object[:event]).to eq('#handshake')
87+
expect(@handshake_object.keys.include?(:data)).to be(true)
88+
expect(@handshake_object[:data].keys.include?(:authToken)).to be(true)
89+
expect(@handshake_object.keys.include?(:cid)).to be(true)
90+
expect(@handshake_object[:cid]).to eq(cid)
91+
end
92+
end
93+
94+
context 'get_publish_object' do
95+
let(:channel) { 'channel' }
96+
let(:data) { { key: 'value' } }
97+
let(:cid) { [*1..6].sample }
98+
99+
before(:each) do
100+
@publish_object = get_publish_object(channel, data, cid)
101+
end
102+
103+
it 'should return a publish object of type hash' do
104+
expect(@publish_object.class).to eq(Hash)
105+
end
106+
107+
it 'should return an event, channel, data and cid in publish object' do
108+
expect(@publish_object.keys.include?(:event)).to be(true)
109+
expect(@publish_object[:event]).to eq('#publish')
110+
expect(@publish_object.keys.include?(:data)).to be(true)
111+
expect(@publish_object[:data].keys.include?(:channel)).to be(true)
112+
expect(@publish_object[:data].class).to eq(Hash)
113+
expect(@publish_object.keys.include?(:cid)).to be(true)
114+
expect(@publish_object[:cid]).to be(cid)
115+
end
116+
end
117+
118+
context 'get_subscribe_object' do
119+
let(:channel) { 'channel' }
120+
let(:cid) { [*1..6].sample }
121+
122+
before(:each) do
123+
@subscribe_object = get_subscribe_object(channel, cid)
124+
end
125+
126+
it 'should return a subscribe object of type hash' do
127+
expect(@subscribe_object.class).to eq(Hash)
128+
end
129+
130+
it 'should return an event, data, channel and cid in subscribe object' do
131+
expect(@subscribe_object.keys.include?(:event)).to be(true)
132+
expect(@subscribe_object[:event]).to eq('#subscribe')
133+
expect(@subscribe_object[:data].class).to eq(Hash)
134+
expect(@subscribe_object.keys.include?(:data)).to be(true)
135+
expect(@subscribe_object[:data].keys.include?(:channel)).to be(true)
136+
expect(@subscribe_object[:data][:channel]).to eq(channel)
137+
expect(@subscribe_object.keys.include?(:cid)).to be(true)
138+
expect(@subscribe_object[:cid]).to be(cid)
139+
end
140+
end
141+
142+
context 'get_unsubscribe_object' do
143+
let(:channel) { 'channel' }
144+
let(:cid) { [*1..6].sample }
145+
146+
before(:each) do
147+
@unsubscribe_object = get_unsubscribe_object(channel, cid)
148+
end
149+
150+
it 'should return an unsubscribe object of type hash' do
151+
expect(@unsubscribe_object.class).to eq(Hash)
152+
end
153+
154+
it 'should return an event, data and cid in unsubscribe object' do
155+
expect(@unsubscribe_object.keys.include?(:event)).to be(true)
156+
expect(@unsubscribe_object[:event]).to eq('#unsubscribe')
157+
expect(@unsubscribe_object.keys.include?(:data)).to be(true)
158+
expect(@unsubscribe_object[:data]).to eq(channel)
159+
expect(@unsubscribe_object.keys.include?(:cid)).to be(true)
160+
expect(@unsubscribe_object[:cid]).to be(cid)
161+
end
162+
end
163+
end
164+
end

0 commit comments

Comments
 (0)