Repository navigation
Conversation
3 of 5 tasks
…ired input - Fixture SearchModel: a search over a query state - Generator cases: a search, a list with a selection, hand-declared OnParameter and OnFeed on one member - Fails on main: such a member is optional and left out of Empty, so Create() runs its loader over the null service Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tever else it reads
- The shared classification ranks a constructor parameter before a feed, so the MVUX generator emits OnParameter for such a member and the source path makes it required
- The metadata path treats a member as derived only when every [FeedDependency] on it names a feed
- {Model}Mock.Empty and every mock now cover a search over a query state or a list with a selection
Closes #3283
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lse it reads - testing.md: name the search and selection shapes among the required inputs - Spec 013: classification rule (architecture §2.1, implementation §3), history v20 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… mixed members keep their feed links - Classification counts a parameter as a service only when it belongs to one of the model's constructors: a lambda parameter of the same name made a derived feed required - The MVUX generator emits OnFeed next to OnParameter for a member that reads both, so the metadata keeps every link; the reader already ranks the parameter first - FeedDependencyAttribute: the OnFeed item says it holds only when no instance names a parameter Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he selection swap - history v20: both attributes emitted, lambda parameters excluded, the accepted simplification, the metadata path needs a rebuild; "spec §7" - testing.md: name only the search shape until a list with a selection can be swapped Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rajamatt
force-pushed
the
dev/mara/mock-service-wins-over-feed
branch
from
November 13, 2026 15:36
270af99 to
664fa65
Compare
- Line 33 of specs/026-mvux-hr-replaced-model-ctor-guard/spec.md starts with a tab, which fails markdownlint MD010 - The docs validation runs on pull requests that change doc/, so this fails them until main is fixed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rajamatt
marked this pull request as ready for review
November 13, 2026 17:06
|
Tick the box to add this pull request to the merge queue (same as
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GitHub Issue (If applicable): closes #3283
PR Type
What is the current behavior?
A feed that reads both a constructor service and another feed of the model is classified as derived, so it is optional in
{Model}Mockand left out ofEmpty. Two common shapes are affected:Query.SelectAsync((query, ct) => Service.Search(query, ct));ListFeed.Async(...).Selection(SelectedTask).Left unset, the member runs its real logic over the null-injected service.
Create(), and any mock that does not set it, shows its error.What is the new behavior?
Emptycovers it, and the compiler asks for it in every mock.OnParameterandOnFeedfor such a member;[FeedDependency]on it names a feed.Reviewer's guide
FeedDependencyAnalysis.ClassifyFeedMember, where the two checks swap order, thenFeedsMockGenerator.ReadFeedDependencies.When_MemberIsDeclaredBothInputAndDerived_Then_MockTreatsItAsDerivedLikeTheSourcePath. That test is renamed..._Then_MockRequiresItLikeTheSourcePathand now asserts the opposite.0a776dce0, adds tests only, and all of them fail onmain.Given_GeneratedMock.When_CreateDefault_Then_AFeedReadingAServiceAndAnotherFeedIsEmptyToo(fixtureSearchModel): onmainthe list's first message carries theNullReferenceExceptionfrom the realSearch.Given_GeneratedMock.When_FeedReadsAServiceAndAnotherFeed_Then_MockRequiresIt.Given_FeedsMockGenerator: a search, a list with a selection, and the hand-declared mix above.48780d9b9. A lambda parameter named like a constructor parameter made a derived feed required;When_DerivedFeedHasALambdaParameterNamedLikeACtorParameter_Then_ItStaysOptionalfailed before it. The same commit adds theOnFeedemission and the attribute remarks.4746e8fd3and664fa6563:testing.mdand spec 013 (architecture, implementation, history v20).02ff6a312replaces a hard tab in spec 026 that came frommain(fix(reactive): MVUX hot reload of a command's parameters crashes or loses list updates #3296), so the docs validation passes.PR Checklist
Uno.HotTesting.Reactive.Tests44 pass;Uno.Extensions.Reactive.Tests1655 pass, 19 skipped;Uno.Extensions.Core.Tests61 pass). UI and runtime tests were not run locally.Breaking change: a mock that left such a member unset no longer compiles, because the member is now
required. Setting it, or starting from{Model}Mock.Empty with { ... }, fixes the call site. Because the change is breaking, it should not be backported torelease/stable/8.0.Other information
Empty. Until fix(hottesting): mock a list with a selection #3247 merges, though, its swap still does not reach its readers, so it keeps showing the real loader's error, as before.testing.mdnames only the search shape for now.FeedDependencyAnalysis.csandFeedsMockGenerator.cs, in different methods. Only the spec files will conflict.🤖 Generated with Claude Code