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(); }
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); }
public async Task MudPopoverService_Unregister_NullFragment() { var service = new MudPopoverService(Mock.Of <IJSRuntime>(MockBehavior.Strict)); var result = await service.Unregister(null); result.Should().BeFalse(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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()); }
public async Task MudPopoverService_OnlyDisposeIfConnected() { var service = new MudPopoverService(Mock.Of <IJSRuntime>(MockBehavior.Strict)); await service.DisposeAsync(); }