ProjektMWS/Projekt MWS/Library/PackageCache/com.unity.collab-proxy@1.3.9/Tests/Editor/Models/StartModelTests.cs
2021-06-28 19:31:12 +02:00

192 lines
6.6 KiB
C#

using System;
using System.Collections;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using NUnit.Framework;
using Unity.Cloud.Collaborate.Models.Enums;
using Unity.Cloud.Collaborate.Models.Providers;
using UnityEngine.TestTools;
namespace Unity.Cloud.Collaborate.Tests.Models
{
internal class StartModelTests
{
TestCollab m_Provider;
AsyncToCoroutine m_Atc;
[OneTimeSetUp]
public void OneTimeSetup()
{
m_Atc = new AsyncToCoroutine();
}
[SetUp]
public void Setup()
{
m_Provider = new TestCollab();
}
[TearDown]
public void TearDown()
{
m_Provider = null;
}
[UnityTest]
public IEnumerator TestWhenProjectBoundSavesAssets()
{
return m_Atc.Run(async () =>
{
var saveAssetsCallCount = 0;
//ensure we return true for isProjectBound
m_Provider.isProjectBoundTestImpl = () => ProjectStatus.Bound;
m_Provider.saveAssetsTestImpl = () => saveAssetsCallCount++;
saveAssetsCallCount.ShouldBe(0);
await m_Provider.TestRequestTurnOnService();
saveAssetsCallCount.ShouldBe(1, $"Expected {nameof(saveAssetsCallCount)} to be 1");
});
}
[UnityTest]
public IEnumerator TestWhenGenesisReturnsForbiddenShowsCredentialsError()
{
return m_Atc.Run(async () =>
{
var showCredentialsErrorCallCount = 0;
var putAsyncCallCount = 0;
//ensure we return true for isProjectBound
m_Provider.isProjectBoundTestImpl = () => ProjectStatus.Bound;
m_Provider.showCredentialsErrorTestImpl = () => showCredentialsErrorCallCount++;
m_Provider.putAsyncTestImpl = () =>
{
putAsyncCallCount++;
return Task.Run(() => new HttpResponseMessage(HttpStatusCode.Forbidden));
};
putAsyncCallCount.ShouldBe(0);
showCredentialsErrorCallCount.ShouldBe(0);
await m_Provider.TestRequestTurnOnService();
putAsyncCallCount.ShouldBe(1, $"Expected {nameof(putAsyncCallCount)} to be 1");
showCredentialsErrorCallCount.ShouldBe(1, $"Expected {nameof(showCredentialsErrorCallCount)} to be 1");
});
}
[UnityTest]
public IEnumerator TestsWhenGenesisReturnsErrorShowsGenericError()
{
return m_Atc.Run(async () =>
{
var showGeneralErrorCallCount = 0;
var putAsyncCallCount = 0;
//ensure we return true for isProjectBound
m_Provider.isProjectBoundTestImpl = () => ProjectStatus.Bound;
m_Provider.showGeneralErrorTestImpl = () =>
{
showGeneralErrorCallCount++;
};
m_Provider.putAsyncTestImpl = () =>
{
putAsyncCallCount++;
return Task.Run(() => new HttpResponseMessage(HttpStatusCode.NotFound));
};
putAsyncCallCount.ShouldBe(0);
showGeneralErrorCallCount.ShouldBe(0);
await m_Provider.TestRequestTurnOnService();
putAsyncCallCount.ShouldBe(1, $"Expected {nameof(putAsyncCallCount)} to be 1");
showGeneralErrorCallCount.ShouldBe(1, $"Expected {nameof(showGeneralErrorCallCount)} to be 1");
});
}
[UnityTest]
public IEnumerator TestWhenGenesisReturnsOkCallsTurnOnCollabInternal()
{
return m_Atc.Run(async () =>
{
var putAsyncCallCount = 0;
var turnOnCollabInternalCallCount = 0;
// Ensure we return true for isProjectBound.
m_Provider.isProjectBoundTestImpl = () => ProjectStatus.Bound;
m_Provider.turnOnCollabInternalTestImpl = () => turnOnCollabInternalCallCount++;
m_Provider.putAsyncTestImpl = () =>
{
putAsyncCallCount++;
return Task.Run(() => new HttpResponseMessage(HttpStatusCode.OK));
};
putAsyncCallCount.ShouldBe(0);
turnOnCollabInternalCallCount.ShouldBe(0);
await m_Provider.TestRequestTurnOnService();
putAsyncCallCount.ShouldBe(1, $"Expected {nameof(putAsyncCallCount)} to be 1");
turnOnCollabInternalCallCount.ShouldBe(1, $"Expected {nameof(turnOnCollabInternalCallCount)} to be 1");
});
}
class TestCollab : Collab
{
public Func<ProjectStatus> isProjectBoundTestImpl;
public Action saveAssetsTestImpl;
public Action turnOnCollabInternalTestImpl;
public Func<Task<HttpResponseMessage>> putAsyncTestImpl;
public Action showCredentialsErrorTestImpl;
public Action showGeneralErrorTestImpl;
public TestCollab()
{
isProjectBoundTestImpl = () => ProjectStatus.Unbound;
saveAssetsTestImpl = () => { };
turnOnCollabInternalTestImpl = () => { };
showCredentialsErrorTestImpl = () => { };
showGeneralErrorTestImpl = () => { };
putAsyncTestImpl = () => Task.Run(() => new HttpResponseMessage());
}
public async Task TestRequestTurnOnService()
{
await RequestTurnOnServiceInternal();
}
protected override Task<HttpResponseMessage> PutAsync(HttpClient client, string fullUrl, StringContent content)
{
return putAsyncTestImpl?.Invoke();
}
protected override void TurnOnCollabInternal()
{
turnOnCollabInternalTestImpl?.Invoke();
}
protected override void SaveAssets()
{
saveAssetsTestImpl?.Invoke();
}
public override ProjectStatus GetProjectStatus()
{
return isProjectBoundTestImpl?.Invoke() ?? ProjectStatus.Unbound;
}
protected override void ShowCredentialsError()
{
showCredentialsErrorTestImpl?.Invoke();
}
protected override void ShowGeneralError()
{
showGeneralErrorTestImpl?.Invoke();
}
}
}
}