hipchat_searcher 0.0.1 → 0.0.2
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 +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +14 -6
- data/bin/hps +21 -5
- data/hipchat_searcher.gemspec +1 -0
- data/lib/hipchat_searcher/command.rb +11 -3
- data/lib/hipchat_searcher/options.rb +13 -36
- data/lib/hipchat_searcher/room.rb +1 -1
- data/lib/hipchat_searcher/searcher.rb +51 -13
- data/lib/hipchat_searcher/version.rb +1 -1
- data/spec/lib/hipchat_searcher/searcher_spec.rb +73 -12
- metadata +17 -4
- data/spec/lib/hipchat_searcher/options_spec.rb +0 -112
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69cc10fd7c58d30a07200b217825b20c7b445a0b
|
4
|
+
data.tar.gz: 4dc3f4a9387f9111ee4fb06362a750ad8e1ef00e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5118535bdbe1af759eb832d8bae11f94bc4f156110aab3086a0cf58440dcdef605fa3ab8629c1fbcbb0528962a125fb658e166d95863fd5467e97d40b3ec8982
|
7
|
+
data.tar.gz: f5dbf4a436b03cbcc865d22e01ee7dbd030da587b75a0ab499bca5ab38b78a17b42b727b4983434e9ed722f5d4955d8156c7d63bb5b7a9825677bb6dd8c74750
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# 0.0.2
|
2
|
+
### Feature
|
3
|
+
* Enable to search Regexp on ignorecase.
|
4
|
+
* When specify -u option, It becomes searchable in the specified user.
|
5
|
+
* Specify multiple room name for using -r option.
|
6
|
+
|
7
|
+
### Bugfix
|
8
|
+
* Specify -r option for japanese room name.
|
9
|
+
|
10
|
+
# 0.0.1
|
11
|
+
* Initial release on 2014-06-22.
|
data/README.md
CHANGED
@@ -13,8 +13,8 @@ You will be able to search hipchat log more easily.
|
|
13
13
|
|
14
14
|
## Prepare
|
15
15
|
|
16
|
-
* `hitchat_searcher` requires access token on [hipchat](https://www.hipchat.com/). so you visit [hipchat](https://www.hipchat.com/)
|
17
|
-
*
|
16
|
+
* `hitchat_searcher` requires access token on [hipchat](https://www.hipchat.com/). so you visit [hipchat](https://www.hipchat.com/), login and get access token.
|
17
|
+
* If you get access token, execute command like this.
|
18
18
|
|
19
19
|
```
|
20
20
|
echo {access_token} > ~/.hps
|
@@ -22,25 +22,33 @@ echo {access_token} > ~/.hps
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
`hipchat_searcher` search for a regular expression the words that you specify.
|
26
|
+
|
27
|
+
* Search the words in all room
|
26
28
|
|
27
29
|
```
|
28
30
|
hps word
|
29
31
|
```
|
30
32
|
|
31
|
-
* Search
|
33
|
+
* Search the words in specified room
|
32
34
|
|
33
35
|
```
|
34
36
|
hps word -r room-name
|
35
37
|
```
|
36
38
|
|
37
|
-
* Search
|
39
|
+
* Search the words that specified user talks
|
40
|
+
|
41
|
+
```
|
42
|
+
hps word -u user-name
|
43
|
+
```
|
44
|
+
|
45
|
+
* Search the words since target date
|
38
46
|
|
39
47
|
```
|
40
48
|
hps word -d 2014-01-01
|
41
49
|
```
|
42
50
|
|
43
|
-
* Search
|
51
|
+
* Search the words in archived room
|
44
52
|
|
45
53
|
```
|
46
54
|
hps word -a
|
data/bin/hps
CHANGED
@@ -1,10 +1,26 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
3
3
|
require 'hipchat_searcher'
|
4
|
-
require '
|
4
|
+
require 'slop'
|
5
|
+
|
6
|
+
hash = Slop.parse(help: true) do
|
7
|
+
banner 'Usage: hps [searchword] [options]'
|
8
|
+
|
9
|
+
HipchatSearcher::Options.with_value.each do |opt|
|
10
|
+
on *opt
|
11
|
+
end
|
12
|
+
|
13
|
+
HipchatSearcher::Options.with_boolean.each do |opt|
|
14
|
+
on *opt
|
15
|
+
end
|
16
|
+
|
17
|
+
on '-v', '--version', 'Print the version' do
|
18
|
+
puts HipchatSearcher::VERSION
|
19
|
+
exit 0
|
20
|
+
end
|
21
|
+
end.to_hash
|
5
22
|
|
6
|
-
pattern = ARGV.shift
|
7
|
-
hash = ARGV.getopts(HipchatSearcher::Options.short_names, *HipchatSearcher::Options.long_names)
|
8
23
|
options = HipchatSearcher::Options.new(hash)
|
9
|
-
|
10
|
-
command
|
24
|
+
|
25
|
+
# run command
|
26
|
+
HipchatSearcher::Command.run(ARGV.shift, options)
|
data/hipchat_searcher.gemspec
CHANGED
@@ -6,12 +6,20 @@ module HipchatSearcher
|
|
6
6
|
@config = Config.new
|
7
7
|
end
|
8
8
|
|
9
|
+
def self.run(pattern, options)
|
10
|
+
new(pattern, options).run
|
11
|
+
end
|
12
|
+
|
9
13
|
def run
|
14
|
+
all_room = Room.new(@config.token, @options.room_options).all_room
|
15
|
+
|
10
16
|
rooms = if @options.room?
|
11
|
-
|
17
|
+
room_names = @options.room.split(',')
|
18
|
+
all_room.select do |r|
|
19
|
+
room_names.include?(r.name)
|
20
|
+
end
|
12
21
|
else
|
13
|
-
|
14
|
-
room.room
|
22
|
+
all_room
|
15
23
|
end
|
16
24
|
|
17
25
|
message = Message.new(@config.token, @options.message_options)
|
@@ -2,22 +2,6 @@ require 'hashie/mash'
|
|
2
2
|
|
3
3
|
module HipchatSearcher
|
4
4
|
class Options < Hashie::Mash
|
5
|
-
def archived
|
6
|
-
self['a'] || self['archived']
|
7
|
-
end
|
8
|
-
|
9
|
-
def archived?
|
10
|
-
!!self['a'] || !!self['archived']
|
11
|
-
end
|
12
|
-
|
13
|
-
def date
|
14
|
-
self['d'] || self['date']
|
15
|
-
end
|
16
|
-
|
17
|
-
def date?
|
18
|
-
!!self['d'] || !!self['date']
|
19
|
-
end
|
20
|
-
|
21
5
|
def message_options
|
22
6
|
date? ? { date: date } : {}
|
23
7
|
end
|
@@ -26,33 +10,26 @@ module HipchatSearcher
|
|
26
10
|
archived? ? { 'include-archived' => true } : {}
|
27
11
|
end
|
28
12
|
|
29
|
-
def room
|
30
|
-
self['r'] || self['room']
|
31
|
-
end
|
32
|
-
|
33
|
-
def room?
|
34
|
-
!!self['r'] || !!self['room']
|
35
|
-
end
|
36
|
-
|
37
|
-
def user
|
38
|
-
self['u'] || self['user']
|
39
|
-
end
|
40
|
-
|
41
|
-
def user?
|
42
|
-
!!self['u'] || !!self['user']
|
43
|
-
end
|
44
|
-
|
45
13
|
def search_options
|
46
14
|
user? ? { user: user } : {}
|
47
15
|
end
|
48
16
|
|
49
17
|
class << self
|
50
|
-
|
51
|
-
|
18
|
+
|
19
|
+
# [shortname, longname, description]
|
20
|
+
def with_value
|
21
|
+
[
|
22
|
+
['r=', 'room=', 'Search only the log of the room that you specified'],
|
23
|
+
['u=', 'user=', 'Search only the log that specified user talk'],
|
24
|
+
['d=', 'date=', 'Search the log since specified date'],
|
25
|
+
]
|
52
26
|
end
|
53
27
|
|
54
|
-
|
55
|
-
|
28
|
+
# [shortname, longname, description]
|
29
|
+
def with_boolean
|
30
|
+
[
|
31
|
+
['a', 'archived', 'Include in the search of the room that have been archived']
|
32
|
+
]
|
56
33
|
end
|
57
34
|
end
|
58
35
|
end
|
@@ -12,12 +12,29 @@ module HipchatSearcher
|
|
12
12
|
new(result, options).search(pattern)
|
13
13
|
end
|
14
14
|
|
15
|
+
def contents(pattern, item)
|
16
|
+
date = date(item)
|
17
|
+
message = message(pattern, item)
|
18
|
+
|
19
|
+
"%s\n%s\n\n" % [date, message]
|
20
|
+
end
|
21
|
+
|
22
|
+
def puts_search_result(pattern, item)
|
23
|
+
contents = contents(pattern, item)
|
24
|
+
if option_user?
|
25
|
+
if @options[:user] == user_name(item)
|
26
|
+
puts_contents(contents)
|
27
|
+
end
|
28
|
+
else
|
29
|
+
puts_contents(contents)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
15
33
|
def search(pattern)
|
16
|
-
pattern = Regexp.new(pattern)
|
34
|
+
pattern = Regexp.new(pattern, Regexp::IGNORECASE)
|
17
35
|
|
18
36
|
@result.items.each do |item|
|
19
37
|
if pattern =~ item.message
|
20
|
-
@print_room ? nil : puts_room
|
21
38
|
puts_search_result(pattern, item)
|
22
39
|
end
|
23
40
|
end
|
@@ -25,24 +42,45 @@ module HipchatSearcher
|
|
25
42
|
nil
|
26
43
|
end
|
27
44
|
|
28
|
-
|
29
|
-
|
45
|
+
private
|
46
|
+
|
47
|
+
def date(item)
|
48
|
+
" Date: #{item.date}"
|
49
|
+
end
|
50
|
+
|
51
|
+
def message(pattern, item)
|
52
|
+
msg = item.message.gsub(pattern) do |matched|
|
53
|
+
matched.colorize(:red)
|
54
|
+
end
|
55
|
+
|
56
|
+
name = user_name(item)
|
57
|
+
" @#{name}" + ': ' + msg
|
58
|
+
end
|
59
|
+
|
60
|
+
def option_user?
|
61
|
+
!!@options[:user]
|
62
|
+
end
|
63
|
+
|
64
|
+
def print_room?
|
65
|
+
!!@print_room
|
30
66
|
end
|
31
67
|
|
32
68
|
def puts_room
|
33
69
|
@print_room = true
|
34
|
-
puts room
|
70
|
+
puts room.underline
|
35
71
|
end
|
36
72
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
|
73
|
+
def puts_contents(contents)
|
74
|
+
print_room? ? nil : puts_room
|
75
|
+
puts contents
|
76
|
+
end
|
77
|
+
|
78
|
+
def room
|
79
|
+
@result.room
|
80
|
+
end
|
41
81
|
|
42
|
-
|
43
|
-
|
44
|
-
msg = " @#{name}" + ': ' + msg
|
45
|
-
puts "%s\n%s\n\n" % [date, msg]
|
82
|
+
def user_name(item)
|
83
|
+
item.from.mention_name rescue item.from
|
46
84
|
end
|
47
85
|
end
|
48
86
|
end
|
@@ -17,9 +17,9 @@ describe HipchatSearcher::Searcher do
|
|
17
17
|
r
|
18
18
|
end
|
19
19
|
let(:search_result) do
|
20
|
-
"
|
20
|
+
"\e[4;39;49mJoestars\e[0m" + "\n" + \
|
21
21
|
" Date: 2014-05-30T01:38:16.741565+00:00" + "\n" + \
|
22
|
-
" @jotaro: \e[
|
22
|
+
" @jotaro: \e[0;31;49myare\e[0m\e[0;31;49myare\e[0m daze" + "\n" + \
|
23
23
|
"\n"
|
24
24
|
end
|
25
25
|
|
@@ -41,12 +41,12 @@ describe HipchatSearcher::Searcher do
|
|
41
41
|
r
|
42
42
|
end
|
43
43
|
let(:search_result) do
|
44
|
-
"
|
44
|
+
"\e[4;39;49mJoestars\e[0m" + "\n" + \
|
45
45
|
" Date: 2014-05-30T01:38:16.741565+00:00" + "\n" + \
|
46
|
-
" @jotaro: yareyare da\e[
|
46
|
+
" @jotaro: yareyare da\e[0;31;49mze\e[0m" + "\n" \
|
47
47
|
"\n" + \
|
48
48
|
" Date: 2014-06-09T11:29:10.209014+00:00" + "\n" + \
|
49
|
-
" @polnareff: a... arinomama ima okotta koto wo hanasu \e[
|
49
|
+
" @polnareff: a... arinomama ima okotta koto wo hanasu \e[0;31;49mze\e[0m" + "\n" + \
|
50
50
|
"\n"
|
51
51
|
end
|
52
52
|
|
@@ -65,7 +65,7 @@ describe HipchatSearcher::Searcher do
|
|
65
65
|
let(:response) { File.read(File.join('spec', 'data', 'item-list.json')) }
|
66
66
|
|
67
67
|
it { should be_nil }
|
68
|
-
|
68
|
+
p
|
69
69
|
it 'should no output to stdout' do
|
70
70
|
expect do
|
71
71
|
subject
|
@@ -90,7 +90,7 @@ describe HipchatSearcher::Searcher do
|
|
90
90
|
|
91
91
|
describe '#puts_search_result' do
|
92
92
|
context 'when only person in room' do
|
93
|
-
subject { searcher(double(:result)).puts_search_result(pattern, item) }
|
93
|
+
subject { searcher(double(:result, room: 'Joestars')).puts_search_result(pattern, item) }
|
94
94
|
|
95
95
|
let(:pattern) { Regexp.new('yare') }
|
96
96
|
let(:item) do
|
@@ -100,11 +100,13 @@ describe HipchatSearcher::Searcher do
|
|
100
100
|
end
|
101
101
|
|
102
102
|
let(:search_result) do
|
103
|
+
"\e[4;39;49mJoestars\e[0m" + "\n" + \
|
103
104
|
" Date: 2014-05-30T01:38:16.741565+00:00" + "\n" + \
|
104
|
-
" @jotaro: \e[
|
105
|
+
" @jotaro: \e[0;31;49myare\e[0m\e[0;31;49myare\e[0m daze" + "\n" + \
|
106
|
+
"\n"
|
105
107
|
end
|
106
108
|
|
107
|
-
it 'should print
|
109
|
+
it 'should print message of search result' do
|
108
110
|
expect do
|
109
111
|
subject
|
110
112
|
end.to output(search_result).to_stdout
|
@@ -112,7 +114,7 @@ describe HipchatSearcher::Searcher do
|
|
112
114
|
end
|
113
115
|
|
114
116
|
context 'when person and bot in room' do
|
115
|
-
subject { searcher(double(:result)).puts_search_result(pattern, item) }
|
117
|
+
subject { searcher(double(:result, room: 'Joestars')).puts_search_result(pattern, item) }
|
116
118
|
|
117
119
|
let(:pattern) { Regexp.new('mgi166') }
|
118
120
|
let(:item) do
|
@@ -122,15 +124,74 @@ describe HipchatSearcher::Searcher do
|
|
122
124
|
end
|
123
125
|
|
124
126
|
let(:search_result) do
|
127
|
+
"\e[4;39;49mJoestars\e[0m" + "\n" + \
|
125
128
|
' Date: 2014-06-17T08:14:48.305590+00:00' + "\n" + \
|
126
|
-
" @GitHub: \e[
|
129
|
+
" @GitHub: \e[0;31;49mmgi166\e[0m commented on pull request 118 ..." + "\n\n"
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'should print message of search result' do
|
133
|
+
expect do
|
134
|
+
subject
|
135
|
+
end.to output(search_result).to_stdout
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "when user options specified but the user don't speak this message" do
|
140
|
+
subject { described_class.new(double(:result, room: 'Joestars'), user: 'jotaro').puts_search_result(pattern, item) }
|
141
|
+
|
142
|
+
let(:pattern) { 'ze' }
|
143
|
+
let(:item) do
|
144
|
+
src = File.read(File.join('spec', 'data', 'item-list.json'))
|
145
|
+
hash = JSON.parse(src)
|
146
|
+
::Hashie::Mash.new(hash).items.last
|
147
|
+
end
|
148
|
+
|
149
|
+
it 'should not print message' do
|
150
|
+
expect do
|
151
|
+
subject
|
152
|
+
end.to output('').to_stdout
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
context "when user options specified and the user speak this message" do
|
157
|
+
subject { described_class.new(double(:result, room: 'Joestars'), user: 'jotaro').puts_search_result(pattern, item) }
|
158
|
+
|
159
|
+
let(:pattern) { 'ze' }
|
160
|
+
let(:item) do
|
161
|
+
src = File.read(File.join('spec', 'data', 'item-list.json'))
|
162
|
+
hash = JSON.parse(src)
|
163
|
+
::Hashie::Mash.new(hash).items.first
|
164
|
+
end
|
165
|
+
|
166
|
+
let(:search_result) do
|
167
|
+
"\e[4;39;49mJoestars\e[0m" + "\n" + \
|
168
|
+
" Date: 2014-05-30T01:38:16.741565+00:00" + "\n" + \
|
169
|
+
" @jotaro: yareyare da\e[0;31;49mze\e[0m" + "\n" \
|
170
|
+
"\n"
|
127
171
|
end
|
128
172
|
|
129
|
-
it 'should print
|
173
|
+
it 'should print message for specified user' do
|
130
174
|
expect do
|
131
175
|
subject
|
132
176
|
end.to output(search_result).to_stdout
|
133
177
|
end
|
134
178
|
end
|
135
179
|
end
|
180
|
+
|
181
|
+
describe '#contents' do
|
182
|
+
subject { searcher(double(:result)).contents(pattern, item) }
|
183
|
+
|
184
|
+
let(:pattern) { 'ze' }
|
185
|
+
let(:item) do
|
186
|
+
src = File.read(File.join('spec', 'data', 'item-list.json'))
|
187
|
+
hash = JSON.parse(src)
|
188
|
+
::Hashie::Mash.new(hash).items.first
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'should return string for search result contents' do
|
192
|
+
should == " Date: 2014-05-30T01:38:16.741565+00:00" + "\n" + \
|
193
|
+
" @jotaro: yareyare da\e[0;31;49mze\e[0m" + "\n" \
|
194
|
+
"\n"
|
195
|
+
end
|
196
|
+
end
|
136
197
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hipchat_searcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mgi166
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hipchat
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: slop
|
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'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,6 +132,7 @@ extra_rdoc_files: []
|
|
118
132
|
files:
|
119
133
|
- ".gitignore"
|
120
134
|
- ".travis.yml"
|
135
|
+
- CHANGELOG.md
|
121
136
|
- Gemfile
|
122
137
|
- LICENSE.txt
|
123
138
|
- README.md
|
@@ -137,7 +152,6 @@ files:
|
|
137
152
|
- spec/data/item-list.json
|
138
153
|
- spec/data/room-list.txt
|
139
154
|
- spec/hipchat_searcher_spec.rb
|
140
|
-
- spec/lib/hipchat_searcher/options_spec.rb
|
141
155
|
- spec/lib/hipchat_searcher/result_spec.rb
|
142
156
|
- spec/lib/hipchat_searcher/searcher_spec.rb
|
143
157
|
- spec/spec_helper.rb
|
@@ -170,7 +184,6 @@ test_files:
|
|
170
184
|
- spec/data/item-list.json
|
171
185
|
- spec/data/room-list.txt
|
172
186
|
- spec/hipchat_searcher_spec.rb
|
173
|
-
- spec/lib/hipchat_searcher/options_spec.rb
|
174
187
|
- spec/lib/hipchat_searcher/result_spec.rb
|
175
188
|
- spec/lib/hipchat_searcher/searcher_spec.rb
|
176
189
|
- spec/spec_helper.rb
|
@@ -1,112 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe HipchatSearcher::Options do
|
4
|
-
describe '#message_options' do
|
5
|
-
context 'when self has "archived" key' do
|
6
|
-
subject { described_class.new(hash).message_options }
|
7
|
-
let(:hash) { {'d' => '2014-06-01' } }
|
8
|
-
|
9
|
-
it 'should return hash include key "include-archived"' do
|
10
|
-
should == { :date => '2014-06-01' }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context "when self don't have 'archived' key" do
|
15
|
-
subject { described_class.new(hash).message_options }
|
16
|
-
let(:hash) { {'room' => 'room-name' } }
|
17
|
-
|
18
|
-
it 'should return empty hash' do
|
19
|
-
should be_empty
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#room_options' do
|
25
|
-
context 'when self has "archived" key' do
|
26
|
-
subject { described_class.new(hash).room_options }
|
27
|
-
let(:hash) { {'archived' => true } }
|
28
|
-
|
29
|
-
it 'should return hash include key "include-archived"' do
|
30
|
-
should == {"include-archived" => true}
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context "when self don't have 'archived' key" do
|
35
|
-
subject { described_class.new(hash).room_options }
|
36
|
-
let(:hash) { {'d' => '2014-06-01' } }
|
37
|
-
|
38
|
-
it 'should return empty hash' do
|
39
|
-
should be_empty
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe '#room?' do
|
45
|
-
context 'given hash has a "room" key as argument' do
|
46
|
-
subject { described_class.new(hash).room? }
|
47
|
-
let(:hash) { {'room' => 'room-name' } }
|
48
|
-
|
49
|
-
it { should be_truthy }
|
50
|
-
end
|
51
|
-
|
52
|
-
context 'given hash has a "r" key as argument' do
|
53
|
-
subject { described_class.new(hash).room? }
|
54
|
-
let(:hash) { {'r' => 'room-name' } }
|
55
|
-
|
56
|
-
it { should be_truthy }
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'given hash have any other keys as argument' do
|
60
|
-
subject { described_class.new(hash).room? }
|
61
|
-
let(:hash) { {'other' => 'xxxx' } }
|
62
|
-
|
63
|
-
it { should be_falsey }
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe '#user?' do
|
68
|
-
context 'given hash has a "user" key as argument' do
|
69
|
-
subject { described_class.new(hash).user? }
|
70
|
-
let(:hash) { {'user' => 'jotaro kujo' } }
|
71
|
-
|
72
|
-
it { should be_truthy }
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'given hash has a "u" key as argument' do
|
76
|
-
subject { described_class.new(hash).user? }
|
77
|
-
let(:hash) { {'u' => 'jojo' } }
|
78
|
-
|
79
|
-
it { should be_truthy }
|
80
|
-
end
|
81
|
-
|
82
|
-
context 'given hash have any other keys as argument' do
|
83
|
-
subject { described_class.new(hash).user? }
|
84
|
-
let(:hash) { {'other' => 'xxxx' } }
|
85
|
-
|
86
|
-
it { should be_falsey }
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
describe '#date?' do
|
91
|
-
context 'given hash has a "date" key as argument' do
|
92
|
-
subject { described_class.new(hash).date? }
|
93
|
-
let(:hash) { {'date' => '2014-06-1' } }
|
94
|
-
|
95
|
-
it { should be_truthy }
|
96
|
-
end
|
97
|
-
|
98
|
-
context 'given hash has a "u" key as argument' do
|
99
|
-
subject { described_class.new(hash).date? }
|
100
|
-
let(:hash) { {'d' => '2014-06-1' } }
|
101
|
-
|
102
|
-
it { should be_truthy }
|
103
|
-
end
|
104
|
-
|
105
|
-
context 'given hash have any other keys as argument' do
|
106
|
-
subject { described_class.new(hash).date? }
|
107
|
-
let(:hash) { {'other' => 'xxxx' } }
|
108
|
-
|
109
|
-
it { should be_falsey }
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|