Starter Test Model Checklist
A reliable test model is small, deliberate, and contains elements that cover both passing and failing cases for every rule you want to test.
Use this checklist when building or reviewing a test model.
Minimum elements per rule
For each rule, the test model must contain:
- [ ] At least one element that should pass — correct data, in scope
- [ ] At least one element that should fail — missing or invalid data, in scope
- [ ] At least one element that is out of scope — correct type or category exclusion
The out-of-scope element confirms the rule does not flag things it should not touch.
For parameter-based rules
- [ ] An element with the parameter present and correctly filled
- [ ] An element with the parameter present but empty (
hasValue = false) - [ ] An element where the parameter key is missing entirely (not bound)
- [ ] An element with a value outside the allowed list (if applicable)
For category-based rules
- [ ] At least one element per category in the inclusion list
- [ ] At least one element of a category not in the inclusion list — to confirm it is excluded
- [ ] If using an exclusion list: at least one element of an excluded category
For two-step filters (instance via symbol)
- [ ] At least two symbols of the target category (singleton issue prevention)
- [ ] Instances linked to each symbol
- [ ] At least one symbol with correct type data
- [ ] At least one symbol with missing or invalid type data
Having only one symbol means the in check operates on a single ID — see Singleton vs Array Issues.
For shared parameter rules
- [ ] An element where the shared parameter is bound and has a value
- [ ] An element where the parameter is bound but empty
- [ ] An element of a type where the parameter is not bound at all
- [ ] Confirm the parameter GUID in the test data matches the GUID in the rule
For editable family rules
- [ ] At least one loadable family (
isEditable = true) - [ ] At least one system family or in-place family to confirm it is excluded
Getting real test data
The fastest way to get a representative dataset is to export it from the DAQS Assist plugin:
- Set
ResultsOutput.Enabled: trueinappsettings.jsonin the DAQS Assist directory - Run an analysis in Revit
- Retrieve
Assist_AllData.jsonfrom the configured output path
See Prerequisites for the full setup.
Final check before publishing
- [ ] Rule returns zero errors on a fully compliant model
- [ ] Rule returns errors for all known-bad elements
- [ ] Error messages show the correct placeholder values
- [ ] Rule has been tested with exactly one matching element (singleton check)