Files
2026-09-21 04:06:43 +03:00

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);
});
}