MockAddOperation.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Linq;
  3. namespace UnityEditor.PackageManager.UI.Tests
  4. {
  5. internal class MockAddOperation : MockOperation, IAddOperation
  6. {
  7. public new event Action<Error> OnOperationError = delegate { };
  8. public new event Action OnOperationFinalized = delegate { };
  9. public event Action<PackageInfo> OnOperationSuccess = delegate { };
  10. public PackageInfo PackageInfo { get; set; }
  11. public MockAddOperation(MockOperationFactory factory, PackageInfo packageInfo = null) : base(factory)
  12. {
  13. PackageInfo = packageInfo;
  14. }
  15. public void AddPackageAsync(PackageInfo packageInfo, Action<PackageInfo> doneCallbackAction = null,
  16. Action<Error> errorCallbackAction = null)
  17. {
  18. if (ForceError != null)
  19. {
  20. if (errorCallbackAction != null)
  21. errorCallbackAction(ForceError);
  22. IsCompleted = true;
  23. OnOperationError(ForceError);
  24. }
  25. else
  26. {
  27. // on add package success, add the package to the list and set it to current
  28. var list = Factory.Packages.ToList();
  29. list.RemoveAll(p => p.PackageId.ToLower() == packageInfo.PackageId.ToLower());
  30. list.Add(packageInfo);
  31. Factory.Packages = list;
  32. Factory.Packages.ByName(packageInfo.Name).SetCurrent(false);
  33. packageInfo.IsCurrent = true;
  34. if (doneCallbackAction != null)
  35. doneCallbackAction(PackageInfo);
  36. IsCompleted = true;
  37. OnOperationSuccess(PackageInfo);
  38. }
  39. OnOperationFinalized();
  40. }
  41. internal void ResetEvents()
  42. {
  43. OnOperationError = delegate { };
  44. OnOperationFinalized = delegate { };
  45. OnOperationSuccess = delegate { };
  46. }
  47. }
  48. }