dawarich/spec/services/own_tracks/params_spec.rb

189 lines
5 KiB
Ruby

# frozen_string_literal: true
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/files/owntracks/2024-03.rec' }
let(:file) { File.read(file_path) }
let(:json) { OwnTracks::RecParser.new(file).call }
let(:raw_point_params) { json.first }
let(:expected_json) do
{
lonlat: 'POINT(13.332 52.225)',
battery: 94,
ping: 100.266,
altitude: 36,
accuracy: 10,
vertical_accuracy: 4,
velocity: '1.4',
ssid: 'Home Wifi',
bssid: 'b0:f2:8:45:94:33',
tracker_id: 'RO',
timestamp: 1_709_283_789,
inrids: ['5f1d1b'],
in_regions: ['home'],
topic: 'owntracks/test/iPhone 12 Pro',
battery_status: 'charging',
connection: 'wifi',
trigger: 'background_event',
raw_data: { 'bs' => 2,
'p' => 100.266,
'batt' => 94,
'_type' => 'location',
'tid' => 'RO',
'topic' => 'owntracks/test/iPhone 12 Pro',
'alt' => 36,
'lon' => 13.332,
'vel' => 5,
't' => 'p',
'BSSID' => 'b0:f2:8:45:94:33',
'SSID' => 'Home Wifi',
'conn' => 'w',
'vac' => 4,
'acc' => 10,
'tst' => 1_709_283_789,
'lat' => 52.225,
'm' => 1,
'inrids' => ['5f1d1b'],
'inregions' => ['home'],
'_http' => true }
}
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: 1) }
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: 2) }
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: 3) }
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(t: '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(t: '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(t: '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(t: '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(t: '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(t: '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
before { raw_point_params[:t] = 'unknown' }
it 'returns parsed params' do
expect(params[:trigger]).to eq('unknown')
end
end
end
end