public async Task SaveAsync_UpdateActor_UpdatesActor()
    {
        // Arrange
        await using var host = await SubDomainIntegrationTestHost.InitializeAsync().ConfigureAwait(false);

        var scope = host.BeginScope();

        var container = scope.GetInstance <IActorRepositoryContainer>();
        var target    = new ActorRepository(container);

        var actorId = Guid.NewGuid();

        var actor = new Actor(new ActorId(actorId), new ExternalActorId(Guid.NewGuid()));
        await target.AddOrUpdateAsync(actor).ConfigureAwait(false);

        var externalId   = Guid.NewGuid();
        var updatedActor = new Actor(new ActorId(actorId), new ExternalActorId(externalId));

        // Act
        await target.AddOrUpdateAsync(updatedActor).ConfigureAwait(false);

        // Assert
        var actual = await target
                     .GetActorAsync(new ExternalActorId(externalId))
                     .ConfigureAwait(false);

        Assert.NotNull(actual);
        Assert.Equal(actorId, Guid.Parse(actual !.Id.Value));
        Assert.Equal(externalId, actual.ExternalId.Value);
    }
    public async Task DeleteAsync_GivenActor_IsDeleted()
    {
        // Arrange
        await using var host = await SubDomainIntegrationTestHost.InitializeAsync().ConfigureAwait(false);

        var scope = host.BeginScope();

        var container = scope.GetInstance <IActorRepositoryContainer>();
        var target    = new ActorRepository(container);

        var actorId    = Guid.NewGuid();
        var externalId = Guid.NewGuid();

        var actor = new Actor(new ActorId(actorId), new ExternalActorId(externalId));
        await target.AddOrUpdateAsync(actor).ConfigureAwait(false);

        // Act
        await target.DeleteAsync(actor).ConfigureAwait(false);

        // Assert
        var actual = await target
                     .GetActorAsync(new ExternalActorId(externalId))
                     .ConfigureAwait(false);

        Assert.Null(actual);
    }