public void GetOrAddCacheEntry_VariesByModelType_IfPageIsModelTypeProvider()
    {
        // Arrange
        var activator = CreateActivator();
        var page      = new ModelTypeProviderRazorPage();

        // Act - 1
        var result1 = activator.GetOrAddCacheEntry(page);
        var result2 = activator.GetOrAddCacheEntry(page);

        // Assert - 1
        Assert.Same(result1, result2);

        // Act - 2
        page.ModelType = typeof(string);
        var result3 = activator.GetOrAddCacheEntry(page);
        var result4 = activator.GetOrAddCacheEntry(page);

        // Assert - 2
        Assert.Same(result3, result4);
        Assert.NotSame(result1, result3);
    }
    public void Activate_UsesModelFromModelTypeProvider()
    {
        // Arrange
        var activator = CreateActivator();

        var viewData = new ViewDataDictionary <object>(MetadataProvider, new ModelStateDictionary())
        {
            { "key", "value" },
        };
        var viewContext = CreateViewContext(viewData);
        var page        = new ModelTypeProviderRazorPage();

        // Act
        activator.Activate(page, viewContext);

        // Assert
        Assert.Same(viewContext.ViewData, page.ViewData);
        Assert.NotSame(viewData, viewContext.ViewData);

        Assert.IsType <ViewDataDictionary <Guid> >(viewContext.ViewData);
        Assert.Equal("value", viewContext.ViewData["key"]);
    }