mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
Add specs for Photoprism::CachePreviewToken and Photoprism::ImportGeodata
This commit is contained in:
parent
243a85ed4e
commit
4c93579890
2 changed files with 196 additions and 0 deletions
19
spec/services/photoprism/cache_preview_token_spec.rb
Normal file
19
spec/services/photoprism/cache_preview_token_spec.rb
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Photoprism::CachePreviewToken, type: :service do
|
||||
let(:user) { double('User', id: 1) }
|
||||
let(:preview_token) { 'sample_token' }
|
||||
let(:service) { described_class.new(user, preview_token) }
|
||||
|
||||
describe '#call' do
|
||||
it 'writes the preview token to the cache with the correct key' do
|
||||
expect(Rails.cache).to receive(:write).with(
|
||||
"dawarich/photoprism_preview_token_#{user.id}", preview_token
|
||||
)
|
||||
|
||||
service.call
|
||||
end
|
||||
end
|
||||
end
|
||||
177
spec/services/photoprism/import_geodata_spec.rb
Normal file
177
spec/services/photoprism/import_geodata_spec.rb
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
# 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 ImportJob' do
|
||||
expect(ImportJob).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 ImportJob' do
|
||||
expect(ImportJob).to_not receive(:perform_later)
|
||||
|
||||
service
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in a new issue