File: Infrastructure\AssertHelpers.cs
Web Access
Project: src\src\Components\WebView\WebView\test\Microsoft.AspNetCore.Components.WebView.Test.csproj (Microsoft.AspNetCore.Components.WebView.Test)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Components.RenderTree;
 
namespace Microsoft.AspNetCore.Components.WebView;
 
public class AssertHelpers
{
    internal static void IsAttachWebRendererInteropMessage(string message)
    {
        Assert.True(IpcCommon.TryDeserializeOutgoing(message, out var messageType, out var args));
        Assert.Equal(IpcCommon.OutgoingMessageType.BeginInvokeJS, messageType);
        Assert.Equal(5, args.Count);
        Assert.Equal("Blazor._internal.attachWebRendererInterop", args[1].GetString());
    }
 
    internal static void IsAttachToDocumentMessage(string message, int componentId, string selector)
    {
        Assert.True(IpcCommon.TryDeserializeOutgoing(message, out var messageType, out var args));
        Assert.Equal(IpcCommon.OutgoingMessageType.AttachToDocument, messageType);
        Assert.Equal(2, args.Count);
        Assert.Equal(componentId, args[0].GetInt32());
        Assert.Equal(selector, args[1].GetString());
    }
 
    internal static RenderBatch IsRenderBatch(string message)
    {
        Assert.True(IpcCommon.TryDeserializeOutgoing(message, out var messageType, out var args));
        Assert.Equal(IpcCommon.OutgoingMessageType.RenderBatch, messageType);
        Assert.Equal(2, args.Count);
        Assert.Equal(1, args[0].GetInt64()); // Batch ID
 
        // At least validate we can base64 decode the batch data
        var _ = Convert.FromBase64String(args[1].GetString());
        // TODO: Produce the render batch if we want to grab info from it.
        return default;
    }
}