Skip to content

Commit a3a3095

Browse files
authored
Merge pull request #38 from rdytech/AC-11246-add-chart-put-endpoint
Ac 11246 add chart put endpoint
2 parents ae22a53 + cb2f07f commit a3a3095

File tree

7 files changed

+132
-1
lines changed

7 files changed

+132
-1
lines changed

lib/superset/base_put_request.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module Superset
2+
class BasePutRequest < Superset::Request
3+
attr_reader :object_id, :params
4+
5+
def initialize(object_id: ,params: )
6+
@object_id = object_id
7+
@params = params
8+
end
9+
10+
def perform
11+
validate
12+
response
13+
end
14+
15+
def response
16+
@response ||= client.put(route, params)
17+
end
18+
19+
private
20+
21+
def validate
22+
raise "Error: object_id integer is required" unless object_id.present? && object_id.is_a?(Integer)
23+
raise "Error: params hash is required" unless params.present? && params.is_a?(Hash)
24+
end
25+
26+
def route
27+
raise "Error: route method is required"
28+
end
29+
end
30+
end

lib/superset/chart/put.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Updates a chart in Superset with the given params
2+
#
3+
# Usage:
4+
# params = { owners: [ 58, 3 ] }
5+
# Superset::Chart::Put.new(object_id: 202, params: params ).perform
6+
7+
module Superset
8+
module Chart
9+
class Put < Superset::BasePutRequest
10+
11+
private
12+
13+
def route
14+
"chart/#{object_id}"
15+
end
16+
end
17+
end
18+
end

lib/superset/chart/update_dataset.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def params_updated
4343
new_params.merge!("query_context": query_context.to_json) # update to point to the new query context
4444
new_params.merge!("query_context_generation": true) # new param set to true to regenerate the query context
4545
end
46-
46+
4747
new_params
4848
end
4949
end

lib/superset/dataset/put.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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

spec/superset/chart/put_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
require 'spec_helper'
2+
require 'shared/base_put_request_shared_examples'
3+
4+
RSpec.describe Superset::Chart::Put do
5+
describe 'behaves like a BasePutRequest' do
6+
it_behaves_like :base_put_request_shared_examples
7+
end
8+
end

spec/superset/dataset/put_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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

0 commit comments

Comments
 (0)