testReader method
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>[];
}