mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
49 lines
1.3 KiB
Ruby
49 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe Export, type: :model do
|
|
describe 'associations' do
|
|
it { is_expected.to belong_to(:user) }
|
|
end
|
|
|
|
describe 'enums' do
|
|
it { is_expected.to define_enum_for(:status).with_values(created: 0, processing: 1, completed: 2, failed: 3) }
|
|
it { is_expected.to define_enum_for(:file_format).with_values(json: 0, gpx: 1, archive: 2) }
|
|
it { is_expected.to define_enum_for(:file_type).with_values(points: 0, user_data: 1) }
|
|
end
|
|
|
|
describe 'callbacks' do
|
|
describe 'after_commit' do
|
|
context 'when the export is created' do
|
|
let(:export) { build(:export, file_type: :points) }
|
|
|
|
it 'enqueues the ExportJob' do
|
|
expect(ExportJob).to receive(:perform_later)
|
|
|
|
export.save!
|
|
end
|
|
|
|
context 'when the export is a user data export' do
|
|
let(:export) { build(:export, file_type: :user_data) }
|
|
|
|
it 'does not enqueue the ExportJob' do
|
|
expect(ExportJob).not_to receive(:perform_later).with(export.id)
|
|
|
|
export.save!
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'when the export is destroyed' do
|
|
let(:export) { create(:export) }
|
|
|
|
it 'removes the attached file' do
|
|
expect(export.file).to receive(:purge_later)
|
|
|
|
export.destroy!
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|