parseString method

MockConfig parseString(
  1. String content, {
  2. String sourcePath = 'mock.yaml',
})

Parses and validates YAML content already loaded into memory.

Implementation

MockConfig parseString(String content, {String sourcePath = 'mock.yaml'}) {
  final Object? document;
  try {
    document = loadYaml(content);
  } on YamlException catch (error) {
    throw MockConfigException(
        'YAML syntax error in $sourcePath: ${error.message}');
  }

  final root = _asMap(document, 'root');
  final seed = _optionalInt(root['seed'], 'seed');
  final models = _parseModels(root['models']);
  final stores = _parseStores(root['stores'], models);

  final routesNode = root['routes'];
  final routesList = _asList(routesNode, 'routes');

  final routes = <MockRoute>[];
  for (var index = 0; index < routesList.length; index++) {
    final routeMap = _asMap(routesList[index], 'routes[$index]');
    routes.add(_parseRoute(routeMap, index, stores));
  }

  if (routes.isEmpty) {
    throw MockConfigException(
        'Configuration must define at least one route.');
  }

  return MockConfig(
    sourcePath: path.normalize(sourcePath),
    routes: routes,
    models: models,
    stores: stores,
    seed: seed,
  );
}