lita-locker 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6486024efd68e3b338f738adb2dad218b8d1b23f
4
- data.tar.gz: 70ca546c520752096d4c0130de5f7907a98be117
3
+ metadata.gz: ee0b2b2211b4a8e374e294510a405ede0a492d50
4
+ data.tar.gz: a84b6149da9dd9a6ac46d9f9c9590efab1ff4650
5
5
  SHA512:
6
- metadata.gz: 8adf1447143a90c49860d5bed23255b71420483db7d328619c6ccdb17e1ccb8c401e6eb77e95f52d3daaf6b34f0a9113c91d062a452956e29c6cba1b7976d37d
7
- data.tar.gz: 1122f9f8241f56561ea73244f2547b2f3ed3deada9fd0983345f4aa03ebac7d8e415253902ec1163803104f8e332b34acd1e0c1fd61818fa292794b3391f4936
6
+ metadata.gz: f6c2a8cbbc6dd91c1b3ef652c44c21c0b31d83d6bb1c9c855ae43c6c85cc8283b234f71080f9445549430590eb64b6a056f4649ef50c16a2791fb7540199faf2
7
+ data.tar.gz: 2580987de7715041491d3523471bdaf37d55692ca0bddc5f1724c4b87af0d8a7a30a2425775c03eaeca3b7649259ce8918bf186bfd5e0c6453171e8a7c7ef449
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --profile 5
data/.rubocop.yml CHANGED
@@ -6,7 +6,7 @@ LineLength:
6
6
  Max: 130
7
7
 
8
8
  AbcSize:
9
- Max: 30
9
+ Max: 34
10
10
 
11
11
  MethodLength:
12
12
  Max: 20
@@ -90,10 +90,10 @@ module Lita
90
90
 
91
91
  return if l.locked?
92
92
  mention_names = l.observers
93
- .map { |observer| render_template('mention', name: observer.mention_name, id: observer.id) }
94
- .reject { |mention| mention == '' }
95
- .sort
96
- .join(' ')
93
+ .map { |observer| render_template('mention', name: observer.mention_name, id: observer.id) }
94
+ .reject { |mention| mention == '' }
95
+ .sort
96
+ .join(' ')
97
97
  response.reply(t('label.unlocked_no_queue', name: name, mention: mention_names)) unless mention_names.empty?
98
98
  end
99
99
 
@@ -132,6 +132,7 @@ module Lita
132
132
 
133
133
  return response.reply(failed(t('subject.does_not_exist', name: name))) unless Label.exists?(name)
134
134
  l = Label.new(name)
135
+ return response.reply(failed(t('give.not_owned', label: name))) unless l.locked?
135
136
  owner_mention = render_template('mention', name: l.owner.mention_name, id: l.owner.id)
