@inherits TestContext @code { [Fact] public void Outlet() { Services.AddIgnisTestServices(); JSInterop.Mode = JSRuntimeMode.Loose; const string dialogId = "dialog"; const string outletId = "dialog-outlet"; var cut = Render(@
); var dialogs = cut.FindAll($"#{dialogId}"); Assert.Single(dialogs); var dialogDiv = dialogs.Single(); var outletDiv = cut.Find($"#{outletId}"); Assert.True(outletDiv.Contains(dialogDiv)); } [Fact] public void IgnoreOutlet() { Services.AddIgnisTestServices(); JSInterop.Mode = JSRuntimeMode.Loose; const string dialogId = "dialog"; const string outletId = "dialog-outlet"; var cut = Render(@
); var dialogs = cut.FindAll($"#{dialogId}"); Assert.Single(dialogs); var dialogDiv = dialogs.Single(); var outletDiv = cut.Find($"#{outletId}"); Assert.False(outletDiv.Contains(dialogDiv)); } [Fact] public void OutletWithTransition() { Services.AddIgnisTestServices(); JSInterop.Mode = JSRuntimeMode.Loose; const string dialogId = "dialog"; const string outletId = "dialog-outlet"; const string transitionId = "dialog-transition"; var cut = Render(@
); var transitions = cut.FindAll($"#{transitionId}"); Assert.Single(transitions); var dialogs = cut.FindAll($"#{dialogId}"); Assert.Single(dialogs); var dialogDiv = dialogs.Single(); var transitionDiv = transitions.Single(); var outletDiv = cut.Find($"#{outletId}"); Assert.True(outletDiv.Contains(transitionDiv)); Assert.True(transitionDiv.Contains(dialogDiv)); } [Fact] public void IgnoreOutletWithTransition() { Services.AddIgnisTestServices(); JSInterop.Mode = JSRuntimeMode.Loose; const string dialogId = "dialog"; const string outletId = "dialog-outlet"; const string transitionId = "dialog-transition"; var cut = Render(@
); var transitions = cut.FindAll($"#{transitionId}"); Assert.Single(transitions); var dialogs = cut.FindAll($"#{dialogId}"); Assert.Single(dialogs); var dialogDiv = dialogs.Single(); var transitionDiv = transitions.Single(); var outletDiv = cut.Find($"#{outletId}"); Assert.False(outletDiv.Contains(transitionDiv)); Assert.True(transitionDiv.Contains(dialogDiv)); } [Fact] public async Task OutletWithTransitionAndChildren() { Services.AddIgnisTestServices(); JSInterop.Mode = JSRuntimeMode.Loose; const string dialogId = "dialog"; const string outletId = "dialog-outlet"; const string transitionId = "dialog-transition"; const string transitionChildId = "dialog-transition-child"; const string dialogPanelId = "dialog-panel"; var cut = Render(@
); var transition = cut.FindComponent(); transition.SetParametersAndRender(p => { p.Add(x => x.Show, true); }); // Transition TestTimer.Trigger(null); TestTimer.Trigger(null); // TransitionChild TestTimer.Trigger(null); TestTimer.Trigger(null); var transitions = cut.FindAll($"#{transitionId}"); Assert.Single(transitions); var dialogs = cut.WaitForElements($"#{dialogId}"); Assert.Single(dialogs); var dialogDiv = dialogs.Single(); var transitionDiv = transitions.Single(); var outletDiv = cut.Find($"#{outletId}"); var transitionChildDiv = cut.Find($"#{transitionChildId}"); var dialogPanelDiv = cut.Find($"#{dialogPanelId}"); Assert.True(outletDiv.Contains(transitionDiv)); Assert.True(transitionDiv.Contains(dialogDiv)); Assert.True(dialogDiv.Contains(transitionChildDiv)); Assert.True(transitionChildDiv.Contains(dialogPanelDiv)); } [Fact] public async Task OutletWithTransitionAndChildren_EnterLeaveWithDuration() { Services.AddIgnisTestServices(); JSInterop.Mode = JSRuntimeMode.Loose; const string dialogId = "dialog"; const string outletId = "dialog-outlet"; const string transitionId = "dialog-transition"; const string transitionChildId = "dialog-transition-child"; const string dialogPanelId = "dialog-panel"; var cut = Render(@
); var transition = cut.FindComponent(); transition.SetParametersAndRender(p => { p.Add(x => x.Show, true); }); // Transition TestTimer.Trigger(null); TestTimer.Trigger(null); // TransitionChild TestTimer.Trigger(null); TestTimer.Trigger(null); var transitions = cut.WaitForElements($"#{transitionId}"); Assert.Single(transitions); var dialogs = cut.FindAll($"#{dialogId}"); Assert.Single(dialogs); var dialogDiv = dialogs.Single(); var transitionDiv = transitions.Single(); var outletDiv = cut.Find($"#{outletId}"); var transitionChildDiv = cut.Find($"#{transitionChildId}"); var dialogPanelDiv = cut.Find($"#{dialogPanelId}"); Assert.True(outletDiv.Contains(transitionDiv)); Assert.True(transitionDiv.Contains(dialogDiv)); Assert.True(dialogDiv.Contains(transitionChildDiv)); Assert.True(transitionChildDiv.Contains(dialogPanelDiv)); transition.SetParametersAndRender(p => { p.Add(x => x.Show, false); }); // Transition TestTimer.Trigger(null); TestTimer.Trigger(null); // TransitionChild TestTimer.Trigger(null); TestTimer.Trigger(null); cut.WaitForState(() => cut.FindAll($"#{dialogId}").Count == 0); transitions = cut.FindAll($"#{transitionId}"); Assert.Single(transitions); transitionDiv = transitions.Single(); outletDiv = cut.Find($"#{outletId}"); var transitionChildDivs = cut.FindAll($"#{transitionChildId}"); var dialogPanelDivs = cut.FindAll($"#{dialogPanelId}"); Assert.True(outletDiv.Contains(transitionDiv)); Assert.Empty(transitionChildDivs); Assert.Empty(dialogPanelDivs); } [Fact] public async Task CustomModal_OpenCloseByButton() { Services.AddIgnisTestServices(); JSInterop.Mode = JSRuntimeMode.Loose; const string closeButtonId = "close-button"; const string openButtonId = "open-button"; const string outletId = "dialog-outlet"; var cut = Render(@); var outlet = cut.Find($"#{outletId}"); Assert.Empty(outlet.Children); var openButton = cut.Find($"#{openButtonId}"); openButton.Click(); // Transition TestTimer.Trigger(null); TestTimer.Trigger(null); // TransitionChild TestTimer.Trigger(null); TestTimer.Trigger(null); var closeButton = cut.WaitForElement($"#{closeButtonId}"); Assert.True(outlet.Contains(closeButton)); closeButton.Click(); // Transition TestTimer.Trigger(null); TestTimer.Trigger(null); // TransitionChild TestTimer.Trigger(null); TestTimer.Trigger(null); cut.WaitForState(() => cut.FindAll($"#{closeButtonId}").Count == 0); outlet = cut.Find($"#{outletId}"); Assert.Empty(outlet.Children); } }