|
|
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine;
- using UnityEditor.Collaboration;
- using UnityEngine.TestTools;
- using NUnit.Framework;
-
- namespace UnityEditor.Collaboration.Tests
- {
- [TestFixture]
- internal class HistoryTests
- {
- private TestHistoryWindow _window;
- private TestRevisionsService _service;
- private CollabHistoryPresenter _presenter;
-
- [SetUp]
- public void SetUp()
- {
- _window = new TestHistoryWindow();
- _service = new TestRevisionsService();
- _presenter = new CollabHistoryPresenter(_window, new CollabHistoryItemFactory(), _service);
- }
-
- [TearDown]
- public void TearDown()
- {
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__PropagatesRevisionResult()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(authorName: "authorName", comment: "comment", revisionID: "revisionID"),
- }
- };
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual("revisionID", item.id);
- Assert.AreEqual("authorName", item.authorName);
- Assert.AreEqual("comment", item.comment);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__RevisionNumberingIsInOrder()
- {
- _service.result = new RevisionsResult()
- {
- RevisionsInRepo = 4,
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- new Revision(revisionID: "1"),
- new Revision(revisionID: "2"),
- new Revision(revisionID: "3"),
- }
- };
-
- _presenter.OnUpdatePage(0);
- var items = _window.items.ToArray();
-
- Assert.AreEqual(4, items[0].index);
- Assert.AreEqual(3, items[1].index);
- Assert.AreEqual(2, items[2].index);
- Assert.AreEqual(1, items[3].index);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__RevisionNumberingChangesForMorePages()
- {
- _service.result = new RevisionsResult()
- {
- RevisionsInRepo = 12,
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- new Revision(revisionID: "1"),
- new Revision(revisionID: "2"),
- new Revision(revisionID: "3"),
- new Revision(revisionID: "4"),
- }
- };
-
- _presenter.OnUpdatePage(1);
- var items = _window.items.ToArray();
-
- Assert.AreEqual(12, items[0].index);
- Assert.AreEqual(11, items[1].index);
- Assert.AreEqual(10, items[2].index);
- Assert.AreEqual(9, items[3].index);
- Assert.AreEqual(8, items[4].index);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__ObtainedIsCalculated()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(isObtained: false),
- new Revision(isObtained: true),
- }
- };
-
- _presenter.OnUpdatePage(0);
- var items = _window.items.ToArray();
-
- Assert.IsFalse(items[0].obtained);
- Assert.IsTrue(items[1].obtained);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__CurrentIsCalculated()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "1"),
- new Revision(revisionID: "2"),
- new Revision(revisionID: "3"),
- }
- };
- _service.tipRevision = "2";
-
- _presenter.OnUpdatePage(0);
- var items = _window.items.ToArray();
-
- Assert.AreEqual(false, items[0].current);
- Assert.AreEqual(true, items[1].current);
- Assert.AreEqual(false, items[2].current);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__InProgressIsCalculated()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "1"),
- new Revision(revisionID: "2"),
- new Revision(revisionID: "3"),
- }
- };
- _window.inProgressRevision = "2";
-
- _presenter.OnUpdatePage(0);
- var items = _window.items.ToArray();
-
- Assert.IsFalse(items[0].inProgress);
- Assert.IsTrue(items[1].inProgress);
- Assert.IsFalse(items[2].inProgress);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__EnabledIsCalculated()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- }
- };
- _window.revisionActionsEnabled = true;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(true, item.enabled);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__DisabledIsCalculated()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- }
- };
- _window.revisionActionsEnabled = false;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(false, item.enabled);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasNoneWhenNotTip()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "1"),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = false;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.None, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateTipHasNoneWhenEnabled()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = true;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.None, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasConfigureWhenTip()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = false;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.Configure, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasConfigureWhenZeroBuildStatus()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = false;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.Configure, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasNoneWhenZeroBuildStatuses()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0"),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = true;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.None, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasSuccessWhenCompleteAndSucceeded()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision
- (
- revisionID: "0",
- buildStatuses: new CloudBuildStatus[1]
- {
- new CloudBuildStatus(complete: true, success: true),
- }
- ),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = true;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.Success, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasInProgress()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision
- (
- revisionID: "0",
- buildStatuses: new CloudBuildStatus[1]
- {
- new CloudBuildStatus(complete: false),
- }
- ),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = true;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.InProgress, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasFailure()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision
- (
- revisionID: "0",
- buildStatuses: new CloudBuildStatus[1]
- {
- new CloudBuildStatus(complete: true, success: false),
- }
- ),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = true;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.Failed, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasFailureWhenAnyBuildsFail()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision
- (
- revisionID: "0",
- buildStatuses: new CloudBuildStatus[3]
- {
- new CloudBuildStatus(complete: true, success: false),
- new CloudBuildStatus(complete: true, success: false),
- new CloudBuildStatus(complete: true, success: true),
- }
- ),
- }
- };
- _service.tipRevision = "0";
- _presenter.BuildServiceEnabled = true;
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(BuildState.Failed, item.buildState);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__ChangesPropagateThrough()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0", entries: GenerateChangeActions(3)),
- }
- };
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
- var changes = item.changes.ToList();
-
- Assert.AreEqual("Path0", changes[0].path);
- Assert.AreEqual("Path1", changes[1].path);
- Assert.AreEqual("Path2", changes[2].path);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__ChangesTotalIsCalculated()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0", entries: GenerateChangeActions(3)),
- }
- };
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(3, item.changes.Count);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__ChangesTruncatedIsCalculated()
- {
- for (var i = 0; i < 20; i++)
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(revisionID: "0", entries: GenerateChangeActions(i)),
- }
- };
-
- _presenter.OnUpdatePage(0);
- var item = _window.items.First();
-
- Assert.AreEqual(i > 10, item.changesTruncated);
- }
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__OnlyKeeps10ChangeActions()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision(authorName: "Test", author: "test", entries: GenerateChangeActions(12)),
- }
- };
-
- _presenter.OnUpdatePage(1);
- var item = _window.items.First();
-
- Assert.AreEqual(10, item.changes.Count);
- Assert.AreEqual(12, item.changesTotal);
- Assert.AreEqual(true, item.changesTruncated);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__DeduplicatesMetaFiles()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision
- (
- authorName: "Test",
- author: "test",
- revisionID: "",
- entries: new ChangeAction[2]
- {
- new ChangeAction(path: "Path1", action: "Action1"),
- new ChangeAction(path: "Path1.meta", action: "Action1"),
- }
- ),
- }
- };
-
- _presenter.OnUpdatePage(1);
- var item = _window.items.First();
-
- Assert.AreEqual(1, item.changes.Count);
- Assert.AreEqual(1, item.changesTotal);
- Assert.AreEqual("Path1", item.changes.First().path);
- }
-
- [Test]
- public void CollabHistoryPresenter_OnUpdatePage__FolderMetaFilesAreCounted()
- {
- _service.result = new RevisionsResult()
- {
- Revisions = new List<Revision>()
- {
- new Revision
- (
- authorName: "Test",
- author: "test",
- entries: new ChangeAction[1]
- {
- new ChangeAction(path: "Folder1.meta", action: "Action1"),
- }
- ),
- }
- };
-
- _presenter.OnUpdatePage(1);
- var item = _window.items.First();
-
- Assert.AreEqual(1, item.changes.Count);
- Assert.AreEqual(1, item.changesTotal);
- Assert.AreEqual("Folder1", item.changes.First().path);
- }
-
- private static ChangeAction[] GenerateChangeActions(int count)
- {
- var entries = new ChangeAction[count];
- for (var i = 0; i < count; i++)
- entries[i] = new ChangeAction(path: "Path" + i, action: "Action" + i);
- return entries;
- }
- }
-
- internal class TestRevisionsService : IRevisionsService
- {
- public RevisionsResult result;
- public event RevisionsDelegate FetchRevisionsCallback;
-
- public string tipRevision { get; set; }
- public string currentUser { get; set; }
-
- public void GetRevisions(int offset, int count)
- {
- if(FetchRevisionsCallback != null)
- {
- FetchRevisionsCallback(result);
- }
- }
- }
-
- internal class TestHistoryWindow : ICollabHistoryWindow
- {
- public IEnumerable<RevisionData> items;
-
- public bool revisionActionsEnabled { get; set; }
- public int itemsPerPage { get; set; }
- public string errMessage { get; set; }
- public string inProgressRevision { get; set; }
- public PageChangeAction OnPageChangeAction { get; set; }
- public RevisionAction OnGoBackAction { get; set; }
- public RevisionAction OnUpdateAction { get; set; }
- public RevisionAction OnRestoreAction { get; set; }
- public ShowBuildAction OnShowBuildAction { get; set; }
- public Action OnShowServicesAction { get; set; }
-
- public void UpdateState(HistoryState state, bool force)
- {
- }
-
- public void UpdateRevisions(IEnumerable<RevisionData> items, string tip, int totalRevisions, int currPage)
- {
- this.items = items;
- }
- }
- }
|