65 lines
1.7 KiB
Ruby
65 lines
1.7 KiB
Ruby
require 'spec_helper_min'
|
|
require 'support/helpers'
|
|
|
|
describe Carto::Api::MetricsController do
|
|
include Warden::Test::Helpers
|
|
include HelperMethods
|
|
|
|
before(:all) do
|
|
@user = FactoryGirl.create(:carto_user)
|
|
@intruder = FactoryGirl.create(:carto_user)
|
|
|
|
login(@user)
|
|
end
|
|
|
|
after(:all) do
|
|
logout(@user)
|
|
|
|
@user.destroy
|
|
@instruder&.destroy
|
|
end
|
|
|
|
it 'should accept all existing events' do
|
|
user_id = @user.id
|
|
user_properties = { user_id: user_id, api_key: @user.api_key }
|
|
|
|
Carto::Tracking::Events::Event.descendants.each do |event_class|
|
|
next unless event_class.public_methods.include?(:new)
|
|
|
|
event = event_class.new(user_id, user_id: user_id)
|
|
|
|
event_class.any_instance.stubs(:report!)
|
|
|
|
post_json metrics_url, name: event.name, properties: user_properties do |response|
|
|
response.status.should eq 201
|
|
end
|
|
end
|
|
end
|
|
|
|
it 'should reject non existing events' do
|
|
event_name = 'Everything was a lie'
|
|
|
|
post_json metrics_url, name: event_name do |response|
|
|
response.status.should eq 404
|
|
response.body[:errors].should eq "Event not found: #{event_name}"
|
|
end
|
|
end
|
|
|
|
describe 'validations' do
|
|
it 'should require properties' do
|
|
Carto::Tracking::Events::Event.descendants.each do |event_class|
|
|
next unless event_class.public_methods.include?(:new)
|
|
|
|
event = event_class.new(@user.id, {})
|
|
|
|
unless event.required_properties.empty?
|
|
post_json metrics_url, name: event.name, properties: {} do |response|
|
|
response.status.should eq 422
|
|
response.body[:errors].should eq "#{event.name} is missing the following properties: #{event.required_properties.join(', ')}"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|