rainforest-cli 1.11.0 → 1.12.0
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/CHANGELOG.md +3 -0
- data/lib/rainforest_cli/resources.rb +22 -18
- data/lib/rainforest_cli/version.rb +1 -1
- data/rainforest-cli.gemspec +1 -0
- data/spec/rainforest_cli/resources_spec.rb +30 -41
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d643c76641c2871f0f18ea635ffe868546443721
|
4
|
+
data.tar.gz: 073a323ecb28931576a27d1a7f352718920a3e83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b612e2ff7c36f3a666aa6ce0e15740c6051a6af936a3f117ccef0b87d056e6e1c242c5cae54571b880f0bbc7b573b7cfeb117f1691f2dbb984a26dd8f333d5a
|
7
|
+
data.tar.gz: 74af9041c9d0b69815a33588b819cfaf44ed323cff190224fd68bf94ad57fbd101f7d709ce8c887bfdf288da8ac287fc74a7806a1567c38f2086609e91e8d281
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Rainforest CLI Changelog
|
2
2
|
|
3
|
+
## 1.12.0 - 6th February 2017
|
4
|
+
- Add category column to list of sites when using the `sites` command.
|
5
|
+
|
3
6
|
## 1.11.0 - 4th November 2016
|
4
7
|
- Add `--single-use` flag for CSV uploads. (17a19694a788365beb59e634bd7286c86528484b, @epaulet)
|
5
8
|
|
@@ -1,49 +1,53 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require 'terminal-table'
|
3
|
+
|
2
4
|
class RainforestCli::Resources
|
3
|
-
|
5
|
+
HUMANIZE_SITE_CATEGORIES = {
|
6
|
+
'device_farm' => 'Device Farm',
|
7
|
+
'android' => 'Android',
|
8
|
+
'ios' => 'iOS',
|
9
|
+
'site' => 'Site',
|
10
|
+
}.freeze
|
4
11
|
|
5
12
|
def initialize(options)
|
6
13
|
@client = RainforestCli::HttpClient.new(token: options.token)
|
7
14
|
end
|
8
15
|
|
9
16
|
def sites
|
10
|
-
sites = @client.get('/sites').map
|
17
|
+
sites = @client.get('/sites').map do |s|
|
18
|
+
category = s['category']
|
19
|
+
[s['id'], s['name'], HUMANIZE_SITE_CATEGORIES[category] || category]
|
20
|
+
end
|
11
21
|
|
12
22
|
if sites.empty?
|
13
23
|
logger.info('No sites found on your account.')
|
14
24
|
logger.info('Please visit https://app.rainforestqa.com/settings/sites to create and edit your sites.')
|
15
25
|
else
|
16
|
-
print_table('Site', sites)
|
26
|
+
print_table(['Site ID', 'Site Name', 'Category'], sites)
|
17
27
|
end
|
18
28
|
end
|
19
29
|
|
20
30
|
def folders
|
21
|
-
folders = @client.get('/folders?page_size=100').map { |f|
|
31
|
+
folders = @client.get('/folders?page_size=100').map { |f| f.values_at('id', 'title') }
|
32
|
+
|
22
33
|
if folders.empty?
|
23
34
|
logger.info('No folders found on your account.')
|
24
35
|
logger.info('Please visit https://app.rainforestqa.com/folders to create and edit your sites.')
|
25
36
|
else
|
26
|
-
print_table('Folder', folders)
|
37
|
+
print_table(['Folder ID', 'Folder Name'], folders)
|
27
38
|
end
|
28
39
|
end
|
29
40
|
|
30
41
|
def browsers
|
31
42
|
account = @client.get('/clients')
|
32
|
-
browsers = account['available_browsers'].map { |b|
|
33
|
-
print_table('Browser', browsers)
|
43
|
+
browsers = account['available_browsers'].map { |b| b.values_at('name', 'description') }
|
44
|
+
print_table(['Browser ID', 'Browser Name'], browsers)
|
34
45
|
end
|
35
46
|
|
36
|
-
def print_table(
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
table_heading = "#{id_col.rjust(col_length)} | #{resource_name} Name"
|
42
|
-
puts table_heading
|
43
|
-
puts '-' * table_heading.length
|
44
|
-
resources.each do |resource|
|
45
|
-
puts "#{resource.identifier.to_s.rjust(col_length)} | #{resource.name}"
|
46
|
-
end
|
47
|
+
def print_table(headings, rows)
|
48
|
+
table = Terminal::Table.new(headings: headings, rows: rows)
|
49
|
+
table.align_column(0, :right)
|
50
|
+
puts table
|
47
51
|
end
|
48
52
|
|
49
53
|
private
|
data/rainforest-cli.gemspec
CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency 'rainforest', '~> 2.1', '>= 2.1.0'
|
27
27
|
spec.add_dependency 'http-exceptions', '~> 0.0', '>= 0.0.4'
|
28
28
|
spec.add_dependency 'builder', '~> 3.2'
|
29
|
+
spec.add_dependency 'terminal-table', '1.7.3'
|
29
30
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
30
31
|
spec.add_development_dependency 'rake', '~> 10.4', '>= 10.4.2'
|
31
32
|
end
|
@@ -9,10 +9,8 @@ describe RainforestCli::Resources do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'calls the print method with the correct information' do
|
12
|
-
expect(subject).to receive(:print_table) do |
|
13
|
-
|
14
|
-
expect(resource.identifier).to eq(expected_id)
|
15
|
-
expect(resource.name).to eq(expected_name)
|
12
|
+
expect(subject).to receive(:print_table) do |_headers, rows|
|
13
|
+
expect(rows).to eq(expected_rows)
|
16
14
|
end
|
17
15
|
|
18
16
|
subject.send(tested_method)
|
@@ -40,13 +38,18 @@ describe RainforestCli::Resources do
|
|
40
38
|
context 'with sites in account' do
|
41
39
|
let(:api_response) do
|
42
40
|
[
|
43
|
-
{ 'id' => 123, 'name' => 'The Foo Site' },
|
44
|
-
{ 'id' => 456, 'name'=> 'The Bar Site' },
|
45
|
-
{ 'id' => 789, 'name' => 'The Baz Site' }
|
41
|
+
{ 'id' => 123, 'name' => 'The Foo Site', 'category' => 'cat A' },
|
42
|
+
{ 'id' => 456, 'name'=> 'The Bar Site', 'category' => 'cat B' },
|
43
|
+
{ 'id' => 789, 'name' => 'The Baz Site', 'category' => 'cat C' },
|
44
|
+
]
|
45
|
+
end
|
46
|
+
let(:expected_rows) do
|
47
|
+
[
|
48
|
+
[123, 'The Foo Site', 'cat A'],
|
49
|
+
[456, 'The Bar Site', 'cat B'],
|
50
|
+
[789, 'The Baz Site', 'cat C'],
|
46
51
|
]
|
47
52
|
end
|
48
|
-
let(:expected_id) { api_response.first['id'] }
|
49
|
-
let(:expected_name) { api_response.first['name'] }
|
50
53
|
|
51
54
|
it_should_behave_like 'a properly formatted resource', :sites
|
52
55
|
end
|
@@ -75,24 +78,28 @@ describe RainforestCli::Resources do
|
|
75
78
|
[
|
76
79
|
{ 'id' => 123, 'title' => 'The Foo Folder' },
|
77
80
|
{ 'id' => 456, 'title'=> 'The Bar Folder' },
|
78
|
-
{ 'id' => 789, 'title' => 'The Baz Folder' }
|
81
|
+
{ 'id' => 789, 'title' => 'The Baz Folder' },
|
82
|
+
]
|
83
|
+
end
|
84
|
+
let(:expected_rows) do
|
85
|
+
[
|
86
|
+
[123, 'The Foo Folder'],
|
87
|
+
[456, 'The Bar Folder'],
|
88
|
+
[789, 'The Baz Folder'],
|
79
89
|
]
|
80
90
|
end
|
81
|
-
let(:expected_id) { api_response.first['id'] }
|
82
|
-
let(:expected_name) { api_response.first['title'] }
|
83
91
|
|
84
92
|
it_should_behave_like 'a properly formatted resource', :folders
|
85
93
|
|
86
|
-
|
87
94
|
it 'should make a get request for 100 pages' do
|
95
|
+
allow(subject).to receive(:print_table)
|
96
|
+
|
88
97
|
expect_any_instance_of(RainforestCli::HttpClient).to receive(:get) do |_obj, message|
|
89
98
|
expect(message).to include('page_size=100')
|
90
99
|
end.and_return(api_response)
|
91
100
|
subject.folders
|
92
101
|
end
|
93
102
|
end
|
94
|
-
|
95
|
-
|
96
103
|
end
|
97
104
|
|
98
105
|
describe '#browsers' do
|
@@ -100,36 +107,18 @@ describe RainforestCli::Resources do
|
|
100
107
|
[
|
101
108
|
{ 'name' => 'chrome', 'description' => 'Chrome' },
|
102
109
|
{ 'name' => 'safari', 'description' => 'Safari' },
|
103
|
-
{ 'name' => 'firefox', 'description' => 'Firefox' }
|
110
|
+
{ 'name' => 'firefox', 'description' => 'Firefox' },
|
104
111
|
]
|
105
112
|
end
|
106
113
|
let(:api_response) { { 'available_browsers' => api_resources } }
|
107
|
-
let(:
|
108
|
-
|
114
|
+
let(:expected_rows) do
|
115
|
+
[
|
116
|
+
['chrome', 'Chrome'],
|
117
|
+
['safari', 'Safari'],
|
118
|
+
['firefox', 'Firefox'],
|
119
|
+
]
|
120
|
+
end
|
109
121
|
|
110
122
|
it_should_behave_like 'a properly formatted resource', :browsers
|
111
123
|
end
|
112
|
-
|
113
|
-
describe '#print_table' do
|
114
|
-
let(:resource_id) { 123456 }
|
115
|
-
let(:resource_name) { 'resource name' }
|
116
|
-
let(:resources) { [ RainforestCli::Resources::Resource.new(resource_id, resource_name) ] }
|
117
|
-
|
118
|
-
it 'prints out the resources' do
|
119
|
-
expect(subject).to receive(:puts) do |message|
|
120
|
-
expect(message).to include('Resource ID')
|
121
|
-
expect(message).to include('Resource Name')
|
122
|
-
end
|
123
|
-
|
124
|
-
# Stub dashed the line dividing table header and body
|
125
|
-
expect(subject).to receive(:puts)
|
126
|
-
|
127
|
-
expect(subject).to receive(:puts) do |message|
|
128
|
-
expect(message).to include(resource_id.to_s)
|
129
|
-
expect(message).to include(resource_name)
|
130
|
-
end
|
131
|
-
|
132
|
-
subject.print_table('Resource', resources)
|
133
|
-
end
|
134
|
-
end
|
135
124
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rainforest-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russell Smith
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-02-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -133,6 +133,20 @@ dependencies:
|
|
133
133
|
- - "~>"
|
134
134
|
- !ruby/object:Gem::Version
|
135
135
|
version: '3.2'
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
name: terminal-table
|
138
|
+
requirement: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - '='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 1.7.3
|
143
|
+
type: :runtime
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - '='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.7.3
|
136
150
|
- !ruby/object:Gem::Dependency
|
137
151
|
name: bundler
|
138
152
|
requirement: !ruby/object:Gem::Requirement
|