136
137
  return response.reply(t('give.not_owner',
137
138
  label: name,
@@ -75,11 +75,11 @@ module Lita
75
75
  results = []
76
76
 
77
77
  names.each do |name|
78
- if !Label.exists?(name) && Label.create(name)
79
- results <<= t('label.created', name: name)
80
- else
81
- results <<= t('label.exists', name: name)
82
- end
78
+ results <<= if !Label.exists?(name) && Label.create(name)
79
+ t('label.created', name: name)
80
+ else
81
+ t('label.exists', name: name)
82
+ end
83
83
  end
84
84
 
85
85
  response.reply(results.join(', '))
@@ -90,11 +90,11 @@ module Lita
90
90
  results = []
91
91
 
92
92
  names.each do |name|
93
- if Label.exists?(name) && Label.delete(name)
94
- results <<= t('label.deleted', name: name)
95
- else
96
- results <<= failed(t('label.does_not_exist', name: name))
97
- end
93
+ results <<= if Label.exists?(name) && Label.delete(name)
94
+ t('label.deleted', name: name)
95
+ else
96
+ failed(t('label.does_not_exist', name: name))
97
+ end
98
98
  end
99
99
 
100
100
  response.reply(results.join(', '))
@@ -79,7 +79,7 @@ module Lita
79
79
  user = Lita::User.fuzzy_find(username)
80
80
  return response.reply(t('user.unknown', user: username)) unless user
81
81
  l = user_locks(user)
82
- return response.reply(t('user.no_active_locks', user: user.name)) unless l.size > 0
82
+ return response.reply(t('user.no_active_locks', user: user.name)) if l.empty?
83
83
  composed = ''
84
84
  l.each do |label_name|
85
85
  composed += "Label: #{label_name}\n"
data/lib/locker/label.rb CHANGED
@@ -20,7 +20,7 @@ module Locker
20
20
  attr_reader :id
21
21
 
22
22
  def initialize(key)
23
- fail 'Unknown label key' unless Label.exists?(key)
23
+ raise 'Unknown label key' unless Label.exists?(key)
24
24
  @id = Label.normalize(key)
25
25
  end
26
26
 
@@ -29,7 +29,7 @@ module Locker
29
29
  end
30
30
 
31
31
  def self.create(key)
32
- fail 'Label key already exists' if Label.exists?(key)
32
+ raise 'Label key already exists' if Label.exists?(key)
33
33
  redis.sadd('label-list', Label.normalize(key))
34
34
  l = Label.new(key)
35
35
  l.state = 'unlocked'
@@ -39,7 +39,7 @@ module Locker
39
39
  end
40
40
 
41
41
  def self.delete(key)
42
- fail 'Unknown label key' unless Label.exists?(key)
42
+ raise 'Unknown label key' unless Label.exists?(key)
43
43
  %w(state, owner_id, membership, wait_queue, journal, observer_ids).each do |item|
44
44
  redis.del("label:#{key}:#{item}")
45
45
  end
@@ -95,7 +95,7 @@ module Locker
95
95
  # FIXME: Possible race condition where resources become unavailable between unlock and relock
96
96
  if wait_queue.count > 0
97
97
  next_user = wait_queue.shift
98
- self.lock!(next_user)
98
+ lock!(next_user)
99
99
  end
100
100
  true
101
101
  end
@@ -103,15 +103,15 @@ module Locker
103
103
  def steal!(owner_id)
104
104
  log("Stolen from #{owner.id} to #{owner_id}")
105
105
  wait_queue.unshift(owner_id)
106
- self.dedupe!
107
- self.unlock!
106
+ dedupe!
107
+ unlock!
108
108
  end
109
109
 
110
110
  def give!(recipient_id)
111
111
  log("Given from #{owner.id} to #{recipient_id}")
112
112
  wait_queue.unshift(recipient_id)
113
- self.dedupe!
114
- self.unlock!
113
+ dedupe!
114
+ unlock!
115
115
  end
116
116
 
117
117
  def dedupe!
@@ -15,7 +15,7 @@ module Locker
15
15
  attr_reader :id
16
16
 
17
17
  def initialize(key)
18
- fail 'Unknown resource key' unless Resource.exists?(key)
18
+ raise 'Unknown resource key' unless Resource.exists?(key)
19
19
  @id = key
20
20
  end
21
21
 
@@ -24,7 +24,7 @@ module Locker
24
24
  end
25
25
 
26
26
  def self.create(key)
27
- fail 'Resource key already exists' if Resource.exists?(key)
27
+ raise 'Resource key already exists' if Resource.exists?(key)
28
28
  redis.sadd('resource-list', key)
29
29
  r = Resource.new(key)
30
30
  r.state = 'unlocked'
@@ -33,7 +33,7 @@ module Locker
33
33
  end
34
34
 
35
35
  def self.delete(key)
36
- fail 'Unknown resource key' unless Resource.exists?(key)
36
+ raise 'Unknown resource key' unless Resource.exists?(key)
37
37
  %w(state, owner_id).each do |item|
38
38
  redis.del("resource:#{key}:#{item}")
39
39
  end
data/lita-locker.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-locker'
3
- spec.version = '1.0.8'
3
+ spec.version = '1.0.9'
4
4
  spec.authors = ['Eric Sigler']
5
5
  spec.email = ['me@esigler.com']
6
6
  spec.description = '"lock" and "unlock" arbitrary subjects'
data/locales/en.yml CHANGED
@@ -7,6 +7,7 @@ en:
7
7
  already_unlocked: "%{label} was already unlocked"
8
8
  self: "%{user}, why are you stealing the lock from yourself?"
9
9
  give:
10
+ not_owned: "%{label} is not currently locked, so it cannot be given"
10
11
  not_owner: "The lock on %{label} can only be given by its current owner: %{owner} %{mention}"
11
12
  given: "%{giver} gave %{label} to %{recipient} %{mention}"
12
13
  self: "%{user}, why are you giving the lock to yourself?"
@@ -24,7 +24,7 @@ describe Lita::Handlers::LockerHttp, lita_handler: true do
24
24
  it 'shows json if the label exists' do
25
25
  send_command('locker label create foo')
26
26
  subject.label_show(request, response)
27
- expect(response.body).to eq(["{\"id\":\"foo\",\"state\":\"unlocked\",\"membership\":\"\"}"])
27
+ expect(response.body).to eq(['{"id":"foo","state":"unlocked","membership":""}'])
28
28
  end
29
29
 
30
30
  it 'shows 404 if the label does not exist' do
@@ -38,7 +38,7 @@ describe Lita::Handlers::LockerHttp, lita_handler: true do
38
38
  robot.auth.add_user_to_group!(user, :locker_admins)
39
39
  send_command('locker resource create foo')
40
40
  subject.resource_show(request, response)
41
- expect(response.body).to eq(["{\"id\":\"foo\",\"state\":\"unlocked\",\"owner_id\":\"\"}"])
41
+ expect(response.body).to eq(['{"id":"foo","state":"unlocked","owner_id":""}'])
42
42
  end
43
43
 
44
44
  it 'shows 404 if the resource does not exist' do
@@ -325,6 +325,14 @@ describe Lita::Handlers::Locker, lita_handler: true do
325
325
  expect(replies.last).to match(/^bazbat is locked by Charlie \(taken \d seconds? ago\)\. Next up: Bob, Charlie$/)
326
326
  end
327
327
 
328
+ it 'shows a warning when a give is attempted on an unlocked resource' do
329
+ send_command('locker resource create foobar')
330
+ send_command('locker label create bazbat')
331
+ send_command('locker label add foobar to bazbat')
332
+ send_command('locker give bazbat to @alice # with a comment', as: bob)
333
+ expect(replies.last).to eq('bazbat is not currently locked, so it cannot be given')
334
+ end
335
+
328
336
  it 'shows a warning when the owner attempts to give the label to herself' do
329
337
  send_command('locker resource create foobar')
330
338
  send_command('locker label create bazbat')
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'simplecov'
2
2
  require 'coveralls'
3
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
3
+ SimpleCov.formatters = [
4
4
  SimpleCov::Formatter::HTMLFormatter,
5
5
  Coveralls::SimpleCov::Formatter
6
6
  ]
@@ -20,3 +20,20 @@ RSpec.configure do |config|
20
20
  registry.register_handler(Lita::Handlers::LockerResources)
21
21
  end
22
22
  end
23
+
24
+ RSpec.configure do |config|
25
+ config.expect_with :rspec do |expectations|
26
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
27
+ end
28
+
29
+ config.mock_with :rspec do |mocks|
30
+ mocks.verify_partial_doubles = true
31
+ end
32
+
33
+ config.filter_run :focus
34
+ config.run_all_when_everything_filtered = true
35
+ config.default_formatter = 'doc' if config.files_to_run.one?
36
+ config.order = :random
37
+
38
+ Kernel.srand config.seed
39
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-locker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Sigler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-04 00:00:00.000000000 Z
11
+ date: 2016-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita
@@ -144,6 +144,7 @@ extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
146
  - ".gitignore"
147
+ - ".rspec"
147
148
  - ".rubocop.yml"
148
149
  - ".travis.yml"
149
150
  - CONTRIBUTING.md