mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 17:21:38 -05:00
194 lines
5.2 KiB
Ruby
194 lines
5.2 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe OwnTracks::Params do
|
|
describe '#call' do
|
|
subject(:params) { described_class.new(raw_point_params).call }
|
|
|
|
let(:file_path) { 'spec/fixtures/owntracks_export.json' }
|
|
let(:file) { File.open(file_path) }
|
|
let(:json) { JSON.parse(file.read) }
|
|
let(:user) { json.keys.first }
|
|
let(:topic) { json[user].keys.first }
|
|
let(:raw_point_params) { json[user][topic].first }
|
|
|
|
let(:expected_json) do
|
|
{
|
|
latitude: 40.7128,
|
|
longitude: -74.006,
|
|
battery_status: 'unknown',
|
|
battery: 85,
|
|
ping: nil,
|
|
altitude: 41,
|
|
accuracy: 8,
|
|
vertical_accuracy: 3,
|
|
velocity: nil,
|
|
connection: 'wifi',
|
|
ssid: 'Home Wifi',
|
|
bssid: 'b0:f2:8:45:94:33',
|
|
trigger: 'unknown',
|
|
tracker_id: 'RO',
|
|
timestamp: 1706965203,
|
|
inrids: ['5f1d1b'],
|
|
in_regions: ['home'],
|
|
topic: 'owntracks/test/iPhone 12 Pro',
|
|
raw_data: {
|
|
'batt'=>85,
|
|
'lon'=>-74.006,
|
|
'acc'=>8,
|
|
'bs'=>2,
|
|
'inrids'=>['5f1d1b'],
|
|
'BSSID'=>'b0:f2:8:45:94:33',
|
|
'SSID'=>'Home Wifi',
|
|
'vac'=>3,
|
|
'inregions'=>['home'],
|
|
'lat'=>40.7128,
|
|
'topic'=>'owntracks/test/iPhone 12 Pro',
|
|
't'=>'p',
|
|
'conn'=>'w',
|
|
'm'=>1,
|
|
'tst'=>1706965203,
|
|
'alt'=>41,
|
|
'_type'=>'location',
|
|
'tid'=>'RO',
|
|
'_http'=>true,
|
|
'ghash'=>'u33d773',
|
|
'isorcv'=>'2024-02-03T13:00:03Z',
|
|
'isotst'=>'2024-02-03T13:00:03Z',
|
|
'disptst'=>'2024-02-03 13:00:03'
|
|
}
|
|
}
|
|
end
|
|
|
|
it 'returns parsed params' do
|
|
expect(params).to eq(expected_json)
|
|
end
|
|
|
|
context 'when battery status is unplugged' do
|
|
let(:raw_point_params) { super().merge(bs: 'u') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:battery_status]).to eq('unplugged')
|
|
end
|
|
end
|
|
|
|
context 'when battery status is charging' do
|
|
let(:raw_point_params) { super().merge(bs: 'c') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:battery_status]).to eq('charging')
|
|
end
|
|
end
|
|
|
|
context 'when battery status is full' do
|
|
let(:raw_point_params) { super().merge(bs: 'f') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:battery_status]).to eq('full')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is background_event' do
|
|
let(:raw_point_params) { super().merge(m: 'p') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('background_event')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is circular_region_event' do
|
|
let(:raw_point_params) { super().merge(m: 'c') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('circular_region_event')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is beacon_event' do
|
|
let(:raw_point_params) { super().merge(m: 'b') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('beacon_event')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is report_location_message_event' do
|
|
let(:raw_point_params) { super().merge(m: 'r') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('report_location_message_event')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is manual_event' do
|
|
let(:raw_point_params) { super().merge(m: 'u') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('manual_event')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is timer_based_event' do
|
|
let(:raw_point_params) { super().merge(m: 't') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('timer_based_event')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is settings_monitoring_event' do
|
|
let(:raw_point_params) { super().merge(m: 'v') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('settings_monitoring_event')
|
|
end
|
|
end
|
|
|
|
context 'when connection is mobile' do
|
|
let(:raw_point_params) { super().merge(conn: 'm') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:connection]).to eq('mobile')
|
|
end
|
|
end
|
|
|
|
context 'when connection is wifi' do
|
|
let(:raw_point_params) { super().merge(conn: 'w') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:connection]).to eq('wifi')
|
|
end
|
|
end
|
|
|
|
context 'when connection is offline' do
|
|
let(:raw_point_params) { super().merge(conn: 'o') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:connection]).to eq('offline')
|
|
end
|
|
end
|
|
|
|
context 'when connection is unknown' do
|
|
let(:raw_point_params) { super().merge(conn: 'unknown') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:connection]).to eq('unknown')
|
|
end
|
|
end
|
|
|
|
context 'when battery status is unknown' do
|
|
let(:raw_point_params) { super().merge(bs: 'unknown') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:battery_status]).to eq('unknown')
|
|
end
|
|
end
|
|
|
|
context 'when trigger is unknown' do
|
|
let(:raw_point_params) { super().merge(m: 'unknown') }
|
|
|
|
it 'returns parsed params' do
|
|
expect(params[:trigger]).to eq('unknown')
|
|
end
|
|
end
|
|
end
|
|
end
|