percy-client 1.10.0 → 1.10.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 +4 -4
- data/.rubocop.yml +11 -2
- data/Guardfile +2 -2
- data/lib/percy/client/resources.rb +15 -0
- data/lib/percy/client/version.rb +1 -1
- data/percy-client.gemspec +3 -2
- data/spec/lib/percy/client/resources_spec.rb +83 -35
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c6c5d15e4d9aad29d9ec9f1ff5bf4f551f10caa
|
4
|
+
data.tar.gz: a177a1b2e91a815ea115b08c28961cc5139cd7f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 730613e8ca357612b2caa17b1f09837667d6207d964576f42cd8713969436a113395b9c205c030b8619055f0709ea74cfbee1670ddfbe0f803b00e0ae708c1b1
|
7
|
+
data.tar.gz: aeb0147032f403c4874962b56d7f1782e19cfcc51348bab2e8013e567abc204f94d4eceaf9ebb6612f00a3d2256a8a147efa83eba767a36f7af1502b2f97a4a8
|
data/.rubocop.yml
CHANGED
@@ -4,6 +4,9 @@ AllCops:
|
|
4
4
|
Include:
|
5
5
|
- Rakefile
|
6
6
|
- lib/**/*.rake
|
7
|
+
Exclude:
|
8
|
+
- 'vendor/**/*'
|
9
|
+
- 'percy-client.gemspec'
|
7
10
|
|
8
11
|
Lint/EndAlignment:
|
9
12
|
EnforcedStyleAlignWith: variable
|
@@ -36,6 +39,12 @@ Style/MultilineOperationIndentation:
|
|
36
39
|
Style/NumericLiterals:
|
37
40
|
Enabled: false
|
38
41
|
|
42
|
+
Style/FileName:
|
43
|
+
Enabled: false
|
44
|
+
|
45
|
+
Style/SymbolArray:
|
46
|
+
Enabled: false
|
47
|
+
|
39
48
|
Style/NumericPredicate:
|
40
49
|
EnforcedStyle: comparison
|
41
50
|
|
@@ -58,8 +67,8 @@ Style/TrailingCommaInLiteral:
|
|
58
67
|
RSpec/MessageSpies:
|
59
68
|
EnforcedStyle: receive
|
60
69
|
|
61
|
-
|
62
|
-
|
70
|
+
RSpec/NotToNot:
|
71
|
+
Enabled: false
|
63
72
|
|
64
73
|
|
65
74
|
# Will be able to do this in >= v1.11
|
data/Guardfile
CHANGED
@@ -43,6 +43,21 @@ module Percy
|
|
43
43
|
}
|
44
44
|
end
|
45
45
|
|
46
|
+
def ==(other)
|
47
|
+
other.is_a?(self.class) &&
|
48
|
+
other.sha == sha &&
|
49
|
+
other.resource_url == resource_url &&
|
50
|
+
other.mimetype == mimetype
|
51
|
+
end
|
52
|
+
|
53
|
+
def hash
|
54
|
+
[sha, resource_url, mimetype].hash
|
55
|
+
end
|
56
|
+
|
57
|
+
def eql?(other)
|
58
|
+
self == other && hash == other.hash
|
59
|
+
end
|
60
|
+
|
46
61
|
def inspect
|
47
62
|
content_msg = content.nil? ? '' : "content.length: #{content.length}"
|
48
63
|
"<Resource #{sha} #{resource_url} is_root:#{!!is_root} #{mimetype} #{content_msg}>"
|
data/lib/percy/client/version.rb
CHANGED
data/percy-client.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'percy/client/version'
|
@@ -8,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
8
9
|
spec.version = Percy::Client::VERSION
|
9
10
|
spec.authors = ['Perceptual Inc.']
|
10
11
|
spec.email = ['team@percy.io']
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
12
|
+
spec.summary = 'Percy::Client'
|
13
|
+
spec.description = ''
|
13
14
|
spec.homepage = ''
|
14
15
|
spec.license = 'MIT'
|
15
16
|
|
@@ -1,44 +1,10 @@
|
|
1
1
|
require 'digest'
|
2
2
|
|
3
|
+
# rubocop:disable RSpec/MultipleDescribes
|
3
4
|
RSpec.describe Percy::Client::Resources, :vcr do
|
4
5
|
let(:content) { "hello world! #{described_class.name}" }
|
5
6
|
let(:sha) { Digest::SHA256.hexdigest(content) }
|
6
7
|
|
7
|
-
describe 'Percy::Client::Resource' do
|
8
|
-
it 'can be initialized with minimal data' do
|
9
|
-
resource = Percy::Client::Resource.new('/foo.html', sha: sha)
|
10
|
-
expect(resource.serialize).to eq(
|
11
|
-
'type' => 'resources',
|
12
|
-
'id' => sha,
|
13
|
-
'attributes' => {
|
14
|
-
'resource-url' => '/foo.html',
|
15
|
-
'mimetype' => nil,
|
16
|
-
'is-root' => nil,
|
17
|
-
},
|
18
|
-
)
|
19
|
-
end
|
20
|
-
it 'can be initialized with all data' do
|
21
|
-
resource = Percy::Client::Resource.new(
|
22
|
-
'/foo new.html',
|
23
|
-
sha: sha,
|
24
|
-
is_root: true,
|
25
|
-
mimetype: 'text/html',
|
26
|
-
content: content,
|
27
|
-
)
|
28
|
-
expect(resource.serialize).to eq(
|
29
|
-
'type' => 'resources',
|
30
|
-
'id' => sha,
|
31
|
-
'attributes' => {
|
32
|
-
'resource-url' => '/foo%20new.html',
|
33
|
-
'mimetype' => 'text/html',
|
34
|
-
'is-root' => true,
|
35
|
-
},
|
36
|
-
)
|
37
|
-
end
|
38
|
-
it 'errors if not given sha or content' do
|
39
|
-
expect { Percy::Client::Resource.new('/foo.html') }.to raise_error(ArgumentError)
|
40
|
-
end
|
41
|
-
end
|
42
8
|
describe '#upload_resource' do
|
43
9
|
it 'returns true with success' do
|
44
10
|
build = Percy.create_build('fotinakis/percy-examples')
|
@@ -51,3 +17,85 @@ RSpec.describe Percy::Client::Resources, :vcr do
|
|
51
17
|
end
|
52
18
|
end
|
53
19
|
end
|
20
|
+
|
21
|
+
RSpec.describe Percy::Client::Resource do
|
22
|
+
let(:content) { "hello world! #{described_class.name}" }
|
23
|
+
let(:sha) { Digest::SHA256.hexdigest(content) }
|
24
|
+
|
25
|
+
it 'can be initialized with minimal data' do
|
26
|
+
resource = described_class.new('/foo.html', sha: sha)
|
27
|
+
expect(resource.serialize).to eq(
|
28
|
+
'type' => 'resources',
|
29
|
+
'id' => sha,
|
30
|
+
'attributes' => {
|
31
|
+
'resource-url' => '/foo.html',
|
32
|
+
'mimetype' => nil,
|
33
|
+
'is-root' => nil,
|
34
|
+
},
|
35
|
+
)
|
36
|
+
end
|
37
|
+
it 'can be initialized with all data' do
|
38
|
+
resource = described_class.new(
|
39
|
+
'/foo new.html',
|
40
|
+
sha: sha,
|
41
|
+
is_root: true,
|
42
|
+
mimetype: 'text/html',
|
43
|
+
content: content,
|
44
|
+
)
|
45
|
+
expect(resource.serialize).to eq(
|
46
|
+
'type' => 'resources',
|
47
|
+
'id' => sha,
|
48
|
+
'attributes' => {
|
49
|
+
'resource-url' => '/foo%20new.html',
|
50
|
+
'mimetype' => 'text/html',
|
51
|
+
'is-root' => true,
|
52
|
+
},
|
53
|
+
)
|
54
|
+
end
|
55
|
+
it 'errors if not given sha or content' do
|
56
|
+
expect { described_class.new('/foo.html') }.to raise_error(ArgumentError)
|
57
|
+
end
|
58
|
+
|
59
|
+
describe 'object equality' do
|
60
|
+
subject(:resource) { described_class.new('/some-content', sha: sha, mimetype: mimetype) }
|
61
|
+
|
62
|
+
let(:sha) { '123456' }
|
63
|
+
let(:mimetype) { 'text/plain' }
|
64
|
+
|
65
|
+
describe 'two resources with same properties' do
|
66
|
+
let(:other) { described_class.new('/some-content', sha: sha, mimetype: mimetype) }
|
67
|
+
|
68
|
+
it { is_expected.to eq(other) }
|
69
|
+
it { is_expected.to eql(other) }
|
70
|
+
it { expect(resource.hash).to eq(other.hash) }
|
71
|
+
it('makes their array unique') { expect([resource, other].uniq).to eq([resource]) }
|
72
|
+
end
|
73
|
+
|
74
|
+
describe 'two resources with different sha' do
|
75
|
+
let(:other) { described_class.new('/some-content', sha: sha.reverse, mimetype: mimetype) }
|
76
|
+
|
77
|
+
it { is_expected.not_to eq(other) }
|
78
|
+
it { is_expected.not_to eql(other) }
|
79
|
+
it { expect(resource.hash).not_to eq(other.hash) }
|
80
|
+
it('makes array unique') { expect([resource, other].uniq).to eq([resource, other]) }
|
81
|
+
end
|
82
|
+
|
83
|
+
describe 'two resources with different url' do
|
84
|
+
let(:other) { described_class.new('/different-content', sha: sha, mimetype: mimetype) }
|
85
|
+
|
86
|
+
it { is_expected.not_to eq(other) }
|
87
|
+
it { is_expected.not_to eql(other) }
|
88
|
+
it { expect(resource.hash).not_to eq(other.hash) }
|
89
|
+
it('makes array unique') { expect([resource, other].uniq).to eq([resource, other]) }
|
90
|
+
end
|
91
|
+
|
92
|
+
describe 'two resources with different mimetype' do
|
93
|
+
let(:other) { described_class.new('/some-content', sha: sha, mimetype: 'text/css') }
|
94
|
+
|
95
|
+
it { is_expected.not_to eq(other) }
|
96
|
+
it { is_expected.not_to eql(other) }
|
97
|
+
it { expect(resource.hash).not_to eq(other.hash) }
|
98
|
+
it('makes array unique') { expect([resource, other].uniq).to eq([resource, other]) }
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percy-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.10.
|
4
|
+
version: 1.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perceptual Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -188,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
188
|
version: '0'
|
189
189
|
requirements: []
|
190
190
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.
|
191
|
+
rubygems_version: 2.6.7
|
192
192
|
signing_key:
|
193
193
|
specification_version: 4
|
194
194
|
summary: Percy::Client
|