File: MockImageBuilder.cs
Web Access
Project: src\tests\Aspire.Hosting.Tests\Aspire.Hosting.Tests.csproj (Aspire.Hosting.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#pragma warning disable ASPIREPIPELINES003 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
 
using Aspire.Hosting.Publishing;
 
namespace Aspire.Hosting.Tests;
 
/// <summary>
/// Mock implementation of IResourceContainerImageBuilder for testing.
/// </summary>
public sealed class MockImageBuilder : IResourceContainerImageBuilder
{
    public bool BuildImageCalled { get; private set; }
    public bool BuildImagesCalled { get; private set; }
    public bool TagImageCalled { get; private set; }
    public bool PushImageCalled { get; private set; }
    public List<IResource> BuildImageResources { get; } = [];
    public List<ContainerBuildOptions?> BuildImageOptions { get; } = [];
    public List<(string localImageName, string targetImageName)> TagImageCalls { get; } = [];
    public List<string> PushImageCalls { get; } = [];
 
    public Task BuildImageAsync(IResource resource, ContainerBuildOptions? options = null, CancellationToken cancellationToken = default)
    {
        BuildImageCalled = true;
        BuildImageResources.Add(resource);
        BuildImageOptions.Add(options);
        return Task.CompletedTask;
    }
 
    public Task BuildImagesAsync(IEnumerable<IResource> resources, ContainerBuildOptions? options = null, CancellationToken cancellationToken = default)
    {
        BuildImagesCalled = true;
        BuildImageResources.AddRange(resources);
        BuildImageOptions.Add(options);
        return Task.CompletedTask;
    }
 
    public Task TagImageAsync(string localImageName, string targetImageName, CancellationToken cancellationToken = default)
    {
        TagImageCalled = true;
        TagImageCalls.Add((localImageName, targetImageName));
        return Task.CompletedTask;
    }
 
    public Task PushImageAsync(string imageName, CancellationToken cancellationToken = default)
    {
        PushImageCalled = true;
        PushImageCalls.Add(imageName);
        return Task.CompletedTask;
    }
}