generateApiTestData method

Map<String, String> generateApiTestData({
  1. required String testPath,
  2. required String featureName,
  3. required String pageName,
  4. required String apiName,
  5. required String jsonBody,
  6. required String jsonResponse,
  7. required dynamic bodyData,
  8. required dynamic responseData,
  9. required String method,
  10. required List<String> paramPath,
  11. required String? pathHeader,
  12. required String? cacheStrategy,
  13. required int? ttl,
  14. required bool? keepExpiredCache,
  15. required String returnData,
})

Generates individual API test data

testPath - Path for test files featureName - Feature name pageName - Page name apiName - API name bodyData - Request body data responseData - Response data method - HTTP method paramPath - URL parameters headers - Request headers cacheStrategy - Caching strategy ttl - Cache TTL keepExpiredCache - Whether to keep expired cache returnData - Return data type Returns test data map

Implementation

Map<String, String> generateApiTestData({
  required String testPath,
  required String featureName,
  required String pageName,
  required String apiName,
  required String jsonBody,
  required String jsonResponse,
  required dynamic bodyData,
  required dynamic responseData,
  required String method,
  required List<String> paramPath,
  required String? pathHeader,
  required String? cacheStrategy,
  required int? ttl,
  required bool? keepExpiredCache,
  required String returnData,
}) {
  final result = <String, String>{};

  // Generate endpoint
  final endpoint =
      'final url${apiName.pascalCase} = ${_projectName.pascalCase}Endpoints.${apiName.camelCase}${paramPath.isEmpty ? '' : '(${paramPath.map((e) => "'$e',").join()})'};';

  // Generate test variables
  final bodyVariable = _generateBodyVariable(apiName, bodyData, paramPath);
  final responseVariable = _isReturnDataModel(returnData)
      ? _generateResponseVariable(apiName, responseData, 'Response')
      : '';
  final entityVariable = _isReturnDataModel(returnData)
      ? _generateResponseVariable(apiName, responseData, 'Entity')
      : '';

  // Create test files
  _createBodyModelTest(testPath, featureName, pageName, apiName, jsonBody,
      bodyVariable, bodyData is List);

  String formattedJsonResponse = '';
  if (_isReturnDataModel(returnData)) {
    formattedJsonResponse = _createJsonResponseTest(
        testPath, featureName, pageName, apiName, jsonResponse);
    _createResponseModelTest(testPath, featureName, pageName, apiName,
        formattedJsonResponse, responseVariable, responseData is List);
  }

  // Handle headers
  String? headers;
  if (pathHeader != null && exists(pathHeader)) {
    try {
      headers = read(pathHeader).join('\n');
      headers =
          'headers: $headers.map((key, value) => MapEntry(key, value.toString()))';
    } catch (e) {
      StatusHelper.warning('Failed to read headers: $e');
    }
  }

  // Populate result
  result['apiName'] = apiName;
  result['body'] = bodyVariable;
  result['response'] = responseVariable;
  result['entity'] = entityVariable;
  result['jsonBody'] = jsonBody;
  result['jsonResponse'] = jsonResponse;
  result['method'] = method;
  result['endpoint'] = endpoint;
  result['header'] = headers ?? '';
  result['isBodyList'] = bodyData is List ? 'true' : 'false';
  result['isResponseList'] = responseData is List ? 'true' : 'false';
  result['cacheStrategy'] = cacheStrategy ?? '';
  result['ttl'] = ttl?.toString() ?? '';
  result['keepExpiredCache'] = keepExpiredCache?.toString() ?? '';
  result['returnData'] = returnData;

  return result;
}