passsy / fakes-overridesr3
Override Pattern for Fakes
PublicGive each method of a fake a nullable override function field placed right above it, so a test can change one behavior without a new fake.
detector.tsisolate · reads files, writes none · no network · 100 ms · 32 MBEdit
import { mentioned, onPrompt, onWrite } from "@wellactually/sdk/v3";
import { DART, isDartProject } from "dart-kit";
onPrompt({
*detect(event) {
if (isDartProject(event)) {
yield* mentioned(event, ["fake", "fakes"]);
}
},
});
/**
* The moment someone writes a fake is when the override pattern is relevant.
* A file that already carries override fields has applied it.
*/
onWrite({
globs: DART,
*detect(event) {
if (/Function\([^)]*\)\?\s+override/.test(event.text)) {
return;
}
for (const written of event.written) {
if (/class\s+Fake[A-Z]\w*/.test(written.text)) {
yield { line: written.line };
}
}
},
});
fixtures/dart_app/pubspec.yamlEdit
namedemo
package.jsonEdit
{
"name": "fakes-overrides",
"private": true,
"dependencies": {
"dart-kit": "*"
},
"tags": [
"dart"
]
}