Files
sovereign_ai/SovereignAI-Starter/flutter_app/test/project_folder_service_test.dart
T

66 lines
1.7 KiB
Dart

import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_app/core/projects/project_folder_service.dart';
void main() {
test('creates a new project folder under the chosen parent', () async {
final parent = await Directory.systemTemp.createTemp(
'mithqal-project-parent-',
);
addTearDown(() => parent.delete(recursive: true));
final createdPath = await createProjectFolder(parent.path, 'تجربة أولى');
expect(await Directory(createdPath).exists(), isTrue);
expect(
Directory(createdPath).parent.resolveSymbolicLinksSync(),
parent.path,
);
});
test('rejects unsafe, hidden, reserved, and empty project names', () async {
final parent = await Directory.systemTemp.createTemp(
'mithqal-project-invalid-',
);
addTearDown(() => parent.delete(recursive: true));
for (final name in [
'',
'.',
'..',
'.hidden',
r'a\b',
'CON',
'node_modules',
]) {
await expectLater(
createProjectFolder(parent.path, name),
throwsArgumentError,
);
}
expect(await parent.list().isEmpty, isTrue);
});
test('does not overwrite an existing file or directory', () async {
final parent = await Directory.systemTemp.createTemp(
'mithqal-project-collision-',
);
addTearDown(() => parent.delete(recursive: true));
await Directory(
'${parent.path}${Platform.pathSeparator}already-there',
).create();
await expectLater(
createProjectFolder(parent.path, 'already-there'),
throwsArgumentError,
);
expect(
await Directory(
'${parent.path}${Platform.pathSeparator}already-there',
).exists(),
isTrue,
);
});
}