Exemplo n.º 1
0
        public async Task DialogShouldReturnTheReturnValue()
        {
            var comp = Context.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();
            var service = Context.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;
            // open dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogWithReturnValue>());

            dialogReference.Should().NotBe(null);
            // close by click on cancel button
            comp.FindAll("button")[0].Click();
            var rv = await dialogReference.GetReturnValueAsync <string>();

            rv.Should().BeNull();
            // open dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogWithReturnValue>());

            // close by click on ok button
            comp.FindAll("button")[1].Click();
            rv = await dialogReference.GetReturnValueAsync <string>();

            rv.Should().Be("Closed via OK");
        }
Exemplo n.º 2
0
        public async Task CustomDialogService()
        {
            //Remove default IDialogService so we can provide our custom implementation
            //This is not necessary in normal cases, you would rather just not register all services in the beginning, but the test environment requires here to do so.
            Context.Services.Remove(Context.Services.FirstOrDefault(descriptor => descriptor.ServiceType == typeof(IDialogService)));
            //Register our custom dialog service implementation as the new service instance behind IDialogService
            Context.Services.AddScoped <IDialogService>(sp => new CustomDialogService());

            //Render our dialog provider and make sure everything is fine
            var comp = Context.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();

            //Try to get the current service instance for the type IDialogService and make sure it is our custom implementation
            var service = Context.Services.GetService <IDialogService>();

            service.Should().NotBe(null);
            service.Should().BeAssignableTo(typeof(CustomDialogService));

            //Show the dialog, create reference and make sure it is our custom dialog reference implementation
            IDialogReference dialogReference = null;
            //The type of the dialog does not really matter, for the sake of laziness I will re-use this existing one
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogThatUpdatesItsTitle>());

            dialogReference.Should().NotBe(null);
            dialogReference.Should().BeAssignableTo(typeof(CustomDialogReference));

            //After above checks have passed, we can safely cast the generic reference into our specific implementation
            var customDialogReference = (CustomDialogReference)dialogReference;

            //The custom property should be false by default otherwise the rest of the test logic would be incorrect
            customDialogReference.AllowDismiss.Should().BeFalse();

            //Dialog should not be closable through backdrop click
            comp.Find("div.mud-overlay").Click();
            comp.WaitForAssertion(() => comp.Markup.Trim().Should().NotBeEmpty(), TimeSpan.FromSeconds(5));

            //Allow dismiss
            customDialogReference.AllowDismiss = true;

            //Dialog should now be closable through backdrop click
            comp.Find("div.mud-overlay").Click();
            comp.WaitForAssertion(() => comp.Markup.Trim().Should().BeEmpty(), TimeSpan.FromSeconds(5));
        }
Exemplo n.º 3
0
        public async Task DialogKeyboardNavigation()
        {
            var comp = Context.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();
            var service = Context.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;
            //dialog with clickable backdrop
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogOkCancel>(string.Empty, new DialogOptions()
            {
                CloseOnEscapeKey = true
            }));

            dialogReference.Should().NotBe(null);
            var dialog1 = (DialogOkCancel)dialogReference.Dialog;

            comp.Markup.Trim().Should().NotBeEmpty();
            await comp.InvokeAsync(() => dialog1.MudDialog.HandleKeyDown(new KeyboardEventArgs()
            {
                Key = "Escape", Type = "keydown",
            }));

            comp.Markup.Trim().Should().BeEmpty();
            //dialog with disabled backdrop click
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogOkCancel>(string.Empty, new DialogOptions()
            {
                CloseOnEscapeKey = false
            }));

            dialogReference.Should().NotBe(null);
            var dialog2 = (DialogOkCancel)dialogReference.Dialog;

            comp.Markup.Trim().Should().NotBeEmpty();
            await comp.InvokeAsync(() => dialog2.MudDialog.HandleKeyDown(new KeyboardEventArgs()
            {
                Key = "Escape", Type = "keydown",
            }));

            comp.Markup.Trim().Should().NotBeEmpty();
        }
Exemplo n.º 4
0
        public async Task DialogShouldHonorClassAndStyle()
        {
            var comp = ctx.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();
            var service = ctx.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;
            // open simple test dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogOkCancel>());

            dialogReference.Should().NotBe(null);
            Console.WriteLine(comp.Markup);
            comp.Find("div.mud-dialog").ClassList.Should().Contain("test-class");
            comp.Find("div.mud-dialog").Attributes["style"].Value.Should().Be("color: red;");
            comp.Find("div.mud-dialog-content").Attributes["style"].Value.Should().Be("color: blue;");
            comp.Find("div.mud-dialog-content").ClassList.Should().NotContain("test-class");
            comp.Find("div.mud-dialog-content").ClassList.Should().Contain("content-class");
        }
Exemplo n.º 5
0
        public async Task DialogHandlesOnBackdropClickEvent()
        {
            var comp = Context.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();

            var service = Context.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;

            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogWithOnBackdropClickEvent>());

            dialogReference.Should().NotBe(null);
            comp.Find("div.mud-dialog-title").TrimmedText().Should().Be("Title:");

            //Click on backdrop
            comp.Find("div.mud-overlay").Click();

            comp.Find("div.mud-dialog-title").TrimmedText().Should().Be("Title: Backdrop clicked");
        }
Exemplo n.º 6
0
        public async Task DialogShouldUpdateTitleContent()
        {
            var comp = ctx.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();
            var service = ctx.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;
            // open simple test dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogThatUpdatesItsTitle>());

            dialogReference.Should().NotBe(null);
            Console.WriteLine(comp.Markup);
            //comp.Find("div.mud-dialog-container").Should().NotBe(null);
            comp.Find("div.mud-dialog-content").TrimmedText().Should().Be("Body:");
            comp.Find("div.mud-dialog-title").TrimmedText().Should().Be("Title:");
            // click on ok button should set title and content
            comp.FindAll("button")[1].Click();
            comp.Find("div.mud-dialog-content").TrimmedText().Should().Be("Body: Test123");
            comp.Find("div.mud-dialog-title").TrimmedText().Should().Be("Title: Test123");
        }
Exemplo n.º 7
0
        public async Task SimpleTest()
        {
            var comp = ctx.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();
            var service = ctx.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;
            // open simple test dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogOkCancel>());

            dialogReference.Should().NotBe(null);
            Console.WriteLine(comp.Markup);
            comp.Find("div.mud-dialog-container").Should().NotBe(null);
            comp.Find("p.mud-typography").TrimmedText().Should().Be("Wabalabadubdub!");
            // close by click outside the dialog
            comp.Find("div.mud-overlay").Click();
            comp.Markup.Trim().Should().BeEmpty();
            var result = await dialogReference.Result;

            result.Cancelled.Should().BeTrue();
            // open simple test dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogOkCancel>());

            // close by click on cancel button
            comp.FindAll("button")[0].Click();
            result = await dialogReference.Result;
            result.Cancelled.Should().BeTrue();
            // open simple test dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogOkCancel>());

            // close by click on ok button
            comp.FindAll("button")[1].Click();
            result = await dialogReference.Result;
            result.Cancelled.Should().BeFalse();
        }
Exemplo n.º 8
0
        public async Task DialogShouldNotOverwriteParameters()
        {
            var comp = Context.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();
            var service = Context.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;

            var parameters = new DialogParameters();

            parameters.Add("TestValue", "test");
            parameters.Add("Color_Test", Color.Error); // !! comment me !!

            await comp.InvokeAsync(() => dialogReference = service?.Show <DialogWithParameters>(string.Empty, parameters));

            dialogReference.Should().NotBe(null);

            //Console.WriteLine("----------------------------------------");
            //Console.WriteLine(comp.Markup);

            var textField = comp.FindComponent <MudInput <string> >().Instance;

            textField.Text.Should().Be("test");

            comp.Find("input").Change("new_test");
            comp.Find("input").Blur();
            textField.Text.Should().Be("new_test");

            comp.FindAll("button")[0].Click();
            //Console.WriteLine("----------------------------------------");
            //Console.WriteLine(comp.Markup);

            ((DialogWithParameters)dialogReference.Dialog).TestValue.Should().Be("new_test");
            textField.Text.Should().Be("new_test");
        }
Exemplo n.º 9
0
        public async Task InlineDialogShouldHonorClassAndStyle()
        {
            var comp = Context.RenderComponent <MudDialogProvider>();

            comp.Markup.Trim().Should().BeEmpty();
            var service = Context.Services.GetService <IDialogService>() as DialogService;

            service.Should().NotBe(null);
            IDialogReference dialogReference = null;
            // open simple test dialog
            await comp.InvokeAsync(() => dialogReference = service?.Show <TestInlineDialog>());

            comp.WaitForAssertion(() => dialogReference.Should().NotBe(null));
            comp.Find("button").Click();
            comp.WaitForAssertion(() => comp.Find("div.mud-dialog").ClassList.Should().Contain("test-class"));
            comp.Find("div.mud-dialog").Attributes["style"].Value.Should().Be("color: red;");
            comp.Find("div.mud-dialog-content").Attributes["style"].Value.Should().Be("color: blue;");
            comp.Find("div.mud-dialog-content").ClassList.Should().NotContain("test-class");
            comp.Find("div.mud-dialog-content").ClassList.Should().Contain("content-class");
            // check if tag is ok
            var dialogInstance = comp.FindComponent <MudDialog>().Instance;

            dialogInstance.Tag.Should().Be("test-tag");
        }