testReader method

Future<List<PendingTest>> testReader(
  1. BuildContext? context, {
  2. String? suiteName,
})

Implementation of the TestReader functional interface that can read test data from Cloud Firestore.

Implementation

Future<List<PendingTest>> testReader(
  BuildContext? context, {
  String? suiteName,
}) async {
  List<PendingTest>? results;

  try {
    results = [];
    var actualCollectionPath = (testCollectionPath ?? 'tests');

    var collection = db.collection(actualCollectionPath);
    var query = await collection.orderBy('name').get();
    for (var doc in query.docs) {
      var data = doc.data();
      var pTest = PendingTest(
        loader: AsyncTestLoader(({bool? ignoreImages}) async {
          var testDoc = await db
              .collection(actualCollectionPath)
              .doc(doc.id)
              .collection('versions')
              .doc(data['activeVersion'].toString())
              .get();

          var version = JsonClass.parseInt(testDoc.id)!;
          return Test(
            active: true,
            name: data['name'],
            steps: JsonClass.fromDynamicList(
              testDoc.data()!['steps'],
              (entry) => TestStep.fromDynamic(entry),
            ),
            suiteName: data['suiteName'],
            version: version,
          );
        }),
        name: data['name'],
        numSteps: data['numSteps'],
        suiteName: data['suiteName'],
        version: data['version'],
      );

      if (suiteName == null || pTest.suiteName == suiteName) {
        results.add(pTest);
      }
    }
  } catch (e, stack) {
    _logger.severe('Error loading tests', e, stack);
  }

  return results ?? <PendingTest>[];
}