Class InstallTaskSectionGuiTests
EditMode tests for Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskSectionGui's non-GUI surface: Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskSectionGui.PrepareSelections's idempotent lazy-load guard, Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskSectionGui.TryEnsurePendingTask(System.Action{System.String},System.Boolean)'s "wires with defaults even when the host never drew the Installation step" contract plus its own once-per-run guard, and the section counting only project-owned profiles (Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.FindProjectOwnedProfiles) as candidates to wire into.
Inherited Members
Namespace: Serenity.Global.Infrastructure.Tests.Editor.InitializationPipeline
Assembly: Serenity.InitializationPipeline.Tests.Editor.dll
Syntax
public class InstallTaskSectionGuiTests
Remarks
Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.FindProjectOwnedProfiles and Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.FindExistingInstallTask(System.String,System.String@,System.Collections.Generic.List{System.String}@) —
what Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskSectionGui delegates every scan to — read the WHOLE PROJECT, so every test
pins their user-content half (Serenity.Global.Infrastructure.Editor.SerenityUserContentScan.PinForTests(System.String[])) to Serenity.Global.Infrastructure.Tests.Editor.InitializationPipeline.InstallTaskSectionGuiTests.TempFolder
and the real default task folder a wiring call creates its task in: a profile the project already owned
before the run would otherwise turn every "no project-owned profile" case into a wiring one.
Serenity.Global.Infrastructure.Tests.Editor.InitializationPipeline.InstallTaskSectionGuiTests.TempFolder lives outside every SerenityEditorPaths.PackageRoots entry, so a profile
created under it is project-owned and IS a wiring candidate; the project's real shipped profiles under
Assets/Serenity are package content and never are — see
FindProjectOwnedProfiles_ExcludesPackageShippedProfiles() for that
half of the contract. A real Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskSectionGui.TryEnsurePendingTask(System.Action{System.String},System.Boolean) call that DOES wire
still unavoidably creates a task asset in the project's real default task folder (never scoped to
Serenity.Global.Infrastructure.Tests.Editor.InitializationPipeline.InstallTaskSectionGuiTests.TempFolder): Serenity.Global.Infrastructure.Tests.Editor.InitializationPipeline.InstallTaskSectionGuiTests.MethodName is a fixture name no shipped task ever carries (so
nothing is ever mistakenly reused), and Serenity.Global.Infrastructure.Tests.Editor.InitializationPipeline.InstallTaskSectionGuiTests.RevertRealProjectInstallTaskPollution undoes that
asset afterward — the same targeted revert CreateLeaderboardWindowDoneStepTests uses for the
identical constraint.
Constructors
InstallTaskSectionGuiTests()
Declaration
public InstallTaskSectionGuiTests()
Methods
DescribePendingWiringSentence_AllProfilesAlreadyContainTask_ReportsAlreadyWiredInsteadOfNotWired()
Declaration
public void DescribePendingWiringSentence_AllProfilesAlreadyContainTask_ReportsAlreadyWiredInsteadOfNotWired()
DescribePendingWiringSentence_NoProjectOwnedProfile_FactorySet_MentionsTheCreateButton()
Declaration
public void DescribePendingWiringSentence_NoProjectOwnedProfile_FactorySet_MentionsTheCreateButton()
DescribePendingWiringSentence_NoProjectOwnedProfile_ReportsNotWiredForLackOfAProjectProfile()
Declaration
public void DescribePendingWiringSentence_NoProjectOwnedProfile_ReportsNotWiredForLackOfAProjectProfile()
MisorderedProfileNames_ProfileAlreadyHonoursTheOrdering_IsEmpty()
Declaration
public void MisorderedProfileNames_ProfileAlreadyHonoursTheOrdering_IsEmpty()
MisorderedProfileNames_ProfileRunsTheTaskAfterItsBeforeAnchor_NamesThatProfile()
Declaration
public void MisorderedProfileNames_ProfileRunsTheTaskAfterItsBeforeAnchor_NamesThatProfile()
OneTimeTearDown()
Declaration
public void OneTimeTearDown()
PrepareSelections_CalledTwice_DoesNotReloadRows()
Declaration
public void PrepareSelections_CalledTwice_DoesNotReloadRows()
SetUp()
Declaration
public void SetUp()
TearDown()
Declaration
public void TearDown()
TryCreateProjectPipelineForTests_FactoryNull_ReturnsFalse()
Declaration
public void TryCreateProjectPipelineForTests_FactoryNull_ReturnsFalse()
TryCreateProjectPipelineForTests_FactoryReturnsNull_ReturnsFalse()
Declaration
public void TryCreateProjectPipelineForTests_FactoryReturnsNull_ReturnsFalse()
TryCreateProjectPipelineForTests_FactorySucceeds_RowsListTheNewProfileAndTryEnsurePendingTaskWiresIntoIt()
Declaration
public void TryCreateProjectPipelineForTests_FactorySucceeds_RowsListTheNewProfileAndTryEnsurePendingTaskWiresIntoIt()
TryEnsurePendingTask_CalledTwice_TheSecondCallIsANoOp()
Declaration
public void TryEnsurePendingTask_CalledTwice_TheSecondCallIsANoOp()
TryEnsurePendingTask_NoProjectOwnedProfile_ReturnsFalseWithoutCreatingATask()
Declaration
public void TryEnsurePendingTask_NoProjectOwnedProfile_ReturnsFalseWithoutCreatingATask()
TryEnsurePendingTask_ProfileRunsTheTaskAfterItsBeforeAnchor_MovesItInsteadOfAddingASecondOne()
Declaration
public void TryEnsurePendingTask_ProfileRunsTheTaskAfterItsBeforeAnchor_MovesItInsteadOfAddingASecondOne()
TryEnsurePendingTask_ProjectOwnedProfileExists_WiresWithDefaultsEvenWithoutDrawingFirst()
Declaration
public void TryEnsurePendingTask_ProjectOwnedProfileExists_WiresWithDefaultsEvenWithoutDrawingFirst()
TryEnsurePendingTask_RestrictToProfile_WiresIntoItEvenWhenTheHeuristicWouldPreferAnother()
Mirrors the previous test with a profile the heuristic WOULD otherwise prefer (it already carries more tasks) — proving Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskSectionGui.RestrictToProfile overrides the heuristic's own pick, not just its "select nothing" edge case.
Declaration
public void TryEnsurePendingTask_RestrictToProfile_WiresIntoItEvenWhenTheHeuristicWouldPreferAnother()
TryEnsurePendingTask_RestrictToProfile_WiresIntoItEvenWhenTheHeuristicWouldSelectNothing()
Regression test: ProjectWiringRunner.WireSelectedSystems resolves the reader's own pick off an Ambiguous "Boot pipeline" row into a Reuse target, but the section itself used to rediscover EVERY project-owned profile and re-decide via Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.IsLikelyAuthoredProfile(Serenity.InitializationPipeline.InterfaceAdapters.UnityInitializationPipelineProfile,System.Collections.Generic.IReadOnlyList{Serenity.InitializationPipeline.InterfaceAdapters.UnityInitializationPipelineProfile}) — two freshly-created, empty, tied-at-zero-tasks profiles both fail that heuristic ("an empty profile never qualifies on its own"), so nothing was ever selected and the task silently went nowhere despite the reader having explicitly picked one. Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskSectionGui.RestrictToProfile closes that gap: it must wire into the picked profile regardless of what the heuristic would say.
Declaration
public void TryEnsurePendingTask_RestrictToProfile_WiresIntoItEvenWhenTheHeuristicWouldSelectNothing()