59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using System;
|
|
using System.Linq;
|
|
|
|
namespace UnityEditor.PackageManager.UI.Tests
|
|
{
|
|
internal class MockAddOperation : MockOperation, IAddOperation
|
|
{
|
|
public new event Action<Error> OnOperationError = delegate { };
|
|
public new event Action OnOperationFinalized = delegate { };
|
|
public event Action<PackageInfo> OnOperationSuccess = delegate { };
|
|
|
|
public PackageInfo PackageInfo { get; set; }
|
|
|
|
public MockAddOperation(MockOperationFactory factory, PackageInfo packageInfo = null) : base(factory)
|
|
{
|
|
PackageInfo = packageInfo;
|
|
}
|
|
|
|
public void AddPackageAsync(PackageInfo packageInfo, Action<PackageInfo> doneCallbackAction = null,
|
|
Action<Error> errorCallbackAction = null)
|
|
{
|
|
if (ForceError != null)
|
|
{
|
|
if (errorCallbackAction != null)
|
|
errorCallbackAction(ForceError);
|
|
|
|
IsCompleted = true;
|
|
OnOperationError(ForceError);
|
|
}
|
|
else
|
|
{
|
|
// on add package success, add the package to the list and set it to current
|
|
var list = Factory.Packages.ToList();
|
|
list.RemoveAll(p => p.PackageId.ToLower() == packageInfo.PackageId.ToLower());
|
|
list.Add(packageInfo);
|
|
Factory.Packages = list;
|
|
|
|
Factory.Packages.ByName(packageInfo.Name).SetCurrent(false);
|
|
packageInfo.IsCurrent = true;
|
|
|
|
if (doneCallbackAction != null)
|
|
doneCallbackAction(PackageInfo);
|
|
|
|
IsCompleted = true;
|
|
OnOperationSuccess(PackageInfo);
|
|
}
|
|
|
|
OnOperationFinalized();
|
|
}
|
|
|
|
internal void ResetEvents()
|
|
{
|
|
OnOperationError = delegate { };
|
|
OnOperationFinalized = delegate { };
|
|
OnOperationSuccess = delegate { };
|
|
}
|
|
}
|
|
}
|