/Trakter.Tests/Providers/RateProviderTests.cs

https://github.com/markus101/Trakter · C# · 210 lines · 162 code · 30 blank · 18 comment · 6 complexity · 8d781fc42c8581e66048a7c70f25587c MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using AutoMoq;
  7. using FluentAssertions;
  8. using Moq;
  9. using NUnit.Framework;
  10. using Trakter.Models;
  11. using Trakter.Models.Rate;
  12. using Trakter.Providers;
  13. using Trakter.Tests.Framework;
  14. namespace Trakter.Tests.Providers
  15. {
  16. [TestFixture]
  17. public class RateProviderTests
  18. {
  19. [Test]
  20. public void RateEpsiode_should_return_RateResult_on_success()
  21. {
  22. //Setup
  23. var expectedJson = "{\"username\": \"username\",\"password\": \"sha1hash\",\"tvdb_id\": 213221,\"title\": \"Portlandia\",\"year\": 2011,\"season\": 1,\"episode\": 1,\"rating\": \"love\"}";
  24. var jsonResult = "{\"status\":\"success\",\"message\":\"rated Portlandia 1x01\",\"type\":\"episode\",\"rating\":\"love\",\"ratings\":{\"percentage\":100,\"votes\":2,\"loved\":2,\"hated\":0},\"facebook\":true,\"twitter\":true,\"tumblr\":false}";
  25. var episode = new RateEpisode
  26. {
  27. Username = "username",
  28. Password = "sha1hash",
  29. TvdbId = 213221,
  30. Title = "Portlandia",
  31. Year = 2011,
  32. Season = 1,
  33. Episode = 1,
  34. Rating = RatingType.Love
  35. };
  36. var mocker = new AutoMoqer();
  37. mocker.GetMock<HttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>(), It.Is<string>(e => e.Replace(" ", "").Replace("\r\n", "").Replace("\t", "") == expectedJson.Replace(" ", "")))).Returns(jsonResult);
  38. //Act
  39. var result = mocker.Resolve<RateProvider>().Episode(Constants.ApiKey, episode);
  40. //Assert
  41. result.Should().NotBeNull();
  42. result.Status.Should().Be(ResultStatusType.Success);
  43. result.Rating.Should().Be(RatingType.Love);
  44. result.Facebook.Should().BeTrue();
  45. result.Type.Should().Be(TraktType.Episode);
  46. }
  47. [Test]
  48. public void RateEpsiode_unrate_should_return_RateResult_on_success()
  49. {
  50. //Setup
  51. var expectedJson = "{\"username\": \"username\",\"password\": \"sha1hash\",\"tvdb_id\": 213221,\"title\": \"Portlandia\",\"year\": 2011,\"season\": 1,\"episode\": 1,\"rating\": \"unrate\"}";
  52. var jsonResult = "{\"status\":\"success\",\"message\":\"rated Portlandia 1x01\",\"type\":\"episode\",\"rating\":\"unrate\",\"ratings\":{\"percentage\":100,\"votes\":2,\"loved\":2,\"hated\":0},\"facebook\":true,\"twitter\":true,\"tumblr\":false}";
  53. var episode = new RateEpisode
  54. {
  55. Username = "username",
  56. Password = "sha1hash",
  57. TvdbId = 213221,
  58. Title = "Portlandia",
  59. Year = 2011,
  60. Season = 1,
  61. Episode = 1,
  62. Rating = RatingType.Unrate
  63. };
  64. var mocker = new AutoMoqer();
  65. mocker.GetMock<HttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>(), It.Is<string>(e => e.Replace(" ", "").Replace("\r\n", "").Replace("\t", "") == expectedJson.Replace(" ", "")))).Returns(jsonResult);
  66. //Act
  67. var result = mocker.Resolve<RateProvider>().Episode(Constants.ApiKey, episode);
  68. //Assert
  69. result.Should().NotBeNull();
  70. result.Status.Should().Be(ResultStatusType.Success);
  71. result.Rating.Should().Be(RatingType.Unrate);
  72. result.Facebook.Should().BeTrue();
  73. result.Type.Should().Be(TraktType.Episode);
  74. }
  75. [Test]
  76. public void RateMovie_should_return_RateResult_on_success()
  77. {
  78. //Setup
  79. var expectedJson = "{\"username\": \"username\",\"password\": \"sha1hash\",\"imdb_id\": \"tt0082971\",\"title\": \"Indiana Jones and the Raiders of the Lost Ark\",\"year\": 1981,\"rating\": \"hate\"}";
  80. var jsonResult = "{\"status\":\"success\",\"message\":\"rated Indiana Jones and the Raiders of the Lost Ark (1981)\",\"type\":\"movie\",\"rating\":\"hate\",\"ratings\":{\"percentage\":100,\"votes\":15,\"loved\":15,\"hated\":0},\"facebook\":true,\"twitter\":true,\"tumblr\":false}";
  81. var movie = new RateMovie
  82. {
  83. Username = "username",
  84. Password = "sha1hash",
  85. ImdbId = "tt0082971",
  86. Title = "Indiana Jones and the Raiders of the Lost Ark",
  87. Year = 1981,
  88. Rating = RatingType.Hate
  89. };
  90. var mocker = new AutoMoqer();
  91. mocker.GetMock<HttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>(), It.Is<string>(e => e.Replace(" ", "").Replace("\r\n", "").Replace("\t", "") == expectedJson.Replace(" ", "")))).Returns(jsonResult);
  92. //Act
  93. var result = mocker.Resolve<RateProvider>().Movie(Constants.ApiKey, movie);
  94. //Assert
  95. result.Should().NotBeNull();
  96. result.Status.Should().Be(ResultStatusType.Success);
  97. result.Rating.Should().Be(RatingType.Hate);
  98. result.Facebook.Should().BeTrue();
  99. result.Type.Should().Be(TraktType.Movie);
  100. }
  101. [Test]
  102. public void RateMovie_unrate_should_return_RateResult_on_success()
  103. {
  104. //Setup
  105. var expectedJson = "{\"username\": \"username\",\"password\": \"sha1hash\",\"imdb_id\": \"tt0082971\",\"title\": \"Indiana Jones and the Raiders of the Lost Ark\",\"year\": 1981,\"rating\": \"unrate\"}";
  106. var jsonResult = "{\"status\":\"success\",\"message\":\"rated Indiana Jones and the Raiders of the Lost Ark (1981)\",\"type\":\"movie\",\"rating\":\"unrate\",\"ratings\":{\"percentage\":100,\"votes\":15,\"loved\":15,\"hated\":0},\"facebook\":true,\"twitter\":true,\"tumblr\":false}";
  107. var movie = new RateMovie()
  108. {
  109. Username = "username",
  110. Password = "sha1hash",
  111. ImdbId = "tt0082971",
  112. Title = "Indiana Jones and the Raiders of the Lost Ark",
  113. Year = 1981,
  114. Rating = RatingType.Unrate
  115. };
  116. var mocker = new AutoMoqer();
  117. mocker.GetMock<HttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>(), It.Is<string>(e => e.Replace(" ", "").Replace("\r\n", "").Replace("\t", "") == expectedJson.Replace(" ", "")))).Returns(jsonResult);
  118. //Act
  119. var result = mocker.Resolve<RateProvider>().Movie(Constants.ApiKey, movie);
  120. //Assert
  121. result.Should().NotBeNull();
  122. result.Status.Should().Be(ResultStatusType.Success);
  123. result.Rating.Should().Be(RatingType.Unrate);
  124. result.Facebook.Should().BeTrue();
  125. result.Type.Should().Be(TraktType.Movie);
  126. }
  127. [Test]
  128. public void RateShow_should_return_RateResult_on_success()
  129. {
  130. //Setup
  131. var expectedJson = "{\"username\": \"username\",\"password\": \"sha1hash\",\"tvdb_id\": 213221,\"title\": \"Portlandia\",\"year\": 2011,\"rating\": \"love\"}";
  132. var jsonResult = "{\"status\":\"success\",\"message\":\"rated Portlandia 1x01\",\"type\":\"episode\",\"rating\":\"love\",\"ratings\":{\"percentage\":100,\"votes\":2,\"loved\":2,\"hated\":0},\"facebook\":true,\"twitter\":true,\"tumblr\":false}";
  133. var show = new RateShow
  134. {
  135. Username = "username",
  136. Password = "sha1hash",
  137. TvdbId = 213221,
  138. Title = "Portlandia",
  139. Year = 2011,
  140. Rating = RatingType.Love
  141. };
  142. var mocker = new AutoMoqer();
  143. mocker.GetMock<HttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>(), It.Is<string>(e => e.Replace(" ", "").Replace("\r\n", "").Replace("\t", "") == expectedJson.Replace(" ", "")))).Returns(jsonResult);
  144. //Act
  145. var result = mocker.Resolve<RateProvider>().Show(Constants.ApiKey, show);
  146. //Assert
  147. result.Should().NotBeNull();
  148. result.Status.Should().Be(ResultStatusType.Success);
  149. result.Rating.Should().Be(RatingType.Love);
  150. result.Facebook.Should().BeTrue();
  151. result.Type.Should().Be(TraktType.Episode);
  152. }
  153. [Test]
  154. public void RateShow_unrate_should_return_RateResult_on_success()
  155. {
  156. //Setup
  157. var expectedJson = "{\"username\": \"username\",\"password\": \"sha1hash\",\"tvdb_id\": 213221,\"title\": \"Portlandia\",\"year\": 2011,\"rating\": \"unrate\"}";
  158. var jsonResult = "{\"status\":\"success\",\"message\":\"rated Portlandia 1x01\",\"type\":\"episode\",\"rating\":\"unrate\",\"ratings\":{\"percentage\":100,\"votes\":2,\"loved\":2,\"hated\":0},\"facebook\":true,\"twitter\":true,\"tumblr\":false}";
  159. var show = new RateShow
  160. {
  161. Username = "username",
  162. Password = "sha1hash",
  163. TvdbId = 213221,
  164. Title = "Portlandia",
  165. Year = 2011,
  166. Rating = RatingType.Unrate
  167. };
  168. var mocker = new AutoMoqer();
  169. mocker.GetMock<HttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>(), It.Is<string>(e => e.Replace(" ", "").Replace("\r\n", "").Replace("\t", "") == expectedJson.Replace(" ", "")))).Returns(jsonResult);
  170. //Act
  171. var result = mocker.Resolve<RateProvider>().Show(Constants.ApiKey, show);
  172. //Assert
  173. result.Should().NotBeNull();
  174. result.Status.Should().Be(ResultStatusType.Success);
  175. result.Rating.Should().Be(RatingType.Unrate);
  176. result.Facebook.Should().BeTrue();
  177. result.Type.Should().Be(TraktType.Episode);
  178. }
  179. }
  180. }