69 lines
2.0 KiB
Dart
69 lines
2.0 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:please_pay_me/core/config/app_config.dart';
|
|
import 'package:please_pay_me/core/config/env_file.dart';
|
|
|
|
void main() {
|
|
group('parseEnvFile', () {
|
|
test('reads keys, comments and quoted values', () {
|
|
const source = '''
|
|
# comment
|
|
PPM_API_BASE_URL=https://please-pay-me.ru/
|
|
PPM_WEB_URL="https://please-pay-me.ru"
|
|
PPM_DEMO=false
|
|
|
|
EMPTY=
|
|
''';
|
|
|
|
final values = parseEnvFile(source);
|
|
|
|
expect(values['PPM_API_BASE_URL'], 'https://please-pay-me.ru/');
|
|
expect(values['PPM_WEB_URL'], 'https://please-pay-me.ru');
|
|
expect(values['PPM_DEMO'], 'false');
|
|
expect(values.containsKey('EMPTY'), isTrue);
|
|
expect(values['EMPTY'], '');
|
|
});
|
|
});
|
|
|
|
group('AppConfig.fromMap', () {
|
|
test('strips a trailing slash and defaults the cabinet URL', () {
|
|
final config = AppConfig.fromMap({
|
|
'PPM_API_BASE_URL': 'https://please-pay-me.ru/',
|
|
});
|
|
|
|
expect(config.apiBaseUrl, 'https://please-pay-me.ru');
|
|
expect(config.webCabinetUrl, 'https://please-pay-me.ru');
|
|
expect(config.demoMode, isFalse);
|
|
});
|
|
|
|
test('empty map uses the production cabinet', () {
|
|
final config = AppConfig.fromMap(const {});
|
|
|
|
expect(config.apiBaseUrl, AppConfig.productionOrigin);
|
|
expect(config.webCabinetUrl, AppConfig.productionOrigin);
|
|
expect(config.demoMode, isFalse);
|
|
});
|
|
|
|
test('PPM_DEMO=true forces demo even when a URL is set', () {
|
|
final config = AppConfig.fromMap({
|
|
'PPM_API_BASE_URL': 'https://please-pay-me.ru',
|
|
'PPM_DEMO': 'true',
|
|
});
|
|
|
|
expect(config.demoMode, isTrue);
|
|
expect(config.apiBaseUrl, 'https://please-pay-me.ru');
|
|
});
|
|
});
|
|
|
|
test('.env.example stays in sync with the parser', () {
|
|
final text = File('.env.example').readAsStringSync();
|
|
final values = parseEnvFile(text);
|
|
final config = AppConfig.fromMap(values);
|
|
|
|
expect(values.containsKey('PPM_API_BASE_URL'), isTrue);
|
|
expect(config.apiBaseUrl, isNotEmpty);
|
|
expect(config.demoMode, isFalse);
|
|
});
|
|
}
|