// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Moq; using Moq.Protected; using Xunit; namespace Microsoft.AspNetCore.SignalR.Tests { public class DefaultHubActivatorTests { [Fact] public void HubCreatedIfNotResolvedFromServiceProvider() { Assert.NotNull( new DefaultHubActivator, object>(Mock.Of()).Create()); } [Fact] public void HubCanBeResolvedFromServiceProvider() { var hub = Mock.Of>(); var mockServiceProvider = new Mock(); mockServiceProvider .Setup(sp => sp.GetService(typeof(Hub))) .Returns(hub); Assert.Same(hub, new DefaultHubActivator, object>(mockServiceProvider.Object).Create()); } [Fact] public void DisposeNotCalledForHubsResolvedFromServiceProvider() { var mockServiceProvider = new Mock(); mockServiceProvider .Setup(sp => sp.GetService(typeof(Hub))) .Returns(() => { var m = new Mock>(); m.Protected().Setup("Dispose", ItExpr.IsAny()); return m.Object; }); var hubActivator = new DefaultHubActivator, object>(mockServiceProvider.Object); var hub = hubActivator.Create(); hubActivator.Release(hub); Mock.Get(hub).Protected().Verify("Dispose", Times.Never(), ItExpr.IsAny()); } [Fact] public void CannotReleaseNullHub() { Assert.Equal("hub", Assert.Throws( () => new DefaultHubActivator, object>(Mock.Of()).Release(null)).ParamName); } } }