using System; using System.Collections.Generic; using System.Linq; using UnityEngine.Experimental.UIElements; using NUnit.Framework; namespace UnityEditor.PackageManager.UI.Tests { internal class PackageManagerWindowTests : UITests { // Filter change shows correct result private Action> onPackageChangedEvent; // TODO: We need to have a discussion on event de-registration private bool showPreviewPackagesPreviousValue; [SetUp] public void Setup() { showPreviewPackagesPreviousValue = PackageManagerPrefs.ShowPreviewPackages; PackageManagerPrefs.ShowPreviewPackages = true; PackageCollection.Instance.SetFilter(PackageFilter.Local); SetListPackages(Enumerable.Empty()); SetSearchPackages(Enumerable.Empty()); Factory.ResetOperations(); } [TearDown] public void TearDown() { PackageCollection.Instance.OnPackagesChanged -= onPackageChangedEvent; PackageManagerPrefs.ShowPreviewPackages = showPreviewPackagesPreviousValue; } [Test] public void When_Default_FirstPackageUIElement_HasSelectedClass() { onPackageChangedEvent = packages => { var package = Container.Query(null, "package").First(); Assert.NotNull(package); Assert.IsTrue(package.ClassListContains(PackageItem.SelectedClassName)); }; PackageCollection.Instance.OnPackagesChanged += onPackageChangedEvent; SetListPackages(PackageSets.Instance.Many(5, true)); } [Test] public void When_PackageCollection_Updates_PackageList_Updates() { var packages = PackageSets.Instance.Outdated(); var current = packages.ToList().First(); var latest = packages.ToList().Last(); SetListPackages(packages); Factory.AddOperation = new MockAddOperation(Factory, latest); var package = PackageCollection.Instance.GetPackageByName(current.Name); onPackageChangedEvent = newpackages => { package = PackageCollection.Instance.GetPackageByName(current.Name); Assert.IsTrue(package.Current.PackageId == latest.PackageId); var packageItem = Container.Query(null, "package").Build().First(); var label = packageItem.Q