WikiPageTests.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /*
  2. Copyright 2011 - 2022 Adrian Popescu
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. using System;
  14. using System.Collections.Specialized;
  15. using System.Linq;
  16. using Padi.RedmineApi.Tests.Infrastructure;
  17. using Redmine.Net.Api;
  18. using Redmine.Net.Api.Exceptions;
  19. using Redmine.Net.Api.Types;
  20. using Xunit;
  21. namespace Padi.RedmineApi.Tests.Tests.Sync
  22. {
  23. [Trait("Redmine-Net-Api", "WikiPages")]
  24. #if !(NET20 || NET40)
  25. [Collection("RedmineCollection")]
  26. #endif
  27. public class WikiPageTests
  28. {
  29. public WikiPageTests(RedmineFixture fixture)
  30. {
  31. this.fixture = fixture;
  32. }
  33. private readonly RedmineFixture fixture;
  34. private const string PROJECT_ID = "redmine-net-api-project-test";
  35. private const string WIKI_PAGE_NAME = "Wiki";
  36. [Fact, Order(1)]
  37. public void Should_Add_WikiPage()
  38. {
  39. const string WIKI_PAGE_TEXT = "Create wiki page";
  40. const string WIKI_PAGE_COMMENT = "I did it through code";
  41. var page = fixture.RedmineManager.CreateWikiPage(PROJECT_ID, "Wiki test page name",
  42. new WikiPage { Text = WIKI_PAGE_TEXT, Comments = WIKI_PAGE_COMMENT });
  43. Assert.NotNull(page);
  44. Assert.True(page.Title.Equals("Wiki test page name"), "Wiki page name is invalid.");
  45. Assert.True(page.Text.Equals(WIKI_PAGE_TEXT), "Wiki page text is invalid.");
  46. Assert.True(page.Comments.Equals(WIKI_PAGE_COMMENT), "Wiki page comments are invalid.");
  47. }
  48. [Fact, Order(2)]
  49. public void Should_Update_WikiPage()
  50. {
  51. const string WIKI_PAGE_UPDATED_TEXT = "Updated again and again wiki page and again";
  52. const string WIKI_PAGE_COMMENT = "I did it through code";
  53. fixture.RedmineManager.UpdateWikiPage(PROJECT_ID, "Wiki test page name",
  54. new WikiPage { Text = WIKI_PAGE_UPDATED_TEXT, Comments = WIKI_PAGE_COMMENT });
  55. }
  56. [Fact, Order(99)]
  57. public void Should_Delete_Wiki_Page()
  58. {
  59. fixture.RedmineManager.DeleteWikiPage(PROJECT_ID, WIKI_PAGE_NAME);
  60. Assert.Throws<NotFoundException>(() => fixture.RedmineManager.GetWikiPage(PROJECT_ID, null, WIKI_PAGE_NAME));
  61. }
  62. [Fact, Order(2)]
  63. public void Should_Get_All_Wiki_Pages_By_Project_Id()
  64. {
  65. const int NUMBER_OF_WIKI_PAGES = 2;
  66. var pages = fixture.RedmineManager.GetAllWikiPages(PROJECT_ID);
  67. Assert.NotNull(pages);
  68. Assert.True(pages.Count == NUMBER_OF_WIKI_PAGES, "Wiki pages count != " + NUMBER_OF_WIKI_PAGES);
  69. Assert.True(pages.Exists(p => p.Title == WIKI_PAGE_NAME), $"Wiki page {WIKI_PAGE_NAME} does not exist");
  70. }
  71. [Fact, Order(3)]
  72. public void Should_Get_Wiki_Page_By_Title()
  73. {
  74. const string WIKI_PAGE_TITLE = "Wiki2";
  75. var page = fixture.RedmineManager.GetWikiPage(PROJECT_ID, null, WIKI_PAGE_TITLE);
  76. Assert.NotNull(page);
  77. Assert.True(page.Title.Equals(WIKI_PAGE_TITLE), "Wiki page title is invalid.");
  78. }
  79. [Fact, Order(4)]
  80. public void Should_Get_Wiki_Page_By_Title_With_Attachments()
  81. {
  82. var page = fixture.RedmineManager.GetWikiPage(PROJECT_ID,
  83. new NameValueCollection { { RedmineKeys.INCLUDE, RedmineKeys.ATTACHMENTS } }, WIKI_PAGE_NAME);
  84. Assert.NotNull(page);
  85. Assert.Equal(page.Title, WIKI_PAGE_NAME);
  86. Assert.NotNull(page.Attachments.ToList());
  87. }
  88. [Fact, Order(5)]
  89. public void Should_Get_Wiki_Page_By_Version()
  90. {
  91. const int WIKI_PAGE_VERSION = 1;
  92. var oldPage = fixture.RedmineManager.GetWikiPage(PROJECT_ID, null, WIKI_PAGE_NAME, WIKI_PAGE_VERSION);
  93. Assert.NotNull(oldPage);
  94. Assert.Equal(oldPage.Title, WIKI_PAGE_NAME);
  95. Assert.True(oldPage.Version == WIKI_PAGE_VERSION, "Wiki page version is invalid.");
  96. }
  97. [Fact, Order(6)]
  98. public void Should_Get_Wiki_Page_With_Special_Chars()
  99. {
  100. var wikiPageName = "some-page-with-umlauts-and-other-special-chars-äöüÄÖÜß";
  101. var wikiPage = fixture.RedmineManager.CreateWikiPage(PROJECT_ID, wikiPageName,
  102. new WikiPage { Text = "WIKI_PAGE_TEXT", Comments = "WIKI_PAGE_COMMENT" });
  103. WikiPage page = fixture.RedmineManager.GetWikiPage
  104. (
  105. PROJECT_ID,
  106. null,
  107. wikiPageName
  108. );
  109. Assert.NotNull(page);
  110. Assert.True(string.Equals(page.Title,wikiPageName, StringComparison.OrdinalIgnoreCase),$"Wiki page {wikiPageName} does not exist.");
  111. }
  112. }
  113. }