cartodb/spec/requests/carto/api/states_controller_spec.rb
2020-06-15 10:58:47 +08:00

83 lines
2.1 KiB
Ruby

require 'spec_helper_min'
require 'support/helpers'
require 'factories/carto_visualizations'
describe Carto::Api::StatesController do
include Carto::Factories::Visualizations
include HelperMethods
let(:state) do
{
"map": {
"center": [40.59896507038094, -73.69937896728516],
"zoom": 12
},
"widgets":
{
"314accaf-61e7-4a37-803d-c1dd6ffaafed": {
"acceptedCategories": ["Manolo,Escobar"]
},
"fc4d1354-1de7-490f-a3cc-bc95614177e6": {
"min": 29.04,
"max": 36.31
}
}
}
end
before(:all) do
@user = FactoryGirl.create(:carto_user)
@intruder = FactoryGirl.create(:carto_user)
@map, @table, @table_visualization, @visualization = create_full_visualization(@user)
end
after(:all) do
destroy_full_visualization(@map, @table, @table_visualization, @visualization)
@user.destroy
@intruder.destroy
end
def state_should_be_correct(response)
response.body[:json].should eq @visualization.reload.state.json
end
describe '#update' do
def update_state_url(user: @user, visualization: @visualization)
state_url(
user_domain: user.subdomain,
visualization_id: visualization.id,
api_key: user.api_key
)
end
it 'update a state' do
put_json update_state_url, json: state do |response|
response.status.should eq 200
state_should_be_correct(response)
end
end
it 'does not trigger named map updates' do
Carto::NamedMaps::Api.any_instance.expects(:create).never
Carto::NamedMaps::Api.any_instance.expects(:update).never
put_json update_state_url, json: state do |response|
response.status.should eq 200
state_should_be_correct(response)
end
end
it 'returns 403 if user does not own the visualization' do
put_json update_state_url(user: @intruder), {} do |response|
response.status.should eq 403
response.body[:errors].should_not be_nil
response.body[:errors].should_not be_empty
end
end
end
end