File tree Expand file tree Collapse file tree 6 files changed +113
-65
lines changed Expand file tree Collapse file tree 6 files changed +113
-65
lines changed Original file line number Diff line number Diff line change
1
+
2
+
3
+ module Superset
4
+ class BasePutRequest < Superset ::Request
5
+ attr_reader :object_id , :params
6
+
7
+ def initialize ( object_id : , params : )
8
+ @object_id = object_id
9
+ @params = params
10
+ end
11
+
12
+ def perform
13
+ validate
14
+ response
15
+ end
16
+
17
+ def response
18
+ @response ||= client . put ( route , params )
19
+ end
20
+
21
+ private
22
+
23
+ def validate
24
+ raise "Error: object_id integer is required" unless object_id . present? && object_id . is_a? ( Integer )
25
+ raise "Error: params hash is required" unless params . present? && params . is_a? ( Hash )
26
+ end
27
+
28
+ def route
29
+ raise "Error: route method is required"
30
+ end
31
+ end
32
+ end
Original file line number Diff line number Diff line change 2
2
#
3
3
# Usage:
4
4
# params = { owners: [ 58, 3 ] }
5
- # Superset::Chart::Put.new(chart_id: 3998 , params: params ).perform
5
+ # Superset::Chart::Put.new(object_id: 202 , params: params ).perform
6
6
7
7
module Superset
8
8
module Chart
9
- class Put < Superset ::Request
10
-
11
- attr_reader :chart_id , :params
12
-
13
- def initialize ( chart_id : , params :)
14
- @chart_id = chart_id
15
- @params = params
16
- end
17
-
18
- def perform
19
- validate_proposed_changes
20
- response
21
- end
22
-
23
- def response
24
- @response ||= client . put ( route , params )
25
- end
9
+ class Put < Superset ::BasePutRequest
26
10
27
11
private
28
12
29
- def validate_proposed_changes
30
- raise "Error: chart_id integer is required" unless chart_id . present? && chart_id . is_a? ( Integer )
31
- raise "Error: params hash is required" unless params . present? && params . is_a? ( Hash )
32
- end
33
-
34
13
def route
35
- "chart/#{ chart_id } "
14
+ "chart/#{ object_id } "
36
15
end
37
16
end
38
17
end
Original file line number Diff line number Diff line change
1
+ # Updates a dataset in Superset with the given params
2
+ #
3
+ # Usage:
4
+ # params = { owners: [ 58, 3 ] }
5
+ # Superset::Dataset::Put.new(object_id: 101, params: params ).perform
6
+
7
+ module Superset
8
+ module Dataset
9
+ class Put < Superset ::BasePutRequest
10
+
11
+ private
12
+
13
+ def route
14
+ "dataset/#{ object_id } "
15
+ end
16
+ end
17
+ end
18
+ end
Original file line number Diff line number Diff line change
1
+ require 'spec_helper'
2
+
3
+ RSpec . shared_examples :base_put_request_shared_examples do
4
+ describe "#perform" do
5
+ subject { described_class . new (
6
+ object_id : object_id ,
7
+ params : params ) }
8
+
9
+ let ( :object_id ) { 226 }
10
+ let ( :params ) { { owners : [ 1 , 2 , 3 ] } }
11
+ let ( :response ) do
12
+ {
13
+ id : object_id ,
14
+ result : { owners : [ 1 , 2 , 3 ] }
15
+ }
16
+ end
17
+
18
+ before do
19
+ allow ( subject ) . to receive ( :response ) . and_return ( response )
20
+ end
21
+
22
+ describe '#perform' do
23
+ context 'with valid params' do
24
+ specify do
25
+ expect ( subject . perform ) . to eq response
26
+ end
27
+ end
28
+
29
+ context 'with invalid params' do
30
+ context 'object_id is empty' do
31
+ let ( :object_id ) { nil }
32
+
33
+ specify do
34
+ expect { subject . perform } . to raise_error ( RuntimeError , "Error: object_id integer is required" )
35
+ end
36
+ end
37
+
38
+ context 'params is empty' do
39
+ let ( :params ) { nil }
40
+
41
+ specify do
42
+ expect { subject . perform } . to raise_error ( RuntimeError , "Error: params hash is required" )
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
Original file line number Diff line number Diff line change 1
1
require 'spec_helper'
2
+ require 'shared/base_put_request_shared_examples'
2
3
3
4
RSpec . describe Superset ::Chart ::Put do
4
- subject { described_class . new (
5
- chart_id : chart_id ,
6
- params : params ) }
7
-
8
- let ( :chart_id ) { 226 }
9
- let ( :params ) { { owners : [ 1 , 2 , 3 ] } }
10
- let ( :response ) do
11
- {
12
- id : chart_id ,
13
- result : { owners : [ 1 , 2 , 3 ] }
14
- }
15
- end
16
-
17
- before do
18
- allow ( subject ) . to receive ( :response ) . and_return ( response )
19
- end
20
-
21
- describe '#perform' do
22
- context 'with valid params' do
23
- specify do
24
- expect ( subject . perform ) . to eq response
25
- end
26
- end
27
-
28
- context 'with invalid params' do
29
- context 'chart_id is empty' do
30
- let ( :chart_id ) { nil }
31
-
32
- specify do
33
- expect { subject . perform } . to raise_error ( RuntimeError , "Error: chart_id integer is required" )
34
- end
35
- end
36
-
37
- context 'params is empty' do
38
- let ( :params ) { nil }
39
-
40
- specify do
41
- expect { subject . perform } . to raise_error ( RuntimeError , "Error: params hash is required" )
42
- end
43
- end
44
- end
5
+ describe 'behaves like a BasePutRequest' do
6
+ it_behaves_like :base_put_request_shared_examples
45
7
end
46
8
end
Original file line number Diff line number Diff line change
1
+ require 'spec_helper'
2
+ require 'shared/base_put_request_shared_examples'
3
+
4
+ RSpec . describe Superset ::Dataset ::Put do
5
+
6
+ describe 'behaves like a BasePutRequest' do
7
+ it_behaves_like :base_put_request_shared_examples
8
+ end
9
+ end
You can’t perform that action at this time.
0 commit comments