rainforest-cli 1.9.0 → 1.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36eb7257778cfda59e340fea593c2b9662390949
4
- data.tar.gz: 0c9d06828b51075a1ccd95b2710200ad94e6e5ac
3
+ metadata.gz: aefdfe1a4a5ecf73e5b919dbbf6da1bb7d13f5c1
4
+ data.tar.gz: 88ee5992a58f3340535f3b1d21ed54f8fea53cc8
5
5
  SHA512:
6
- metadata.gz: ccddbb99af989e0d96f9761c67ed2a2a2dc9d1731264890d78adb8adb16170c51da4b17ca168c3cb602e21a793feb324307b4adf4d7195d78f27c45773b00cf5
7
- data.tar.gz: 417541f667b2485f05f1b9528822832b19ac083489bff2fd93d79d90ff5a7c80a4dca3282f902fe61a9da291e1efe129b9dfcba838d6d80a9be35b6ba33725cd
6
+ metadata.gz: 4787e5a59c11fe612a982f2aabb51e6ed5386e2fef18fb5771aad337d54334b7514dfe4ea82d5738c51fb39496e28e13a5f3d440ac0773298eba2082c724969f
7
+ data.tar.gz: 64c1ef609db5add1c02c19e04d241e73520123b15d5c3fc60c0388875e3994b670f934c6b78b52c5f3750edc829445477a8b71ed544a6a676d4b9dd9d6ebf1b7
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Rainforest CLI Changelog
2
2
 
3
+ ## 1.10.0 - 19th September 2016
4
+ - Add `--overwrite-variable` option to overwrite existing tabular variables if the
5
+ desired variable name is already taken when uploading CSVs. (ebf4ab90c5db2589695eaf6c3d4c4206bad17e7b,
6
+ @epaulet)
7
+
3
8
  ## 1.9.0 - 14th September 2016
4
9
  - Add `upload-csv` command for updating tabular variables without starting a new run.
5
10
  (069e943cd94cbb08e6f00347ab6c8327372897ce, @epaulet)
data/README.md CHANGED
@@ -136,11 +136,16 @@ rainforest report --run-id <run-id> --junit-file rainforest.xml
136
136
 
137
137
  #### Updating Tabular Variables
138
138
 
139
- Upload a CSV file to update your tabular variables
139
+ Upload a CSV to create a new tabular variables.
140
140
  ```bash
141
141
  rainforest csv-upload --import-variable-csv-file PATH/TO/CSV.csv --import-variable-name my_variable
142
142
  ```
143
143
 
144
+ Upload a CSV to update an existing tabular variables.
145
+ ```bash
146
+ rainforest csv-upload --import-variable-csv-file PATH/TO/CSV.csv --import-variable-name my_variable --overwrite-variable
147
+ ```
148
+
144
149
  ## Options
145
150
 
146
151
  ### General
@@ -9,6 +9,7 @@ module RainforestCli
9
9
  def initialize(options)
10
10
  @generator_name = options.import_name
11
11
  @file = options.import_file_name
12
+ @overwrite_variable = options.overwrite_variable
12
13
  end
13
14
 
14
15
  def row_data columns, values
@@ -27,9 +28,21 @@ module RainforestCli
27
28
  end
28
29
  raise 'Invalid schema in CSV. You must include headers in first row.' if !columns
29
30
 
30
- print 'Creating custom step variable'
31
+ if @overwrite_variable
32
+ puts 'Checking for existing tabular variables.'
33
+ generators = http_client.get('/generators')
34
+ generator = generators.find { |g| g['name'] == @generator_name }
35
+
36
+ if generator
37
+ puts 'Existing tabular variable found. Deleting old data.'
38
+ response = http_client.delete("/generators/#{generator['id']}")
39
+ raise "Error deleting old tabular variable: #{response['error']}" if response['error']
40
+ end
41
+ end
42
+
43
+ print 'Creating new tabular variable'
31
44
  response = http_client.post '/generators', { name: @generator_name, description: @generator_name, columns: columns }
32
- raise "Error creating custom step variable: #{response['error']}" if response['error']
45
+ raise "Error creating tabular variable: #{response['error']}" if response['error']
33
46
  puts "\t[OK]"
34
47
 
35
48
  @columns = response['columns']
@@ -39,7 +52,7 @@ module RainforestCli
39
52
  p = ProgressBar.create(title: 'Rows', total: rows.count, format: '%a %B %p%% %t')
40
53
 
41
54
  # Insert the data
42
- Parallel.each(rows, in_threads: 16, finish: lambda { |_item, _i, _result| p.increment }) do |row|
55
+ Parallel.each(rows, in_threads: RainforestCli::THREADS, finish: lambda { |_item, _i, _result| p.increment }) do |row|
43
56
  response = http_client.post("/generators/#{@generator_id}/rows", {data: row_data(@columns, row)})
44
57
  raise response['error'] if response['error']
45
58
  end
@@ -7,7 +7,7 @@ module RainforestCli
7
7
  attr_reader :command, :token, :tags, :conflict, :browsers, :site_id, :environment_id,
8
8
  :import_file_name, :import_name, :custom_url, :description, :folder,
9
9
  :debug, :file_name, :test_folder, :embed_tests, :app_source_url, :crowd, :run_id,
10
- :junit_file
10
+ :junit_file, :overwrite_variable
11
11
 
12
12
  TOKEN_NOT_REQUIRED = %w{new validate}.freeze
13
13
 
@@ -42,14 +42,18 @@ module RainforestCli
42
42
  @crowd = value
43
43
  end
44
44
 
45
- opts.on('--import-variable-csv-file FILE', 'Import step variables; CSV data') do |value|
45
+ opts.on('--import-variable-csv-file FILE', 'Import tabular step variables; CSV data') do |value|
46
46
  @import_file_name = value
47
47
  end
48
48
 
49
- opts.on('--import-variable-name NAME', 'Import step variables; Name of variable (note, will be replaced if exists)') do |value|
49
+ opts.on('--import-variable-name NAME', 'Import tabular step variables; Name of variable') do |value|
50
50
  @import_name = value
51
51
  end
52
52
 
53
+ opts.on('--overwrite-variable', 'Import tabular step variables: overwrite existing variable if desired variable name is taken') do
54
+ @overwrite_variable = true
55
+ end
56
+
53
57
  opts.on('--git-trigger', 'Only run if the last commit contains @rainforestapp') do |_value|
54
58
  @git_trigger = true
55
59
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module RainforestCli
3
- VERSION = '1.9.0'
3
+ VERSION = '1.10.0'
4
4
  end
@@ -8,43 +8,104 @@ describe RainforestCli::CSVImporter do
8
8
  end
9
9
 
10
10
  describe '.import' do
11
- let(:options) { instance_double('RainforestCli::Options', import_name: 'variables', import_file_name: csv_file) }
11
+ let(:options) { instance_double('RainforestCli::Options', import_name: 'variables', import_file_name: csv_file, overwrite_variable: overwrite_variable) }
12
12
  subject { described_class.new(options) }
13
13
  let(:columns) { %w(email pass) }
14
+ let(:generator_id) { 12345 }
15
+ let(:existing_generators) { [] }
14
16
 
15
17
  let(:success_response) do
16
18
  {
17
- 'id' => 12345,
19
+ 'id' => generator_id,
18
20
  'columns' => columns.each_with_index.map { |col, i| { 'id' => i, 'name' => col } },
19
21
  }
20
22
  end
21
23
 
22
- it 'should post the schema to the generators API' do
23
- expect(http_client).to receive(:post)
24
- .with('/generators', {
25
- name: 'variables',
26
- description: 'variables',
27
- columns: columns.map {|col| { name: col } },
28
- })
29
- .and_return success_response
30
-
31
- expect(http_client).to receive(:post)
32
- .with('/generators/12345/rows', {
33
- data: {
34
- 0 => 'russ@rainforestqa.com',
35
- 1 => 'abc123',
36
- },
37
- }).and_return({})
38
-
39
- expect(http_client).to receive(:post)
40
- .with('/generators/12345/rows', {
41
- data: {
42
- 0 => 'bob@example.com',
43
- 1 => 'hunter2',
44
- },
45
- }).and_return({})
46
-
47
- subject.import
24
+ before do
25
+ allow(http_client).to receive(:get).with('/generators').and_return(existing_generators)
26
+ end
27
+
28
+ shared_examples 'it properly uploads variables' do
29
+ it 'makes the proper API interactions' do
30
+ expect(http_client).to receive(:post)
31
+ .with('/generators', {
32
+ name: 'variables',
33
+ description: 'variables',
34
+ columns: columns.map {|col| { name: col } },
35
+ })
36
+ .and_return success_response
37
+
38
+ expect(http_client).to receive(:post)
39
+ .with("/generators/#{generator_id}/rows", {
40
+ data: {
41
+ 0 => 'russ@rainforestqa.com',
42
+ 1 => 'abc123',
43
+ },
44
+ }).and_return({})
45
+
46
+ expect(http_client).to receive(:post)
47
+ .with("/generators/#{generator_id}/rows", {
48
+ data: {
49
+ 0 => 'bob@example.com',
50
+ 1 => 'hunter2',
51
+ },
52
+ }).and_return({})
53
+ subject.import
54
+ end
55
+ end
56
+
57
+ context 'without variable overwriting' do
58
+ let(:overwrite_variable) { nil }
59
+
60
+ it_behaves_like 'it properly uploads variables'
61
+
62
+ context 'tabular variable with given name already exists' do
63
+ let(:existing_generators) do
64
+ [
65
+ {
66
+ 'id' => 98765,
67
+ 'name' => 'existing',
68
+ },
69
+ {
70
+ 'id' => generator_id,
71
+ 'name' => 'variables',
72
+ },
73
+ ]
74
+ end
75
+
76
+ before do
77
+ expect(http_client).to_not receive(:delete)
78
+ end
79
+
80
+ it_behaves_like 'it properly uploads variables'
81
+ end
82
+ end
83
+
84
+ context 'with variable overwriting' do
85
+ let(:overwrite_variable) { true }
86
+
87
+ it_behaves_like 'it properly uploads variables'
88
+
89
+ context 'tabular variable with given name already exists' do
90
+ let(:existing_generators) do
91
+ [
92
+ {
93
+ 'id' => 98765,
94
+ 'name' => 'existing',
95
+ },
96
+ {
97
+ 'id' => generator_id,
98
+ 'name' => 'variables',
99
+ },
100
+ ]
101
+ end
102
+
103
+ before do
104
+ expect(http_client).to receive(:delete).with("/generators/#{generator_id}").and_return({})
105
+ end
106
+
107
+ it_behaves_like 'it properly uploads variables'
108
+ end
48
109
  end
49
110
  end
50
111
  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.9.0
4
+ version: 1.10.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: 2016-09-14 00:00:00.000000000 Z
12
+ date: 2016-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty