Ejemplo n.º 1
0
        public async Task MudPopoverService_Constructor_OptionWithCustomClass()
        {
            var mock = new Mock <IJSRuntime>();

            var option = new PopoverOptions
            {
                ContainerClass = "my-custom-class",
                FlipMargin     = 12,
            };

            var optionMock = new Mock <IOptions <PopoverOptions> >();

            optionMock.SetupGet(x => x.Value).Returns(option);

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.initilize",
                           It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "my-custom-class" && (int)x[1] == 12))).ReturnsAsync(Mock.Of <IJSVoidResult>).Verifiable();

            var service = new MudPopoverService(mock.Object, optionMock.Object);

            await service.InitializeIfNeeded();

            mock.Verify();
        }
Ejemplo n.º 2
0
        public void MudPopoverService_RegisterAndUseHandler()
        {
            var service = new MudPopoverService(Mock.Of <IJSRuntime>(MockBehavior.Strict));

            int fragmentChangedCounter = 0;

            service.FragmentsChanged += (e, args) =>
            {
                fragmentChangedCounter++;
            };

            RenderFragment fragment = (builder) => { };

            var handler = service.Register(fragment);

            handler.Should().NotBeNull();
            fragmentChangedCounter.Should().Be(1);

            RenderFragment changedFragment = (builder) => { };

            var comp = Context.RenderComponent <MudBadge>(p =>
            {
                p.Add(x => x.UserAttributes, new Dictionary <string, object> {
                    { "myprop1", "myValue1" }
                });
                p.Add(x => x.Tag, "my tag");
            });

            handler.UpdateFragment(changedFragment, comp.Instance, "my-class", "my-style", true);
            fragmentChangedCounter.Should().Be(2);
        }
Ejemplo n.º 3
0
        public async Task MudPopoverService_Unregister_NullFragment()
        {
            var service = new MudPopoverService(Mock.Of <IJSRuntime>(MockBehavior.Strict));

            var result = await service.Unregister(null);

            result.Should().BeFalse();
        }
Ejemplo n.º 4
0
        public async Task MudPopoverService_Unregister_HandlerNotFound()
        {
            var service = new MudPopoverService(Mock.Of <IJSRuntime>(MockBehavior.Strict));

            var handler = new MudPopoverHandler((tree) => { }, Mock.Of <IJSRuntime>(MockBehavior.Strict), () => { });
            var result  = await service.Unregister(handler);

            result.Should().BeFalse();
        }
Ejemplo n.º 5
0
        public async Task MudPopoverService_Unregister_NotConnected()
        {
            var service = new MudPopoverService(Mock.Of <IJSRuntime>(MockBehavior.Strict));

            RenderFragment fragment = (builder) => { };

            var handler = service.Register(fragment);
            var result  = await service.Unregister(handler);

            result.Should().BeTrue();
        }
Ejemplo n.º 6
0
        public async Task MudPopoverService_Initialize_Catch_TaskCancelledException()
        {
            var mock = new Mock <IJSRuntime>();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.initilize",
                           It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "mudblazor-main-content" && (int)x[1] == 0))).ThrowsAsync(new TaskCanceledException()).Verifiable();
            {
                var service = new MudPopoverService(mock.Object);
                await service.InitializeIfNeeded();
            }
            mock.Verify();
        }
Ejemplo n.º 7
0
        public async Task MudPopoverService_Unregister()
        {
            var handlerId = Guid.NewGuid();
            var mock      = new Mock <IJSRuntime>();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.connect",
                           It.Is <object[]>(x => x.Length == 1 && (Guid)x[0] == handlerId))).ReturnsAsync(Mock.Of <IJSVoidResult>).Verifiable();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.disconnect",
                           It.Is <object[]>(x => x.Length == 1 && (Guid)x[0] == handlerId))).ReturnsAsync(Mock.Of <IJSVoidResult>).Verifiable();


            var service = new MudPopoverService(mock.Object);

            await service.InitializeIfNeeded();

            RenderFragment fragment = (builder) => { };

            var handler = service.Register(fragment);

            handlerId = handler.Id;

            await handler.Initialize();

            int fragmentChangedCounter = 0;

            service.FragmentsChanged += (e, args) =>
            {
                fragmentChangedCounter++;
            };

            var result = await service.Unregister(handler);

            result.Should().BeTrue();
            fragmentChangedCounter.Should().Be(1);

            var secondResult = await service.Unregister(handler);

            secondResult.Should().BeFalse();

            mock.Verify();
        }
Ejemplo n.º 8
0
        public async Task MudPopoverService_Constructor_NullOption()
        {
            var mock = new Mock <IJSRuntime>();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.initilize",
                           It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "mudblazor-main-content" && (int)x[1] == 0))).ReturnsAsync(Mock.Of <IJSVoidResult>).Verifiable();

            {
                var service = new MudPopoverService(mock.Object, null);
                await service.InitializeIfNeeded();
            }
            {
                var service = new MudPopoverService(mock.Object);
                await service.InitializeIfNeeded();
            }
            mock.Verify();
        }
Ejemplo n.º 9
0
        public async Task MudPopoverService_DisposeAsync()
        {
            var mock = new Mock <IJSRuntime>();

            mock.Setup(x =>
                       x.InvokeAsync <object>(
                           "mudPopover.initilize",
                           It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "mudblazor-main-content" && (int)x[1] == 0))).ReturnsAsync(new object()).Verifiable();

            mock.Setup(x =>
                       x.InvokeAsync <object>(
                           "mudPopover.dispose",
                           It.Is <object[]>(x => x.Length == 0))).ReturnsAsync(new object()).Verifiable();

            var service = new MudPopoverService(mock.Object);
            await service.InitializeIfNeeded();

            await service.DisposeAsync();

            mock.Verify();
        }
Ejemplo n.º 10
0
        public async Task MudPopoverService_DisposeAsync_ThrowsExceptionIfNotTaskCancelException()
        {
            var mock = new Mock <IJSRuntime>();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.initilize",
                           It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "mudblazor-main-content" && (int)x[1] == 0))).ReturnsAsync(Mock.Of <IJSVoidResult>).Verifiable();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.dispose",
                           It.Is <object[]>(x => x.Length == 0))).ThrowsAsync(new InvalidOperationException()).Verifiable();

            var service = new MudPopoverService(mock.Object);
            await service.InitializeIfNeeded();

            //any other exception (despite TaskCancelException, should result in an exception
            Assert.ThrowsAsync <InvalidOperationException>(async() => await service.DisposeAsync());

            mock.Verify();
        }
Ejemplo n.º 11
0
        public async Task MudPopoverService_DisposeAsync_WithTaskCancelException()
        {
            var mock = new Mock <IJSRuntime>();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.initilize",
                           It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "mudblazor-main-content" && (int)x[1] == 0))).ReturnsAsync(Mock.Of <IJSVoidResult>).Verifiable();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.dispose",
                           It.Is <object[]>(x => x.Length == 0))).ThrowsAsync(new TaskCanceledException()).Verifiable();

            var service = new MudPopoverService(mock.Object);
            await service.InitializeIfNeeded();

            //dispose shouldn't throw an exception in task a TaskCanceledException happend
            await service.DisposeAsync();

            mock.Verify();
        }
Ejemplo n.º 12
0
        public async Task MudPopoverService_CallInitializeOnlyOnce()
        {
            var mock = new Mock <IJSRuntime>();

            mock.Setup(x =>
                       x.InvokeAsync <IJSVoidResult>(
                           "mudPopover.initilize",
                           It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "mudblazor-main-content" && (int)x[1] == 0))).ReturnsAsync(Mock.Of <IJSVoidResult>(), TimeSpan.FromMilliseconds(300)).Verifiable();

            Task[] tasks   = new Task[5];
            var    service = new MudPopoverService(mock.Object);

            for (int i = 0; i < 5; i++)
            {
                tasks[i] = Task.Run(async() => await service.InitializeIfNeeded());
            }

            Task.WaitAll(tasks);

            mock.Verify(x =>
                        x.InvokeAsync <IJSVoidResult>(
                            "mudPopover.initilize",
                            It.Is <object[]>(x => x.Length == 2 && (string)x[0] == "mudblazor-main-content" && (int)x[1] == 0)), Times.Once());
        }
Ejemplo n.º 13
0
 public async Task MudPopoverService_OnlyDisposeIfConnected()
 {
     var service = new MudPopoverService(Mock.Of <IJSRuntime>(MockBehavior.Strict));
     await service.DisposeAsync();
 }