progressrus 1.0.0 → 1.0.1

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
  SHA256:
3
- metadata.gz: 3cb4b7ee45de1db397c2d3f3cfb720507d8d0cec3f868ae5bf9c206b6f3d0dcf
4
- data.tar.gz: 624910bddff5383982e2b24f9a179470b17d0191b503c7c111e6199bbbfa47a8
3
+ metadata.gz: b5cd2369da367f85505ff94038ed56c4d5e492732e9993b595a0c96acdaf265b
4
+ data.tar.gz: 23e4444e32c105d2565f093c607ddc7ece5b74624af9628cf3297740af889dc2
5
5
  SHA512:
6
- metadata.gz: 5a8e7967dff752a13e2f4a914283855568a5f443782b5d0b146ca78fa425b100597e7d8be282ac6e90a1f3e83a8aa015294df56e2d690d15b61df1a2b65171aa
7
- data.tar.gz: 5ccbeffcf9168949764092b5a3f2b3b024302f40852e81ee217ba8480f6b1c688303d895a461fa355e285329461463d078518b331d4eb9d79e5f1a6f298c8843
6
+ metadata.gz: cb1621312d260fd16afa68931fc34a4c6b17ca9a7db6a4ef3a5ccfd8534c8fe8c91821728214609288d54294370444be98006f325f3cd00b32ab3b2a0f59b315
7
+ data.tar.gz: e431e6c4857aa31025dd39e0dff73683a32aca87bea5664bc21cc2988f430d286290f7f187b3816c8959818ac52ead468426d085728444781c56587ddd59fadd
@@ -21,6 +21,16 @@ class Progressrus
21
21
  end
22
22
  end
23
23
 
24
+ class StoreNotFoundError < StandardError
25
+ def initialize(store)
26
+ message = <<~MSG
27
+ The store `#{store}` does not exists.
28
+ Available stores: #{Progressrus.stores.keys.join(', ')}
29
+ MSG
30
+ super(message)
31
+ end
32
+ end
33
+
24
34
  class << self
25
35
  attr_reader :mutex
26
36
 
@@ -74,7 +84,7 @@ class Progressrus
74
84
  attr_writer :params
75
85
 
76
86
  def initialize(scope: "progressrus", total: nil, name: nil,
77
- id: SecureRandom.uuid, params: {}, stores: Progressrus.stores,
87
+ id: SecureRandom.uuid, params: {}, stores: nil,
78
88
  completed_at: nil, started_at: nil, count: 0, failed_at: nil,
79
89
  error_count: 0, persist: false, expires_at: nil, persisted: false)
80
90
 
@@ -85,7 +95,7 @@ class Progressrus
85
95
  @total = total
86
96
  @id = id
87
97
  @params = params
88
- @stores = stores
98
+ @stores = extract_stores(stores)
89
99
  @count = count
90
100
  @error_count = error_count
91
101
 
@@ -196,6 +206,17 @@ class Progressrus
196
206
 
197
207
  private
198
208
 
209
+ def extract_stores(stores)
210
+ return Progressrus.stores unless stores
211
+
212
+ Array(stores).each_with_object({}) do |store, hash|
213
+ stored_found = Progressrus.stores[store]
214
+ raise StoreNotFoundError, store unless stored_found
215
+
216
+ hash[store] = stored_found
217
+ end
218
+ end
219
+
199
220
  def persist(force: false)
200
221
  stores.each_value do |store|
201
222
  begin
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Progressrus
4
- VERSION = '1.0.0'
4
+ VERSION = '1.0.1'
5
5
  end
@@ -40,6 +40,37 @@ class ProgressrusTest < Minitest::Test
40
40
  assert_equal 'Wally', progressrus.name
41
41
  end
42
42
 
43
+ def test_not_passing_stores_default_to_all_stores
44
+ progressrus = Progressrus.new(scope: ['walruses', 1])
45
+ assert_equal Progressrus.stores, progressrus.stores
46
+ end
47
+
48
+ def test_passing_stores
49
+ mysql = mock_store
50
+ Progressrus.add_store(:mysql, mysql)
51
+ progressrus = Progressrus.new(scope: ['walruses', 1], stores: :mysql)
52
+ assert_equal({ mysql: mysql }, progressrus.stores)
53
+ end
54
+
55
+ def test_passing_multiple_stores
56
+ Progressrus.clear_stores
57
+
58
+ mysql = mock_store
59
+ redis = mock_store
60
+
61
+ Progressrus.add_store(:mysql, mysql)
62
+ Progressrus.add_store(:redis, redis)
63
+
64
+ progressrus = Progressrus.new(scope: ['walruses', 1], stores: %i(mysql redis))
65
+ assert_equal({ mysql: mysql, redis: redis }, progressrus.stores)
66
+ end
67
+
68
+ def test_passing_non_existing_store_raises_error
69
+ assert_raises(Progressrus::StoreNotFoundError) do
70
+ Progressrus.new(scope: ['walruses', 1], stores: :not_found)
71
+ end
72
+ end
73
+
43
74
  def test_initialize_without_name_should_use_id
44
75
  progressrus = Progressrus.new(id: 'oemg')
45
76
  assert_equal 'oemg', progressrus.name
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: progressrus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Eskildsen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-03 00:00:00.000000000 Z
11
+ date: 2019-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis