/GitExtensionsTest/GitUI/AuthorEmailBasedRevisionHighlightingFixture.cs

https://github.com/fraga/gitextensions · C# · 168 lines · 133 code · 35 blank · 0 comment · 0 complexity · 82932cf0a4472b954d80bc30de2e0c0b MD5 · raw file

  1. using System;
  2. using System.IO;
  3. using FluentAssertions;
  4. using GitCommands;
  5. using GitCommands.Config;
  6. using GitUI.UserControls;
  7. using NUnit.Framework;
  8. namespace GitExtensionsTest.GitUI
  9. {
  10. [TestFixture]
  11. class AuthorEmailBasedRevisionHighlightingFixture
  12. {
  13. private const string ExpectedAuthorEmail1 = "doe1@example.org";
  14. private const string ExpectedAuthorEmail2 = "doe2@example.org";
  15. [Test]
  16. public void AuthorEmailToHighlight_should_be_null_when_no_revision_change_processed_yet()
  17. {
  18. var sut = new AuthorEmailBasedRevisionHighlighting();
  19. sut.AuthorEmailToHighlight.Should().BeNull();
  20. }
  21. [Test]
  22. public void When_multiple_revisions_selected_Then_ProcessSelectionChange_should_return_NoAction()
  23. {
  24. var sut = new AuthorEmailBasedRevisionHighlighting();
  25. var currentModule = NewModule();
  26. var action = sut.ProcessRevisionSelectionChange(currentModule,
  27. new[]
  28. {
  29. NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1),
  30. NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1)
  31. });
  32. action.Should().Be(AuthorEmailBasedRevisionHighlighting.SelectionChangeAction.NoAction);
  33. }
  34. [Test]
  35. public void Given_previously_selected_revision_When_multiple_revisions_selected_Then_AuthorEmailToHighlight_should_not_change()
  36. {
  37. var sut = new AuthorEmailBasedRevisionHighlighting();
  38. var currentModule = NewModule();
  39. sut.ProcessRevisionSelectionChange(currentModule,
  40. new[] {NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1)});
  41. sut.ProcessRevisionSelectionChange(currentModule,
  42. new[]
  43. {
  44. NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail2),
  45. NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1)
  46. });
  47. sut.AuthorEmailToHighlight.Should().Be(ExpectedAuthorEmail1);
  48. }
  49. [Test]
  50. public void Given_no_previously_selected_revision_When_single_revision_selected_Then_ProcessSelectionChange_should_return_RefreshUserInterface()
  51. {
  52. var sut = new AuthorEmailBasedRevisionHighlighting();
  53. var currentModule = NewModule();
  54. var action = sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  55. action.Should().Be(AuthorEmailBasedRevisionHighlighting.SelectionChangeAction.RefreshUserInterface);
  56. }
  57. [Test]
  58. public void Given_no_previously_selected_revision_When_single_revision_selected_Then_AuthorEmailToHighlight_should_change()
  59. {
  60. var sut = new AuthorEmailBasedRevisionHighlighting();
  61. var currentModule = NewModule();
  62. sut.ProcessRevisionSelectionChange(currentModule, new[] {NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1)});
  63. sut.AuthorEmailToHighlight.Should().Be(ExpectedAuthorEmail1);
  64. }
  65. [Test]
  66. public void Given_previously_selected_revision_When_single_revision_with_same_author_email_selected_Then_ProcessSelectionChange_should_return_NoAction()
  67. {
  68. var sut = new AuthorEmailBasedRevisionHighlighting();
  69. var currentModule = NewModule();
  70. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  71. var action = sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  72. action.Should().Be(AuthorEmailBasedRevisionHighlighting.SelectionChangeAction.NoAction);
  73. }
  74. [Test]
  75. public void Given_previously_selected_revision_When_single_revision_with_same_author_email_selected_Then_AuthorEmailToHighlight_should_not_change()
  76. {
  77. var sut = new AuthorEmailBasedRevisionHighlighting();
  78. var currentModule = NewModule();
  79. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  80. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  81. sut.AuthorEmailToHighlight.Should().Be(ExpectedAuthorEmail1);
  82. }
  83. [Test]
  84. public void Given_previously_selected_revision_When_single_revision_with_different_author_email_selected_Then_ProcessSelectionChange_should_return_RefreshUserInterface()
  85. {
  86. var sut = new AuthorEmailBasedRevisionHighlighting();
  87. var currentModule = NewModule();
  88. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  89. var action = sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail2) });
  90. action.Should().Be(AuthorEmailBasedRevisionHighlighting.SelectionChangeAction.RefreshUserInterface);
  91. }
  92. [Test]
  93. public void Given_previously_selected_revision_When_single_revision_with_different_author_email_selected_Then_AuthorEmailToHighlight_should_change()
  94. {
  95. var sut = new AuthorEmailBasedRevisionHighlighting();
  96. var currentModule = NewModule();
  97. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  98. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail2) });
  99. sut.AuthorEmailToHighlight.Should().Be(ExpectedAuthorEmail2);
  100. }
  101. [Test]
  102. public void Given_previously_selected_revision_When_no_revision_selected_Then_ProcessSelectionChange_should_return_RefreshUserInterface()
  103. {
  104. var sut = new AuthorEmailBasedRevisionHighlighting();
  105. var currentModule = NewModule();
  106. currentModule.SetSetting(SettingKeyString.UserEmail, ExpectedAuthorEmail2);
  107. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  108. var action = sut.ProcessRevisionSelectionChange(currentModule, new GitRevision[0]);
  109. action.Should().Be(AuthorEmailBasedRevisionHighlighting.SelectionChangeAction.RefreshUserInterface);
  110. }
  111. [Test]
  112. public void Given_previously_selected_revision_When_no_revision_selected_Then_AuthorEmailToHighlight_should_be_value_of_current_user_email_setting()
  113. {
  114. var sut = new AuthorEmailBasedRevisionHighlighting();
  115. var currentModule = NewModule();
  116. currentModule.SetSetting(SettingKeyString.UserEmail, ExpectedAuthorEmail2);
  117. sut.ProcessRevisionSelectionChange(currentModule, new[] { NewRevisionWithAuthorEmail(currentModule, ExpectedAuthorEmail1) });
  118. sut.ProcessRevisionSelectionChange(currentModule, new GitRevision[0]);
  119. sut.AuthorEmailToHighlight.Should().Be(ExpectedAuthorEmail2);
  120. }
  121. private static GitModule NewModule()
  122. {
  123. return new GitModule(Path.GetTempPath());
  124. }
  125. private static GitRevision NewRevisionWithAuthorEmail(GitModule currentModule, string authorEmail)
  126. {
  127. return new GitRevision(currentModule, Guid.NewGuid().ToString())
  128. {
  129. AuthorEmail = authorEmail
  130. };
  131. }
  132. }
  133. }