parseMocksNode static method

({List<String> files, Map<String, dynamic> inline}) parseMocksNode(
  1. dynamic node, {
  2. required String testId,
  3. required Map<String, dynamic> inputs,
  4. required Map<String, dynamic> scenario,
  5. String? scenarioId,
})

Implementation

static ({List<String> files, Map<String, dynamic> inline}) parseMocksNode(
  dynamic node, {
  required String testId,
  required Map<String, dynamic> inputs,
  required Map<String, dynamic> scenario,
  String? scenarioId,
}) {
  if (node == null) return (files: const [], inline: const {});
  if (node is YamlMap) {
    return (
      files: const [],
      inline: _toStringDynamicMap(
        node,
        inputs: inputs,
        scenario: scenario,
        scenarioId: scenarioId,
      ),
    );
  }
  if (node is Map) {
    return (
      files: const [],
      inline: Map<String, dynamic>.from(node),
    );
  }
  if (node is! List) {
    throw EnsembleTestFailure(
      'Test "$testId" mocks must be a list of .mock.json files/inline maps '
      'or an inline API mock map.',
    );
  }

  final files = <String>[];
  final inline = <String, dynamic>{};
  for (final entry in node) {
    final value = _unwrapYaml(
      entry,
      inputs: inputs,
      scenario: scenario,
      scenarioId: scenarioId,
    );
    if (value is String) {
      files.add(value);
    } else if (value is Map) {
      inline.addAll(Map<String, dynamic>.from(value));
    } else {
      throw EnsembleTestFailure(
        'Test "$testId" mocks entries must be .mock.json file paths or '
        'inline API mock maps.',
      );
    }
  }
  return (files: files, inline: inline);
}