junklet 0.9.1 → 0.9.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 +8 -8
- data/.rspec +1 -0
- data/README.md +33 -14
- data/lib/junklet/version.rb +1 -1
- data/lib/junklet.rb +13 -1
- data/spec/lib/junklet_spec.rb +44 -15
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDdlODdiZDE4MzI3Njk2YjBiZmQ0NTQ1ZDEwMzc3NmY0YTdkNGE3Mw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OWRhN2UxYTQxNzk0MGI1NGNiYjRlZGQ0YTVlMzE2ODAzZGYzZjhjNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTJjYzEzNDIxNmQwMzkwNzg0N2U4MTQyMTUxMTgzYjNiNjFhYzJlNmIyMTg3
|
10
|
+
ZmZjOTQxOTIzOTFlZjFhZDcwMDViYTM5NDU0YmUyODA5YjUwOTljYTQ3MWRl
|
11
|
+
M2I4ODk5YWRmMjk4NTRlMTNjYjQxZGUyZWQyZDBlODYwZTYzZTM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWJmMWNlNGQ4MGU1YzY3ZTIwZGE1M2YxY2YzODgyZTgwZjU0YjdkY2EzNGNm
|
14
|
+
MGUwODZhYWNjMDNiMjRmMzM1NDI4MDk5MjQ3NDFiYjlkYzhjNWNlZWUzNjUw
|
15
|
+
NDQyZjEwYzU1N2I1ZmQxMTY2ZTY2N2QxZWIxMTllMmM2MjczYTg=
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Junklet
|
2
2
|
|
3
|
-
|
3
|
+
Cache tiny chunks of unique junk data in RSpec with `junklet :name`;
|
4
|
+
get handy clumps of junk data at any time with `junk`. Size your junk
|
5
|
+
with e.g. `junk 100` or `junk 4`.
|
4
6
|
|
5
7
|
Junklet data is fixture data that:
|
6
8
|
|
@@ -16,6 +18,21 @@ So,
|
|
16
18
|
* If equality fails we want to be led to the offending field by the
|
17
19
|
error message and not just the line number in the stack trace.
|
18
20
|
|
21
|
+
# If You Work At CMM
|
22
|
+
|
23
|
+
1. junklet means never having to type SecureRandom again.
|
24
|
+
1. junklet prepends the field name to make errors easier to read.
|
25
|
+
1. junk() returns a 32-byte random hex number, junk(n) returns the
|
26
|
+
same thing, only n bytes long (can be longer than 32)
|
27
|
+
|
28
|
+
Instead of writing this -> write this:
|
29
|
+
|
30
|
+
* `let(:pants) { SecureRandom.uuid }` -> `junklet :pants`
|
31
|
+
* `let(:host_name) { "host-name-#{SecureRandom.uuid}" }` -> `junklet :host_name, separator: '-'` (Remember that underscores aren't legal in host names)
|
32
|
+
* `let(:bad_number) { SecureRandom.hex[0..7] }` -> `let(:bad_number) { junk 8 }`
|
33
|
+
* `let(:website) { "www.#{SecureRandom.hex}.com" }` -> `let(:website) { "www.#{junk}.com }`
|
34
|
+
|
35
|
+
|
19
36
|
# Usage
|
20
37
|
|
21
38
|
junklet :var [, :var_2 [...]] [, options_hash]
|
@@ -23,14 +40,15 @@ So,
|
|
23
40
|
junklet :first_name
|
24
41
|
|
25
42
|
Creates a `let :first_name` with the value of
|
26
|
-
`first_name-
|
27
|
-
change with each test case
|
43
|
+
`first_name-774030d0f58d4f588c5edddbdc7f9580` (the hex number is a
|
44
|
+
uuid without hyphens and will change with each test case, not just
|
45
|
+
each test run)
|
28
46
|
|
29
47
|
junklet :host_name, separator: '-'
|
30
48
|
|
31
49
|
Creates a `let :host_name`, but changes underscores to hyphens in the
|
32
50
|
string value,
|
33
|
-
e.g. `host-name-
|
51
|
+
e.g. `host-name-774030d0f58d4f588c5edddbdc7f9580`. Useful
|
34
52
|
specifically for host names, which cannot have underscores in them.
|
35
53
|
|
36
54
|
junklet :a_a, :b_b, :c_c, separator: '.'
|
@@ -38,6 +56,12 @@ specifically for host names, which cannot have underscores in them.
|
|
38
56
|
Does what it says on the tin: creates 3 items with string values of
|
39
57
|
`a.a`, `b.b`, and `c.c` respectively.
|
40
58
|
|
59
|
+
|
60
|
+
junk [length=32]
|
61
|
+
|
62
|
+
Can be called from inside a spec or let block, and returns a random
|
63
|
+
hex string 32 bytes long (or whatever length you specify)
|
64
|
+
|
41
65
|
# Background
|
42
66
|
|
43
67
|
At CoverMyMeds we have a legacy impingement that prevents us sometimes
|
@@ -92,10 +116,8 @@ junklet :first_name, :last_name, :address, :city, :state, :phone
|
|
92
116
|
```
|
93
117
|
|
94
118
|
This will have the same effect as calling `let` on the named fields
|
95
|
-
and setting the fieldname and a
|
96
|
-
|
97
|
-
No, `junklet!` is NOT also included here because it doesn't really
|
98
|
-
make sense until and unless we write custom generators.
|
119
|
+
and setting the fieldname and a 32-byte hex string (a uuid with
|
120
|
+
hyphens removed) to be the memoized value.
|
99
121
|
|
100
122
|
# TODO
|
101
123
|
|
@@ -147,14 +169,11 @@ Or install it yourself as:
|
|
147
169
|
|
148
170
|
$ gem install junklet
|
149
171
|
|
150
|
-
## Usage
|
151
|
-
|
152
|
-
TODO: Write usage instructions here
|
153
|
-
|
154
172
|
## Contributing
|
155
173
|
|
156
174
|
1. Fork it ( https://github.com/[my-github-username]/junklet/fork )
|
157
175
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
158
176
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
159
|
-
4.
|
160
|
-
5.
|
177
|
+
4. Write specs to document how your change is to be used
|
178
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
179
|
+
6. Create a new Pull Request
|
data/lib/junklet/version.rb
CHANGED
data/lib/junklet.rb
CHANGED
@@ -14,10 +14,22 @@ module RSpec
|
|
14
14
|
end
|
15
15
|
|
16
16
|
args.zip(names).each do |arg, name|
|
17
|
-
let(arg) { "#{name}-#{
|
17
|
+
let(arg) { "#{name}-#{junk}" }
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
21
|
+
|
22
|
+
def junk(size=32)
|
23
|
+
trash = ""
|
24
|
+
trash += SecureRandom.hex while trash.size < size
|
25
|
+
trash = trash[0...size]
|
26
|
+
end
|
21
27
|
end
|
28
|
+
|
29
|
+
# class ExampleGroup
|
30
|
+
# def self.junk
|
31
|
+
# SecureRandom.hex
|
32
|
+
# end
|
33
|
+
# end
|
22
34
|
end
|
23
35
|
end
|
data/spec/lib/junklet_spec.rb
CHANGED
@@ -3,42 +3,71 @@ require 'spec_helper'
|
|
3
3
|
describe Junklet do
|
4
4
|
specify { expect(Junklet).to be }
|
5
5
|
|
6
|
-
let(:
|
6
|
+
let(:hex_regex) { /[\da-f]{32}/ }
|
7
7
|
|
8
8
|
describe '.junklet' do
|
9
9
|
context "with a single arg" do
|
10
|
-
junklet :
|
10
|
+
junklet :trash
|
11
11
|
|
12
|
-
specify { expect(
|
13
|
-
specify { expect(
|
14
|
-
specify { expect(
|
12
|
+
specify { expect(trash).to be }
|
13
|
+
specify { expect(trash).to match /^trash-/ }
|
14
|
+
specify { expect(trash).to match hex_regex }
|
15
15
|
|
16
16
|
describe "memoization" do
|
17
|
-
specify { expect(
|
17
|
+
specify { expect(trash).to eq(trash) }
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
context "with multiple args" do
|
22
|
-
junklet :
|
22
|
+
junklet :trash, :toss, :crud, :crap
|
23
23
|
|
24
|
-
specify { expect(
|
25
|
-
specify { expect(
|
24
|
+
specify { expect(trash).to match /^trash-/ }
|
25
|
+
specify { expect(trash).to match hex_regex }
|
26
26
|
specify { expect(toss).to match /^toss-/ }
|
27
|
-
specify { expect(toss).to match
|
27
|
+
specify { expect(toss).to match hex_regex }
|
28
28
|
specify { expect(crud).to match /^crud-/ }
|
29
|
-
specify { expect(crud).to match
|
29
|
+
specify { expect(crud).to match hex_regex }
|
30
30
|
specify { expect(crap).to match /^crap-/ }
|
31
|
-
specify { expect(crap).to match
|
31
|
+
specify { expect(crap).to match hex_regex }
|
32
32
|
end
|
33
33
|
|
34
34
|
context 'with separator option' do
|
35
35
|
junklet :host_name, :last_name, :first_name, separator: '-'
|
36
36
|
specify { expect(host_name).to match /^host-name-/ }
|
37
|
-
specify { expect(host_name).to match
|
37
|
+
specify { expect(host_name).to match hex_regex }
|
38
38
|
specify { expect(last_name).to match /^last-name-/ }
|
39
|
-
specify { expect(last_name).to match
|
39
|
+
specify { expect(last_name).to match hex_regex }
|
40
40
|
specify { expect(first_name).to match /^first-name-/ }
|
41
|
-
specify { expect(first_name).to match
|
41
|
+
specify { expect(first_name).to match hex_regex }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '.junk' do
|
46
|
+
let(:trash) { junk }
|
47
|
+
|
48
|
+
specify { expect(trash).to match hex_regex }
|
49
|
+
|
50
|
+
it "is not cached" do
|
51
|
+
expect(junk).to_not eq(junk)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "but lets on junk ARE cached" do
|
55
|
+
expect(trash).to eq(trash)
|
56
|
+
end
|
57
|
+
|
58
|
+
context "with argument" do
|
59
|
+
let(:little_trash) { junk 5 }
|
60
|
+
let(:big_trash) { junk 100 }
|
61
|
+
|
62
|
+
it "returns junk of that length" do
|
63
|
+
expect(little_trash.size).to eq(5)
|
64
|
+
expect(big_trash.size).to eq(100)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "returns hex chars of that length" do
|
68
|
+
expect(little_trash).to match /^[\da-f]{5}$/
|
69
|
+
expect(big_trash).to match /^[\da-f]{100}$/
|
70
|
+
end
|
42
71
|
end
|
43
72
|
end
|
44
73
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: junklet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Brady
|
@@ -74,6 +74,7 @@ extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
76
|
- .gitignore
|
77
|
+
- .rspec
|
77
78
|
- Gemfile
|
78
79
|
- Gemfile.lock
|
79
80
|
- LICENSE
|