UnityGame/Library/PackageCache/com.unity.multiplayer.center/Tests/Editor/TabGroupTests.cs
2024-10-27 10:53:47 +03:00

112 lines
3.8 KiB
C#

using NUnit.Framework;
using Unity.Multiplayer.Center.Analytics;
using Unity.Multiplayer.Center.Common;
using Unity.Multiplayer.Center.Common.Analytics;
using UnityEngine;
using Unity.Multiplayer.Center.Window;
using UnityEditor;
using UnityEngine.UIElements;
namespace Unity.MultiplayerCenterTests
{
[TestFixture]
class TabGroupTests
{
TabGroup m_TabGroup;
RecommendationTabView m_RecommendationTabView;
GettingStartedTabView m_GettingStartedTabView;
private class AnalyticsMock : IMultiplayerCenterAnalytics
{
public void SendInstallationEvent(AnswerData data, Preset preset, Package[] packages) {}
public void SendRecommendationEvent(AnswerData data, Preset preset){}
public void SendGettingStartedInteractionEvent(string targetPackageId, string sectionId, InteractionDataType type, string displayName) {}
}
private class MockTabEnabled : ITabView
{
public string Name => "MockTabEnabled";
public VisualElement RootVisualElement { get; set; }
public void SetVisible(bool visible)
{
RootVisualElement.style.display = visible ? DisplayStyle.Flex : DisplayStyle.None;
}
public void Refresh() { }
public void Clear() { }
public IMultiplayerCenterAnalytics MultiplayerCenterAnalytics { get; set; }
}
private class MockTabDisabled : ITabView
{
public string Name => "MockTabDisbled";
public VisualElement RootVisualElement { get; set; }
public void SetVisible(bool visible)
{
RootVisualElement.style.display = visible ? DisplayStyle.Flex : DisplayStyle.None;
}
public bool IsEnabled => false;
public void Refresh() { }
public void Clear() { }
public IMultiplayerCenterAnalytics MultiplayerCenterAnalytics { get; set; }
}
[SetUp]
public void SetUp()
{
m_RecommendationTabView = new RecommendationTabView();
m_GettingStartedTabView = new GettingStartedTabView();
m_TabGroup = new TabGroup(new AnalyticsMock(), new ITabView[] {m_RecommendationTabView, m_GettingStartedTabView, new MockTabEnabled(), new MockTabDisabled()});
}
[Test]
public void TabGroup_CreateTabs_4TabViews()
{
m_TabGroup.CreateTabs();
Assert.AreEqual(4, m_TabGroup.ViewCount);
}
[Test]
public void TabGroup_CreateTabs_SelectsTabFromUserPreferences()
{
m_TabGroup.CreateTabs();
var currentTabFromEditorPrefs = EditorPrefs.GetInt(PlayerSettings.productName + "_MultiplayerCenter_TabIndex", 0);
Assert.AreEqual(currentTabFromEditorPrefs, m_TabGroup.CurrentTab);
}
[Test]
public void TabGroup_SelectDeactivatedTab_SelectsFirstTab()
{
m_TabGroup.CreateTabs();
m_TabGroup.SetSelected(3);
Assert.AreEqual(0, m_TabGroup.CurrentTab);
}
[Test]
public void TabGroup_AnalyticsIsPropagatedToAllViews()
{
Assert.NotNull(m_RecommendationTabView.MultiplayerCenterAnalytics);
Assert.NotNull(m_GettingStartedTabView.MultiplayerCenterAnalytics);
Assert.AreEqual(m_RecommendationTabView.MultiplayerCenterAnalytics, m_GettingStartedTabView.MultiplayerCenterAnalytics);
Assert.AreEqual(m_RecommendationTabView.MultiplayerCenterAnalytics.GetType(), typeof(AnalyticsMock));
}
[TearDown]
public void TearDown()
{
if (m_TabGroup != null)
{
m_TabGroup.Clear();
}
}
}
}