| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- using System.Collections.Generic;
- using JetBrains.Annotations;
- using NUnit.Framework;
- using Unity.Cloud.Collaborate.Models;
- using Unity.Cloud.Collaborate.Models.Structures;
- using Unity.Cloud.Collaborate.Presenters;
- using Unity.Cloud.Collaborate.Tests.Models;
- using Unity.Cloud.Collaborate.Views;
- namespace Unity.Cloud.Collaborate.Tests.Presenters
- {
- public class ChangesPresenterTests
- {
- class TestableChangesPresenter : ChangesPresenter
- {
- public TestableChangesPresenter([NotNull] IChangesView view, [NotNull] IChangesModel model, [NotNull] IMainModel mainModel)
- : base(view, model, mainModel)
- {
- }
- public void NotifyOnRemoteRevisionsAvailabilityChange(bool available)
- {
- base.OnRemoteRevisionsAvailabilityChange(available);
- }
- public void NotifyOnUpdatedChangeList()
- {
- base.OnUpdatedChangeList();
- }
- public void NotifyOnUpdatedPartiallySelectedChanges()
- {
- base.OnUpdatedPartiallySelectedChanges();
- }
- public void NotifyOnConflictStatusChange(bool conflicted)
- {
- base.OnConflictStatusChange(conflicted);
- }
- }
- TestChangesView m_View;
- TestChangesModel m_Model;
- TestMainModel m_MainModel;
- TestableChangesPresenter m_Presenter;
- [SetUp]
- public void Setup()
- {
- m_View = new TestChangesView();
- m_Model = new TestChangesModel();
- m_MainModel = new TestMainModel();
- m_Presenter = new TestableChangesPresenter(m_View, m_Model, m_MainModel);
- }
- [TearDown]
- public void TearDown()
- {
- m_Presenter.Stop();
- m_View = null;
- m_Model = null;
- m_MainModel = null;
- m_Presenter = null;
- }
- [Test]
- public void TestToggledCountValue()
- {
- m_Presenter.Start();
- m_Model.ToggledEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") },
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path2") }
- };
- Assert.AreEqual(2, m_Presenter.ToggledCount);
- }
- [Test]
- public void TestTotalCountValue()
- {
- m_Presenter.Start();
- m_Model.AllEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") },
- new TestChangesModel.ChangeEntryData { Toggled = false, Entry = new ChangeEntry("path2") }
- };
- Assert.AreEqual(2, m_Presenter.TotalCount);
- }
- [Test]
- public void TestConflictedCountValue()
- {
- m_Presenter.Start();
- m_Model.ConflictedEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData
- {
- Conflicted = true,
- Entry = new ChangeEntry("path", null, ChangeEntryStatus.Unmerged, false, true)
- },
- new TestChangesModel.ChangeEntryData
- {
- Conflicted = true,
- Entry = new ChangeEntry("path2", null, ChangeEntryStatus.Unmerged, false, true)
- }
- };
- Assert.AreEqual(2, m_Presenter.ConflictedCount);
- }
- [Test]
- public void TestSearchingValue()
- {
- m_Presenter.Start();
- m_Model.SavedSearchQuery = "test";
- Assert.IsTrue(m_Presenter.Searching);
- m_Model.SavedSearchQuery = "";
- Assert.IsFalse(m_Presenter.Searching);
- }
- [Test]
- public void TestSettingEntryToggle()
- {
- m_Presenter.Start();
- const string path = "path";
- const bool value = true;
- m_Presenter.UpdateEntryToggle(path, value);
- Assert.AreEqual(1, m_Model.UpdateEntryToggleCount);
- Assert.AreEqual(path, m_Model.UpdateEntryTogglePath);
- Assert.AreEqual(value, m_Model.UpdateEntryToggleValue);
- }
- [Test]
- public void TestRequestPublish()
- {
- m_Presenter.Start();
- m_Model.SavedSearchQuery = "";
- m_Model.ToggledEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") }
- };
- m_Presenter.RequestPublish();
- Assert.AreEqual(1, m_Model.GetToggledEntriesCount);
- Assert.AreEqual(1, m_Model.RequestPublishCount);
- Assert.AreEqual(1, m_Model.RequestPublishList.Count);
- }
- [Test]
- public void TestRequestPublishFailWhenSearching()
- {
- m_Presenter.Start();
- m_Model.SavedSearchQuery = "some query";
- Assert.Catch(() => m_Presenter.RequestPublish());
- }
- [Test]
- public void TestRequestDiscard()
- {
- m_Presenter.Start();
- const string path = "path";
- var entry = new ChangeEntry(path);
- m_Presenter.RequestDiscard(entry);
- Assert.AreEqual(1, m_Model.RequestDiscardCount);
- Assert.AreEqual(path, m_Model.RequestDiscardEntry.Path);
- // Ensure it created a dialogue
- Assert.AreEqual(1, m_View.DisplayDialogueCount);
- }
- [Test]
- public void TestRequestDiffChanges()
- {
- m_Presenter.Start();
- const string path = "path";
- m_Presenter.RequestDiffChanges(path);
- Assert.AreEqual(1, m_Model.RequestDiffCount);
- Assert.AreEqual(path, m_Model.RequestDiffPath);
- }
- [Test]
- public void TestSetSearchQuery()
- {
- m_Presenter.Start();
- Assert.AreEqual(1, m_View.SetSearchQueryCount);
- const string query = "path Path ";
- m_Presenter.SetSearchQuery(query);
- Assert.AreEqual(query.Trim().ToLower(), m_Model.SavedSearchQuery);
- Assert.AreEqual(2, m_View.SetSearchQueryCount);
- Assert.AreEqual(query, m_View.SetSearchQueryValue);
- }
- [Test]
- public void TestHavingSearchQueryDisablesPublish()
- {
- m_Presenter.Start();
- m_Model.ToggledEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") }
- };
- // Base case
- m_Presenter.SetSearchQuery("");
- Assert.AreEqual(1, m_View.SetPublishEnabledCount);
- Assert.AreEqual(true, m_View.SetPublishEnabledValue);
- // Base to disabled case
- m_Presenter.SetSearchQuery("query");
- Assert.AreEqual(2, m_View.SetPublishEnabledCount);
- Assert.AreEqual(false, m_View.SetPublishEnabledValue);
- Assert.IsNotNull(m_View.SetPublishEnabledReason);
- // Disabled back to base case.
- m_Presenter.SetSearchQuery("");
- Assert.AreEqual(3, m_View.SetPublishEnabledCount);
- Assert.AreEqual(true, m_View.SetPublishEnabledValue);
- }
- [Test]
- public void TestHavingConflictsDisablesPublish()
- {
- m_Model.ToggledEntries = new List<IChangeEntryData>()
- {
- new TestChangesModel.ChangeEntryData
- {
- Entry = new ChangeEntry("path", null, ChangeEntryStatus.Modified)
- }
- };
- // Base case
- m_Presenter.Start();
- m_Model.ConflictedEntries = new List<IChangeEntryData>();
- m_Model.TriggerUpdatedChangeList();
- Assert.AreEqual(1, m_View.SetPublishEnabledCount);
- Assert.AreEqual(true, m_View.SetPublishEnabledValue);
- // Disable
- m_Model.ConflictedEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData
- {
- Conflicted = true,
- Entry = new ChangeEntry("path", null, ChangeEntryStatus.Unmerged, false, true)
- }
- };
- m_Model.TriggerUpdatedChangeList();
- Assert.AreEqual(2, m_View.SetPublishEnabledCount);
- Assert.AreEqual(false, m_View.SetPublishEnabledValue);
- Assert.IsNotNull(m_View.SetPublishEnabledReason);
- // Re enabled
- m_Model.ConflictedEntries = new List<IChangeEntryData>();
- m_Model.TriggerUpdatedChangeList();
- Assert.AreEqual(3, m_View.SetPublishEnabledCount);
- Assert.AreEqual(true, m_View.SetPublishEnabledValue);
- }
- [Test]
- public void TestSetRevisionService()
- {
- m_Presenter.Start();
- Assert.AreEqual(1, m_View.SetRevisionSummaryCount);
- const string summary = "summary";
- m_Presenter.SetRevisionSummary(summary);
- Assert.AreEqual(summary, m_Model.SavedRevisionSummary);
- Assert.AreEqual(2, m_View.SetRevisionSummaryCount);
- Assert.AreEqual(summary, m_View.SetRevisionSummaryValue);
- }
- [Test]
- public void TestReceivingBusyMessage()
- {
- m_Presenter.Start();
- // Sent initial status on start
- Assert.AreEqual(1, m_View.SetBusyStatusCount);
- Assert.AreEqual(false, m_View.SetBusyStatusValue);
- // Test values once events called:
- m_Model.TriggerBusyStatusUpdated(true);
- Assert.AreEqual(2, m_View.SetBusyStatusCount);
- Assert.AreEqual(true, m_View.SetBusyStatusValue);
- m_Model.TriggerBusyStatusUpdated(false);
- Assert.AreEqual(3, m_View.SetBusyStatusCount);
- Assert.AreEqual(false, m_View.SetBusyStatusValue);
- }
- [Test]
- public void TestOnUpdatedChangeListUpdatesPublishButton()
- {
- m_Presenter.Start();
- m_Model.ToggledEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") },
- new TestChangesModel.ChangeEntryData { Toggled = false, Entry = new ChangeEntry("path2") }
- };
- m_Presenter.NotifyOnUpdatedChangeList();
- Assert.AreEqual(true, m_View.SetPublishEnabledValue);
- }
- [Test]
- public void TestOnPartialChangesUpdatesPublishButton()
- {
- m_Presenter.Start();
- m_Model.ToggledEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") },
- new TestChangesModel.ChangeEntryData { Toggled = false, Entry = new ChangeEntry("path2") }
- };
- m_Presenter.NotifyOnUpdatedPartiallySelectedChanges();
- Assert.AreEqual(true, m_View.SetPublishEnabledValue);
- }
- [Test]
- public void TestOnRemoteRevisionsAvailabilityChangeUpdatesPublishButton()
- {
- m_Presenter.Start();
- m_Model.ToggledEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") },
- new TestChangesModel.ChangeEntryData { Toggled = false, Entry = new ChangeEntry("path2") }
- };
- m_MainModel.RemoteRevisionsAvailable = true;
- m_Presenter.NotifyOnRemoteRevisionsAvailabilityChange(true);
- Assert.AreEqual(false, m_View.SetPublishEnabledValue);
- }
- [Test]
- public void TestOnConflictStatusChangeUpdatesPublishButton()
- {
- m_Presenter.Start();
- m_Model.ToggledEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData { Toggled = true, Entry = new ChangeEntry("path") },
- new TestChangesModel.ChangeEntryData { Toggled = false, Entry = new ChangeEntry("path2") }
- };
- m_Model.ConflictedEntries = new List<IChangeEntryData>
- {
- new TestChangesModel.ChangeEntryData
- {
- Conflicted = true,
- Entry = new ChangeEntry("path", null, ChangeEntryStatus.Unmerged, false, true)
- }
- };
- m_Presenter.NotifyOnConflictStatusChange(true);
- Assert.AreEqual(false, m_View.SetPublishEnabledValue);
- }
- }
- }
|