retriable 3.1.0 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,32 +1,26 @@
1
- require_relative "spec_helper"
2
-
3
1
  describe Retriable::ExponentialBackoff do
4
- subject do
5
- Retriable::ExponentialBackoff
6
- end
2
+ context "defaults" do
3
+ let(:backoff_config) { described_class.new }
7
4
 
8
- before do
9
- srand 0
10
- end
5
+ it "tries defaults to 3" do
6
+ expect(backoff_config.tries).to eq(3)
7
+ end
11
8
 
12
- it "tries defaults to 3" do
13
- expect(subject.new.tries).must_equal 3
14
- end
9
+ it "max interval defaults to 60" do
10
+ expect(backoff_config.max_interval).to eq(60)
11
+ end
15
12
 
16
- it "max interval defaults to 60" do
17
- expect(subject.new.max_interval).must_equal 60
18
- end
13
+ it "randomization factor defaults to 0.5" do
14
+ expect(backoff_config.base_interval).to eq(0.5)
15
+ end
19
16
 
20
- it "randomization factor defaults to 0.5" do
21
- expect(subject.new.base_interval).must_equal 0.5
22
- end
23
-
24
- it "multiplier defaults to 1.5" do
25
- expect(subject.new.multiplier).must_equal 1.5
17
+ it "multiplier defaults to 1.5" do
18
+ expect(backoff_config.multiplier).to eq(1.5)
19
+ end
26
20
  end
27
21
 
28
22
  it "generates 10 randomized intervals" do
29
- expect(subject.new(tries: 9).intervals).must_equal([
23
+ expect(described_class.new(tries: 9).intervals).to eq([
30
24
  0.5244067512211441,
31
25
  0.9113920238761231,
32
26
  1.2406087918999114,
@@ -40,11 +34,11 @@ describe Retriable::ExponentialBackoff do
40
34
  end
41
35
 
42
36
  it "generates defined number of intervals" do
43
- expect(subject.new(tries: 5).intervals.size).must_equal 5
37
+ expect(described_class.new(tries: 5).intervals.size).to eq(5)
44
38
  end
45
39
 
46
40
  it "generates intervals with a defined base interval" do
47
- expect(subject.new(base_interval: 1).intervals).must_equal([
41
+ expect(described_class.new(base_interval: 1).intervals).to eq([
48
42
  1.0488135024422882,
49
43
  1.8227840477522461,
50
44
  2.4812175837998227,
@@ -52,7 +46,7 @@ describe Retriable::ExponentialBackoff do
52
46
  end
53
47
 
54
48
  it "generates intervals with a defined multiplier" do
55
- expect(subject.new(multiplier: 1).intervals).must_equal([
49
+ expect(described_class.new(multiplier: 1).intervals).to eq([
56
50
  0.5244067512211441,
57
51
  0.607594682584082,
58
52
  0.5513816852888495,
@@ -60,15 +54,11 @@ describe Retriable::ExponentialBackoff do
60
54
  end
61
55
 
62
56
  it "generates intervals with a defined max interval" do
63
- expect(subject.new(max_interval: 1.0, rand_factor: 0.0).intervals).must_equal([
64
- 0.5,
65
- 0.75,
66
- 1.0,
67
- ])
57
+ expect(described_class.new(max_interval: 1.0, rand_factor: 0.0).intervals).to eq([0.5, 0.75, 1.0])
68
58
  end
69
59
 
70
60
  it "generates intervals with a defined rand_factor" do
71
- expect(subject.new(rand_factor: 0.2).intervals).must_equal([
61
+ expect(described_class.new(rand_factor: 0.2).intervals).to eq([
72
62
  0.5097627004884576,
73
63
  0.8145568095504492,
74
64
  1.1712435167599646,
@@ -76,20 +66,7 @@ describe Retriable::ExponentialBackoff do
76
66
  end
77
67
 
78
68
  it "generates 10 non-randomized intervals" do
79
- expect(subject.new(
80
- tries: 10,
81
- rand_factor: 0.0,
82
- ).intervals).must_equal([
83
- 0.5,
84
- 0.75,
85
- 1.125,
86
- 1.6875,
87
- 2.53125,
88
- 3.796875,
89
- 5.6953125,
90
- 8.54296875,
91
- 12.814453125,
92
- 19.2216796875,
93
- ])
69
+ non_random_intervals = 9.times.inject([0.5]) { |memo, _i| memo + [memo.last * 1.5] }
70
+ expect(described_class.new(tries: 10, rand_factor: 0.0).intervals).to eq(non_random_intervals)
94
71
  end
95
72
  end