Esempio n. 1
0
    public void CreateActivator_TypeActivatesModelType()
    {
        // Arrange
        var activatorProvider = new DefaultPageModelActivatorProvider();
        var actionDescriptor  = new CompiledPageActionDescriptor
        {
            ModelTypeInfo = typeof(ModelWithServices).GetTypeInfo(),
        };
        var serviceCollection = new ServiceCollection();
        var generator         = Mock.Of <IHtmlGenerator>();

        serviceCollection.AddSingleton(generator);
        var httpContext = new DefaultHttpContext
        {
            RequestServices = serviceCollection.BuildServiceProvider(),
        };
        var pageContext = new PageContext
        {
            HttpContext = httpContext
        };

        // Act
        var activator = activatorProvider.CreateActivator(actionDescriptor);
        var model     = activator(pageContext);

        // Assert
        var modelWithServices = Assert.IsType <ModelWithServices>(model);

        Assert.Same(generator, modelWithServices.Generator);
    }
Esempio n. 2
0
    public void CreateActivator_ThrowsIfModelTypeInfoOnActionDescriptorIsNull()
    {
        // Arrange
        var activatorProvider = new DefaultPageModelActivatorProvider();
        var actionDescriptor  = new CompiledPageActionDescriptor();

        // Act & Assert
        ExceptionAssert.ThrowsArgument(
            () => activatorProvider.CreateActivator(actionDescriptor),
            "actionDescriptor",
            "The 'ModelTypeInfo' property of 'actionDescriptor' must not be null.");
    }
Esempio n. 3
0
    public void CreateReleaser_ReturnsNullForModelsThatDoNotImplementDisposable(Type pageType)
    {
        // Arrange
        var context          = new PageContext();
        var activator        = new DefaultPageModelActivatorProvider();
        var actionDescriptor = new CompiledPageActionDescriptor
        {
            PageTypeInfo = pageType.GetTypeInfo(),
        };

        // Act
        var releaser = activator.CreateReleaser(actionDescriptor);

        // Assert
        Assert.Null(releaser);
    }
Esempio n. 4
0
    public async Task CreateAsyncReleaser_CreatesDelegateThatDisposesAsyncDisposableTypes()
    {
        // Arrange
        var context     = new PageContext();
        var viewContext = new ViewContext();
        var activator   = new DefaultPageModelActivatorProvider();
        var model       = new AsyncDisposableModel();

        // Act & Assert
        var disposer = activator.CreateAsyncReleaser(new CompiledPageActionDescriptor
        {
            ModelTypeInfo = model.GetType().GetTypeInfo()
        });

        Assert.NotNull(disposer);
        await disposer(context, model);

        // Assert
        Assert.True(model.Disposed);
    }
Esempio n. 5
0
    public void CreateReleaser_CreatesDelegateThatDisposesDisposableTypes()
    {
        // Arrange
        var context = new PageContext();

        var activator        = new DefaultPageModelActivatorProvider();
        var actionDescriptor = new CompiledPageActionDescriptor
        {
            ModelTypeInfo = typeof(DisposableModel).GetTypeInfo(),
        };

        var model = new DisposableModel();

        // Act & Assert
        var releaser = activator.CreateReleaser(actionDescriptor);

        releaser(context, model);

        // Assert
        Assert.True(model.Disposed);
    }