@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);
}
}