This fixes issue #417 where autoupdate installer files were not deleted on macOS, leading to accumulation of old installers. Key changes: - Store update files in application-specific directory - Clear update files directory on every app launch Other supporting changes: - Refactor file system operations to be more testable and reusable - Improve separation of concerns in directory management - Enhance dependency injection for auto-update logic - Fix async completion to support `await` operations - Add additional logging and revise some log messages during updates
66 lines
2.5 KiB
TypeScript
66 lines
2.5 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import type { RuntimeEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironment';
|
|
import { ScriptEnvironmentDiagnosticsCollector } from '@/infrastructure/ScriptDiagnostics/ScriptEnvironmentDiagnosticsCollector';
|
|
import { RuntimeEnvironmentStub } from '@tests/unit/shared/Stubs/RuntimeEnvironmentStub';
|
|
import { ApplicationDirectoryProviderStub } from '@tests/unit/shared/Stubs/ApplicationDirectoryProviderStub';
|
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
|
import type { ApplicationDirectoryProvider } from '@/infrastructure/FileSystem/Directory/ApplicationDirectoryProvider';
|
|
|
|
describe('ScriptEnvironmentDiagnosticsCollector', () => {
|
|
it('collects operating system path correctly', async () => {
|
|
// arrange
|
|
const expectedOperatingSystem = OperatingSystem.KaiOS;
|
|
const environment = new RuntimeEnvironmentStub()
|
|
.withOs(expectedOperatingSystem);
|
|
const collector = new CollectorBuilder()
|
|
.withEnvironment(environment)
|
|
.build();
|
|
|
|
// act
|
|
const diagnosticData = await collector.collectDiagnosticInformation();
|
|
|
|
// assert
|
|
const actualOperatingSystem = diagnosticData.currentOperatingSystem;
|
|
expect(actualOperatingSystem).to.equal(expectedOperatingSystem);
|
|
});
|
|
it('collects path correctly', async () => {
|
|
// arrange
|
|
const expectedScriptsPath = '/expected/scripts/path';
|
|
const directoryProvider = new ApplicationDirectoryProviderStub()
|
|
.withDirectoryPath('script-runs', expectedScriptsPath);
|
|
const collector = new CollectorBuilder()
|
|
.withScriptDirectoryProvider(directoryProvider)
|
|
.build();
|
|
|
|
// act
|
|
const diagnosticData = await collector.collectDiagnosticInformation();
|
|
|
|
// assert
|
|
const actualScriptsPath = diagnosticData.scriptsDirectoryAbsolutePath;
|
|
expect(actualScriptsPath).to.equal(expectedScriptsPath);
|
|
});
|
|
});
|
|
|
|
class CollectorBuilder {
|
|
private directoryProvider: ApplicationDirectoryProvider = new ApplicationDirectoryProviderStub();
|
|
|
|
private environment: RuntimeEnvironment = new RuntimeEnvironmentStub();
|
|
|
|
public withEnvironment(environment: RuntimeEnvironment): this {
|
|
this.environment = environment;
|
|
return this;
|
|
}
|
|
|
|
public withScriptDirectoryProvider(directoryProvider: ApplicationDirectoryProvider): this {
|
|
this.directoryProvider = directoryProvider;
|
|
return this;
|
|
}
|
|
|
|
public build() {
|
|
return new ScriptEnvironmentDiagnosticsCollector(
|
|
this.directoryProvider,
|
|
this.environment,
|
|
);
|
|
}
|
|
}
|