logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    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.

    Inheritance
    object
    InstallTaskSectionGuiTests
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    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()
    In this article
    © 2026 Serenity. All Rights Reserved