mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
177 lines
5.6 KiB
Ruby
177 lines
5.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe Photoprism::ImportGeodata do
|
|
describe '#call' do
|
|
subject(:service) { described_class.new(user).call }
|
|
|
|
let(:user) do
|
|
create(:user, settings: { 'photoprism_url' => 'http://photoprism.app', 'photoprism_api_key' => '123456' })
|
|
end
|
|
let(:photoprism_data) do
|
|
[
|
|
{
|
|
'ID' => '82',
|
|
'UID' => 'psnveqq089xhy1c3',
|
|
'Type' => 'image',
|
|
'TypeSrc' => '',
|
|
'TakenAt' => '2024-08-18T14:11:05Z',
|
|
'TakenAtLocal' => '2024-08-18T16:11:05Z',
|
|
'TakenSrc' => 'meta',
|
|
'TimeZone' => 'Europe/Prague',
|
|
'Path' => '2024/08',
|
|
'Name' => '20240818_141105_44E61AED',
|
|
'OriginalName' => 'PXL_20240818_141105789',
|
|
'Title' => 'Moment / Karlovy Vary / 2024',
|
|
'Description' => '',
|
|
'Year' => 2024,
|
|
'Month' => 8,
|
|
'Day' => 18,
|
|
'Country' => 'cz',
|
|
'Stack' => 0,
|
|
'Favorite' => false,
|
|
'Private' => false,
|
|
'Iso' => 37,
|
|
'FocalLength' => 21,
|
|
'FNumber' => 2.2,
|
|
'Exposure' => '1/347',
|
|
'Quality' => 4,
|
|
'Resolution' => 10,
|
|
'Color' => 2,
|
|
'Scan' => false,
|
|
'Panorama' => false,
|
|
'CameraID' => 8,
|
|
'CameraSrc' => 'meta',
|
|
'CameraMake' => 'Google',
|
|
'CameraModel' => 'Pixel 7 Pro',
|
|
'LensID' => 11,
|
|
'LensMake' => 'Google',
|
|
'LensModel' => 'Pixel 7 Pro front camera 2.74mm f/2.2',
|
|
'Altitude' => 423,
|
|
'Lat' => 50.11,
|
|
'Lng' => 12.12,
|
|
'CellID' => 's2:47a09944f33c',
|
|
'PlaceID' => 'cz:ciNqTjWuq6NN',
|
|
'PlaceSrc' => 'meta',
|
|
'PlaceLabel' => 'Karlovy Vary, Severozápad, Czech Republic',
|
|
'PlaceCity' => 'Karlovy Vary',
|
|
'PlaceState' => 'Severozápad',
|
|
'PlaceCountry' => 'cz',
|
|
'InstanceID' => '',
|
|
'FileUID' => 'fsnveqqeusn692qo',
|
|
'FileRoot' => '/',
|
|
'FileName' => '2024/08/20240818_141105_44E61AED.jpg',
|
|
'Hash' => 'cc5d0f544e52b288d7c8460d2e1bb17fa66e6089',
|
|
'Width' => 2736,
|
|
'Height' => 3648,
|
|
'Portrait' => true,
|
|
'Merged' => false,
|
|
'CreatedAt' => '2024-12-02T14:25:38Z',
|
|
'UpdatedAt' => '2024-12-02T14:25:38Z',
|
|
'EditedAt' => '0001-01-01T00:00:00Z',
|
|
'CheckedAt' => '2024-12-02T14:36:45Z',
|
|
'Files' => nil
|
|
},
|
|
{
|
|
'ID' => '81',
|
|
'UID' => 'psnveqpl96gcfdzf',
|
|
'Type' => 'image',
|
|
'TypeSrc' => '',
|
|
'TakenAt' => '2024-08-18T14:11:04Z',
|
|
'TakenAtLocal' => '2024-08-18T16:11:04Z',
|
|
'TakenSrc' => 'meta',
|
|
'TimeZone' => 'Europe/Prague',
|
|
'Path' => '2024/08',
|
|
'Name' => '20240818_141104_E9949CD4',
|
|
'OriginalName' => 'PXL_20240818_141104633',
|
|
'Title' => 'Portrait / Karlovy Vary / 2024',
|
|
'Description' => '',
|
|
'Year' => 2024,
|
|
'Month' => 8,
|
|
'Day' => 18,
|
|
'Country' => 'cz',
|
|
'Stack' => 0,
|
|
'Favorite' => false,
|
|
'Private' => false,
|
|
'Iso' => 43,
|
|
'FocalLength' => 21,
|
|
'FNumber' => 2.2,
|
|
'Exposure' => '1/356',
|
|
'Faces' => 1,
|
|
'Quality' => 4,
|
|
'Resolution' => 10,
|
|
'Color' => 2,
|
|
'Scan' => false,
|
|
'Panorama' => false,
|
|
'CameraID' => 8,
|
|
'CameraSrc' => 'meta',
|
|
'CameraMake' => 'Google',
|
|
'CameraModel' => 'Pixel 7 Pro',
|
|
'LensID' => 11,
|
|
'LensMake' => 'Google',
|
|
'LensModel' => 'Pixel 7 Pro front camera 2.74mm f/2.2',
|
|
'Altitude' => 423,
|
|
'Lat' => 50.21,
|
|
'Lng' => 12.85,
|
|
'CellID' => 's2:47a09944f33c',
|
|
'PlaceID' => 'cz:ciNqTjWuq6NN',
|
|
'PlaceSrc' => 'meta',
|
|
'PlaceLabel' => 'Karlovy Vary, Severozápad, Czech Republic',
|
|
'PlaceCity' => 'Karlovy Vary',
|
|
'PlaceState' => 'Severozápad',
|
|
'PlaceCountry' => 'cz',
|
|
'InstanceID' => '',
|
|
'FileUID' => 'fsnveqp9xsl7onsv',
|
|
'FileRoot' => '/',
|
|
'FileName' => '2024/08/20240818_141104_E9949CD4.jpg',
|
|
'Hash' => 'd5dfadc56a0b63051dfe0b5dec55ff1d81f033b7',
|
|
'Width' => 2736,
|
|
'Height' => 3648,
|
|
'Portrait' => true,
|
|
'Merged' => false,
|
|
'CreatedAt' => '2024-12-02T14:25:37Z',
|
|
'UpdatedAt' => '2024-12-02T14:25:37Z',
|
|
'EditedAt' => '0001-01-01T00:00:00Z',
|
|
'CheckedAt' => '2024-12-02T14:36:45Z',
|
|
'Files' => nil
|
|
}
|
|
].to_json
|
|
end
|
|
|
|
before do
|
|
stub_request(:get, %r{http://photoprism\.app/api/v1/photos}).with(
|
|
headers: {
|
|
'Accept' => 'application/json',
|
|
'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
|
|
'Authorization' => 'Bearer 123456',
|
|
'User-Agent' => 'Ruby'
|
|
}
|
|
).to_return(status: 200, body: photoprism_data, headers: {})
|
|
end
|
|
|
|
it 'creates import' do
|
|
expect { service }.to change { Import.count }.by(1)
|
|
end
|
|
|
|
it 'enqueues Import::ProcessJob' do
|
|
expect(Import::ProcessJob).to receive(:perform_later)
|
|
|
|
service
|
|
end
|
|
|
|
context 'when import already exists' do
|
|
before { service }
|
|
|
|
it 'does not create new import' do
|
|
expect { service }.not_to(change { Import.count })
|
|
end
|
|
|
|
it 'does not enqueue Import::ProcessJob' do
|
|
expect(Import::ProcessJob).to_not receive(:perform_later)
|
|
|
|
service
|
|
end
|
|
end
|
|
end
|
|
end
|