2025-05-01 01:48:08 -07:00

127 lines
6.6 KiB
C#

using System.Collections.Generic;
using NUnit.Framework;
using UnityEditor;
using UnityEditor.AddressableAssets.GUI;
using UnityEditor.AddressableAssets.Settings;
using UnityEngine;
using UnityEngine.TestTools;
namespace Tests.Editor.GUI
{
public class UpgradeNotificationsTests
{
private const string k_DefaultPath = "DefaultPath";
private AddressableAssetSettings m_Settings;
[SetUp]
public void SetUp()
{
m_Settings = ScriptableObject.CreateInstance<AddressableAssetSettings>();
m_Settings.profileSettings.CreateDefaultProfile();
// we have to delete all the path variables so our tests can create them as necessary
m_Settings.profileSettings.RemoveValue(m_Settings.profileSettings.GetProfileDataByName(AddressableAssetSettings.kLocalBuildPath).Id);
m_Settings.profileSettings.RemoveValue(m_Settings.profileSettings.GetProfileDataByName(AddressableAssetSettings.kLocalLoadPath).Id);
m_Settings.profileSettings.RemoveValue(m_Settings.profileSettings.GetProfileDataByName(AddressableAssetSettings.kRemoteBuildPath).Id);
m_Settings.profileSettings.RemoveValue(m_Settings.profileSettings.GetProfileDataByName(AddressableAssetSettings.kRemoteLoadPath).Id);
}
[Test]
public void UpgradeNotificationsTests_NeedsPathPairMigration_ReturnsTrue_WhenOldEntryExistsAndNewEntryDoesNotExist()
{
// Arrange
m_Settings.profileSettings.CreateValue("LocalBuildPath", k_DefaultPath);
m_Settings.profileSettings.CreateValue("LocalLoadPath", k_DefaultPath);
m_Settings.profileSettings.CreateValue("RemoteBuildPath", k_DefaultPath);
m_Settings.profileSettings.CreateValue("RemoteLoadPath", k_DefaultPath);
var upgradeNotifications = new UpgradeNotifications();
// Act
var needsPathPairMigration = upgradeNotifications.NeedsPathPairMigration(m_Settings);
// Assert
Assert.IsTrue(needsPathPairMigration);
}
[Test]
public void UpgradeNotificationsTests_NeedsPathPairMigration_ReturnsFalse_WhenOldEntryDoesNotExist()
{
// Arrange
var upgradeNotifications = new UpgradeNotifications();
// Act
var needsPathPairMigration = upgradeNotifications.NeedsPathPairMigration(m_Settings);
// Assert
Assert.IsFalse(needsPathPairMigration);
}
[Test]
public void UpgradeNotificationsTests_NeedsPathPairMigration_ReturnsFalse_WhenNewEntryExists()
{
// Arrange
m_Settings.profileSettings.CreateDefaultProfile();
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kLocalBuildPath, k_DefaultPath);
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kLocalLoadPath, k_DefaultPath);
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kRemoteBuildPath, k_DefaultPath);
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kRemoteLoadPath, k_DefaultPath);
var upgradeNotifications = new UpgradeNotifications();
// Act
var needsPathPairMigration = upgradeNotifications.NeedsPathPairMigration(m_Settings);
// Assert
Assert.IsFalse(needsPathPairMigration);
}
[Test]
public void UpgradeNotificationsTests_DoPathPairMigration_RenamesOldEntryToNewEntry()
{
// Arrange
m_Settings.profileSettings.CreateValue("LocalBuildPath", k_DefaultPath);
m_Settings.profileSettings.CreateValue("LocalLoadPath", k_DefaultPath);
m_Settings.profileSettings.CreateValue("RemoteBuildPath", k_DefaultPath);
m_Settings.profileSettings.CreateValue("RemoteLoadPath", k_DefaultPath);
Dictionary<string, string> existingVariableIds = new Dictionary<string, string>();
foreach (var name in m_Settings.profileSettings.GetVariableNames())
{
existingVariableIds.Add(name, m_Settings.profileSettings.GetProfileDataByName(name).Id);
}
// Act
var upgradeNotifications = new UpgradeNotifications();
upgradeNotifications.DoPathPairMigration(m_Settings);
// Assert, since we're mapping two arrays by Id we want to be sure the ids match as well as just having the appropriate names
Assert.IsFalse(m_Settings.profileSettings.GetVariableNames().Contains("LocalBuildPath"));
Assert.AreEqual(existingVariableIds["LocalBuildPath"], m_Settings.profileSettings.GetProfileDataByName("Local.BuildPath").Id);
Assert.IsFalse(m_Settings.profileSettings.GetVariableNames().Contains("LocalLoadPath"));
Assert.AreEqual(existingVariableIds["LocalLoadPath"], m_Settings.profileSettings.GetProfileDataByName("Local.LoadPath").Id);
Assert.IsFalse(m_Settings.profileSettings.GetVariableNames().Contains("RemoteBuildPath"));
Assert.AreEqual(existingVariableIds["RemoteBuildPath"], m_Settings.profileSettings.GetProfileDataByName("Remote.BuildPath").Id);
Assert.IsFalse(m_Settings.profileSettings.GetVariableNames().Contains("RemoteLoadPath"));
Assert.AreEqual(existingVariableIds["RemoteLoadPath"], m_Settings.profileSettings.GetProfileDataByName("Remote.LoadPath").Id);
}
[Test]
public void UpgradeNotificationsTests_DoPathPairMigration_DoesNotRenameNewEntry()
{
// Arrange
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kLocalBuildPath, k_DefaultPath);
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kLocalLoadPath, k_DefaultPath);
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kRemoteBuildPath,k_DefaultPath);
m_Settings.profileSettings.CreateValue(AddressableAssetSettings.kRemoteLoadPath,k_DefaultPath);
var upgradeNotifications = new UpgradeNotifications();
// Act
upgradeNotifications.DoPathPairMigration(m_Settings);
// Assert
Assert.IsTrue(m_Settings.profileSettings.GetVariableNames().Contains(AddressableAssetSettings.kLocalBuildPath));
Assert.IsTrue(m_Settings.profileSettings.GetVariableNames().Contains(AddressableAssetSettings.kLocalLoadPath));
Assert.IsTrue(m_Settings.profileSettings.GetVariableNames().Contains(AddressableAssetSettings.kRemoteBuildPath));
Assert.IsTrue(m_Settings.profileSettings.GetVariableNames().Contains(AddressableAssetSettings.kRemoteLoadPath));
}
}
}