/src/FubuMVC.Tests/Assets/Files/AssetPathTester.cs

https://bitbucket.org/krisdages/fubumvc · C# · 182 lines · 158 code · 24 blank · 0 comment · 0 complexity · 2b9f76a4176e1ae644da7a5167ea43bc MD5 · raw file

  1. using FubuMVC.Core.Assets.Files;
  2. using FubuTestingSupport;
  3. using NUnit.Framework;
  4. namespace FubuMVC.Tests.Assets.Files
  5. {
  6. [TestFixture]
  7. public class AssetPathTester
  8. {
  9. [Test]
  10. public void is_image()
  11. {
  12. new AssetPath("images/pict.bmp").IsImage().ShouldBeTrue();
  13. new AssetPath("images/pict.jpg").IsImage().ShouldBeTrue();
  14. new AssetPath("images/pict.jpeg").IsImage().ShouldBeTrue();
  15. new AssetPath("images/pict.gif").IsImage().ShouldBeTrue();
  16. new AssetPath("images/pict.png").IsImage().ShouldBeTrue();
  17. new AssetPath("styles/pict.png").IsImage().ShouldBeTrue();
  18. new AssetPath("images/pict.unk").IsImage().ShouldBeTrue(); // Use the folder as is
  19. new AssetPath("styles/pict.unk").IsImage().ShouldBeFalse(); // Use the folder as is
  20. new AssetPath("images/pict.js").IsImage().ShouldBeFalse();
  21. new AssetPath("images/pict.css").IsImage().ShouldBeFalse();
  22. }
  23. [Test]
  24. public void to_full_name_with_only_a_name()
  25. {
  26. new AssetPath("file.txt").ToFullName().ShouldEqual("file.txt");
  27. }
  28. [Test]
  29. public void to_full_name_when_the_mime_type_can_be_inferred()
  30. {
  31. new AssetPath("scripts/script1.js").ToFullName().ShouldEqual("scripts/script1.js");
  32. }
  33. [Test]
  34. public void to_full_name_with_a_package()
  35. {
  36. new AssetPath("pak1", "script1.js", AssetFolder.scripts)
  37. .ToFullName().ShouldEqual("pak1:scripts/script1.js");
  38. }
  39. [Test]
  40. public void to_full_name_with_a_package_and_nested_structure()
  41. {
  42. new AssetPath("pak1", "f1/f2/script1.js", AssetFolder.scripts)
  43. .ToFullName().ShouldEqual("pak1:scripts/f1/f2/script1.js");
  44. }
  45. [Test]
  46. public void mangled_path_throws_exception()
  47. {
  48. Exception<AssetPathException>.ShouldBeThrownBy(() =>
  49. {
  50. new AssetPath("pak1:pak2:jquery.js");
  51. });
  52. }
  53. [Test]
  54. public void simple_path_with_no_package_or_type()
  55. {
  56. var path = new AssetPath("jquery.js");
  57. path.Folder.ShouldBeNull();
  58. path.Name.ShouldEqual("jquery.js");
  59. path.Package.ShouldBeNull();
  60. }
  61. [Test]
  62. public void path_with_type_specified_but_no_package()
  63. {
  64. var path = new AssetPath("scripts/jquery.js");
  65. path.Folder.ShouldEqual(AssetFolder.scripts);
  66. path.Name.ShouldEqual("jquery.js");
  67. path.Package.ShouldBeNull();
  68. }
  69. [Test]
  70. public void path_with_package_and_type_specified()
  71. {
  72. var path = new AssetPath("pak1:scripts/jquery.js");
  73. path.Folder.ShouldEqual(AssetFolder.scripts);
  74. path.Name.ShouldEqual("jquery.js");
  75. path.Package.ShouldEqual("pak1");
  76. }
  77. [Test]
  78. public void path_with_package_and_type_specified_by_enumerable()
  79. {
  80. var path = new AssetPath(new []{"pak1:scripts", "jquery.js"});
  81. path.Folder.ShouldEqual(AssetFolder.scripts);
  82. path.Name.ShouldEqual("jquery.js");
  83. path.Package.ShouldEqual("pak1");
  84. }
  85. [Test]
  86. public void path_with_package_but_no_type_specified()
  87. {
  88. var path = new AssetPath("pak1:jquery.js");
  89. path.Folder.ShouldBeNull();
  90. path.Name.ShouldEqual("jquery.js");
  91. path.Package.ShouldEqual("pak1");
  92. }
  93. [Test]
  94. public void deep_path()
  95. {
  96. var path = new AssetPath("folder/jquery.js");
  97. path.Folder.ShouldBeNull();
  98. path.Name.ShouldEqual("folder/jquery.js");
  99. path.Package.ShouldBeNull();
  100. }
  101. [Test]
  102. public void deep_path_by_enumerable()
  103. {
  104. var path = new AssetPath(new []{"folder","jquery.js"});
  105. path.Folder.ShouldBeNull();
  106. path.Name.ShouldEqual("folder/jquery.js");
  107. path.Package.ShouldBeNull();
  108. }
  109. [Test]
  110. public void deep_path_with_type()
  111. {
  112. var path = new AssetPath("scripts/folder/jquery.js");
  113. path.Folder.ShouldEqual(AssetFolder.scripts);
  114. path.Name.ShouldEqual("folder/jquery.js");
  115. path.Package.ShouldBeNull();
  116. }
  117. [Test]
  118. public void deep_path_with_type_by_enumerable()
  119. {
  120. var path = new AssetPath(new string[]{"scripts","folder","jquery.js"});
  121. path.Folder.ShouldEqual(AssetFolder.scripts);
  122. path.Name.ShouldEqual("folder/jquery.js");
  123. path.Package.ShouldBeNull();
  124. }
  125. [Test]
  126. public void deep_path_with_package()
  127. {
  128. var path = new AssetPath("pak1:folder/jquery.js");
  129. path.Folder.ShouldBeNull();
  130. path.Name.ShouldEqual("folder/jquery.js");
  131. path.Package.ShouldEqual("pak1");
  132. }
  133. [Test]
  134. public void deep_path_with_package_by_enumerable()
  135. {
  136. var path = new AssetPath(new string[]{"pak1:folder", "jquery.js"});
  137. path.Folder.ShouldBeNull();
  138. path.Name.ShouldEqual("folder/jquery.js");
  139. path.Package.ShouldEqual("pak1");
  140. }
  141. [Test]
  142. public void deep_path_with_package_and_type()
  143. {
  144. var path = new AssetPath("pak1:scripts/folder/jquery.js");
  145. path.Folder.ShouldEqual(AssetFolder.scripts);
  146. path.Name.ShouldEqual("folder/jquery.js");
  147. path.Package.ShouldEqual("pak1");
  148. }
  149. [Test]
  150. public void deep_path_with_package_and_type_by_enumerable()
  151. {
  152. var path = new AssetPath(new string[]{"pak1:scripts","folder","jquery.js"});
  153. path.Folder.ShouldEqual(AssetFolder.scripts);
  154. path.Name.ShouldEqual("folder/jquery.js");
  155. path.Package.ShouldEqual("pak1");
  156. }
  157. }
  158. }