/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeAllowedSpecificationFixture .cs

https://github.com/NzbDrone/NzbDrone · C# · 292 lines · 280 code · 12 blank · 0 comment · 0 complexity · ce277756b8fede7741a3ee5129c282c4 MD5 · raw file

  1. using FluentAssertions;
  2. using NUnit.Framework;
  3. using NzbDrone.Core.Profiles.Qualities;
  4. using NzbDrone.Core.Qualities;
  5. using NzbDrone.Core.DecisionEngine.Specifications;
  6. using NzbDrone.Core.Test.Framework;
  7. using NzbDrone.Core.Languages;
  8. using NzbDrone.Core.Profiles.Languages;
  9. using NzbDrone.Core.Test.Languages;
  10. namespace NzbDrone.Core.Test.DecisionEngineTests
  11. {
  12. [TestFixture]
  13. public class UpgradeAllowedSpecificationFixture : CoreTest<UpgradableSpecification>
  14. {
  15. [Test]
  16. public void should_return_false_when_quality_are_the_same_language_is_better_and_upgrade_allowed_is_false_for_language_profile()
  17. {
  18. Subject.IsUpgradeAllowed(
  19. new QualityProfile
  20. {
  21. Cutoff = Quality.Bluray1080p.Id,
  22. Items = Qualities.QualityFixture.GetDefaultQualities(),
  23. UpgradeAllowed = true
  24. },
  25. new LanguageProfile
  26. {
  27. Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French),
  28. Cutoff = Language.French,
  29. UpgradeAllowed = false
  30. },
  31. new QualityModel(Quality.DVD),
  32. Language.English,
  33. new QualityModel(Quality.DVD),
  34. Language.French
  35. ).Should().BeFalse();
  36. }
  37. [Test]
  38. public void should_return_false_when_quality_is_better_languages_are_the_same_and_upgrade_allowed_is_false_for_quality_profile()
  39. {
  40. Subject.IsUpgradeAllowed(
  41. new QualityProfile
  42. {
  43. Cutoff = Quality.Bluray1080p.Id,
  44. Items = Qualities.QualityFixture.GetDefaultQualities(),
  45. UpgradeAllowed = false
  46. },
  47. new LanguageProfile
  48. {
  49. Languages = LanguageFixture.GetDefaultLanguages(Language.English),
  50. Cutoff = Language.English,
  51. UpgradeAllowed = true
  52. },
  53. new QualityModel(Quality.DVD),
  54. Language.English,
  55. new QualityModel(Quality.Bluray1080p),
  56. Language.English
  57. ).Should().BeFalse();
  58. }
  59. [Test]
  60. public void should_return_true_for_language_upgrade_when_upgrading_is_allowed()
  61. {
  62. Subject.IsUpgradeAllowed(
  63. new QualityProfile
  64. {
  65. Cutoff = Quality.Bluray1080p.Id,
  66. Items = Qualities.QualityFixture.GetDefaultQualities(),
  67. UpgradeAllowed = true
  68. },
  69. new LanguageProfile
  70. {
  71. Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French),
  72. Cutoff = Language.French,
  73. UpgradeAllowed = true
  74. },
  75. new QualityModel(Quality.DVD),
  76. Language.English,
  77. new QualityModel(Quality.DVD),
  78. Language.French
  79. ).Should().BeTrue();
  80. }
  81. [Test]
  82. public void should_return_true_for_same_language_when_upgrading_is_allowed()
  83. {
  84. Subject.IsUpgradeAllowed(
  85. new QualityProfile
  86. {
  87. Cutoff = Quality.Bluray1080p.Id,
  88. Items = Qualities.QualityFixture.GetDefaultQualities(),
  89. UpgradeAllowed = true
  90. },
  91. new LanguageProfile
  92. {
  93. Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French),
  94. Cutoff = Language.French,
  95. UpgradeAllowed = true
  96. },
  97. new QualityModel(Quality.DVD),
  98. Language.English,
  99. new QualityModel(Quality.DVD),
  100. Language.English
  101. ).Should().BeTrue();
  102. }
  103. [Test]
  104. public void should_return_true_for_same_language_when_upgrading_is_not_allowed()
  105. {
  106. Subject.IsUpgradeAllowed(
  107. new QualityProfile
  108. {
  109. Cutoff = Quality.Bluray1080p.Id,
  110. Items = Qualities.QualityFixture.GetDefaultQualities(),
  111. UpgradeAllowed = true
  112. },
  113. new LanguageProfile
  114. {
  115. Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French),
  116. Cutoff = Language.French,
  117. UpgradeAllowed = false
  118. },
  119. new QualityModel(Quality.DVD),
  120. Language.English,
  121. new QualityModel(Quality.DVD),
  122. Language.English
  123. ).Should().BeTrue();
  124. }
  125. [Test]
  126. public void should_return_true_for_lower_language_when_upgrading_is_allowed()
  127. {
  128. Subject.IsUpgradeAllowed(
  129. new QualityProfile
  130. {
  131. Cutoff = Quality.Bluray1080p.Id,
  132. Items = Qualities.QualityFixture.GetDefaultQualities(),
  133. UpgradeAllowed = true
  134. },
  135. new LanguageProfile
  136. {
  137. Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French),
  138. Cutoff = Language.French,
  139. UpgradeAllowed = true
  140. },
  141. new QualityModel(Quality.DVD),
  142. Language.French,
  143. new QualityModel(Quality.DVD),
  144. Language.English
  145. ).Should().BeTrue();
  146. }
  147. [Test]
  148. public void should_return_true_for_lower_language_when_upgrading_is_not_allowed()
  149. {
  150. Subject.IsUpgradeAllowed(
  151. new QualityProfile
  152. {
  153. Cutoff = Quality.Bluray1080p.Id,
  154. Items = Qualities.QualityFixture.GetDefaultQualities(),
  155. UpgradeAllowed = true
  156. },
  157. new LanguageProfile
  158. {
  159. Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French),
  160. Cutoff = Language.French,
  161. UpgradeAllowed = false
  162. },
  163. new QualityModel(Quality.DVD),
  164. Language.French,
  165. new QualityModel(Quality.DVD),
  166. Language.English
  167. ).Should().BeTrue();
  168. }
  169. [Test]
  170. public void should_return_true_for_quality_upgrade_when_upgrading_is_allowed()
  171. {
  172. Subject.IsUpgradeAllowed(
  173. new QualityProfile
  174. {
  175. Cutoff = Quality.Bluray1080p.Id,
  176. Items = Qualities.QualityFixture.GetDefaultQualities(),
  177. UpgradeAllowed = true
  178. },
  179. new LanguageProfile
  180. {
  181. Languages = LanguageFixture.GetDefaultLanguages(Language.English),
  182. Cutoff = Language.English,
  183. UpgradeAllowed = true
  184. },
  185. new QualityModel(Quality.DVD),
  186. Language.English,
  187. new QualityModel(Quality.Bluray1080p),
  188. Language.English
  189. ).Should().BeTrue();
  190. }
  191. [Test]
  192. public void should_return_true_for_same_quality_when_upgrading_is_allowed()
  193. {
  194. Subject.IsUpgradeAllowed(
  195. new QualityProfile
  196. {
  197. Cutoff = Quality.Bluray1080p.Id,
  198. Items = Qualities.QualityFixture.GetDefaultQualities(),
  199. UpgradeAllowed = true
  200. },
  201. new LanguageProfile
  202. {
  203. Languages = LanguageFixture.GetDefaultLanguages(Language.English),
  204. Cutoff = Language.English,
  205. UpgradeAllowed = true
  206. },
  207. new QualityModel(Quality.DVD),
  208. Language.English,
  209. new QualityModel(Quality.DVD),
  210. Language.English
  211. ).Should().BeTrue();
  212. }
  213. [Test]
  214. public void should_return_true_for_same_quality_when_upgrading_is_not_allowed()
  215. {
  216. Subject.IsUpgradeAllowed(
  217. new QualityProfile
  218. {
  219. Cutoff = Quality.Bluray1080p.Id,
  220. Items = Qualities.QualityFixture.GetDefaultQualities(),
  221. UpgradeAllowed = false
  222. },
  223. new LanguageProfile
  224. {
  225. Languages = LanguageFixture.GetDefaultLanguages(Language.English),
  226. Cutoff = Language.English,
  227. UpgradeAllowed = true
  228. },
  229. new QualityModel(Quality.DVD),
  230. Language.English,
  231. new QualityModel(Quality.DVD),
  232. Language.English
  233. ).Should().BeTrue();
  234. }
  235. [Test]
  236. public void should_return_true_for_lower_quality_when_upgrading_is_allowed()
  237. {
  238. Subject.IsUpgradeAllowed(
  239. new QualityProfile
  240. {
  241. Cutoff = Quality.Bluray1080p.Id,
  242. Items = Qualities.QualityFixture.GetDefaultQualities(),
  243. UpgradeAllowed = true
  244. },
  245. new LanguageProfile
  246. {
  247. Languages = LanguageFixture.GetDefaultLanguages(Language.English),
  248. Cutoff = Language.English,
  249. UpgradeAllowed = true
  250. },
  251. new QualityModel(Quality.DVD),
  252. Language.English,
  253. new QualityModel(Quality.SDTV),
  254. Language.English
  255. ).Should().BeTrue();
  256. }
  257. [Test]
  258. public void should_return_true_for_lower_quality_when_upgrading_is_not_allowed()
  259. {
  260. Subject.IsUpgradeAllowed(
  261. new QualityProfile
  262. {
  263. Cutoff = Quality.Bluray1080p.Id,
  264. Items = Qualities.QualityFixture.GetDefaultQualities(),
  265. UpgradeAllowed = false
  266. },
  267. new LanguageProfile
  268. {
  269. Languages = LanguageFixture.GetDefaultLanguages(Language.English),
  270. Cutoff = Language.English,
  271. UpgradeAllowed = true
  272. },
  273. new QualityModel(Quality.DVD),
  274. Language.English,
  275. new QualityModel(Quality.SDTV),
  276. Language.English
  277. ).Should().BeTrue();
  278. }
  279. }
  280. }