Bug 1264696 - [rep tests] Add tests for string rep. r=Honza draft
authorLin Clark <lclark@mozilla.com>
Thu, 23 Jun 2016 17:48:34 -0400
changeset 384512 5ca75430e7a9bc06b50b6f1759c9575338bcbb4a
parent 384244 a4ba9cb5ea0ec033f29073e5218785e25c3c743c
child 524718 a713da4d5acf792fdfa985a117d6ca6f58b271d2
push id22286
push userbmo:lclark@mozilla.com
push dateWed, 06 Jul 2016 13:09:33 +0000
reviewersHonza
bugs1264696
milestone50.0a1
Bug 1264696 - [rep tests] Add tests for string rep. r=Honza MozReview-Commit-ID: BK44BgMhqPN
devtools/client/shared/components/reps/rep-utils.js
devtools/client/shared/components/reps/string.js
devtools/client/shared/components/test/mochitest/chrome.ini
devtools/client/shared/components/test/mochitest/test_reps_string.html
--- a/devtools/client/shared/components/reps/rep-utils.js
+++ b/devtools/client/shared/components/reps/rep-utils.js
@@ -26,17 +26,16 @@ define(function (require, exports, modul
 
   /**
    * Returns true if the given object is a grip (see RDP protocol)
    */
   function isGrip(object) {
     return object && object.actor;
   }
 
-
   function escapeNewLines(value) {
     return value.replace(/\r/gm, "\\r").replace(/\n/gm, "\\n");
   }
 
   function cropMultipleLines(text, limit) {
     return escapeNewLines(cropString(text, limit));
   }
 
--- a/devtools/client/shared/components/reps/string.js
+++ b/devtools/client/shared/components/reps/string.js
@@ -33,18 +33,16 @@ define(function (require, exports, modul
       return (
         ObjectBox({className: "string"},
           "\"" + cropMultipleLines(text) + "\""
         )
       );
     },
   });
 
-  // Helpers
-
   function supportsObject(object, type) {
     return (type == "string");
   }
 
   // Exports from this module
 
   exports.StringRep = {
     rep: StringRep,
--- a/devtools/client/shared/components/test/mochitest/chrome.ini
+++ b/devtools/client/shared/components/test/mochitest/chrome.ini
@@ -8,16 +8,17 @@ support-files =
 [test_notification_box_03.html]
 [test_reps_attribute.html]
 [test_reps_date-time.html]
 [test_reps_function.html]
 [test_reps_grip.html]
 [test_reps_null.html]
 [test_reps_object-with-text.html]
 [test_reps_object-with-url.html]
+[test_reps_string.html]
 [test_reps_stylesheet.html]
 [test_reps_undefined.html]
 [test_reps_window.html]
 [test_frame_01.html]
 [test_tree_01.html]
 [test_tree_02.html]
 [test_tree_03.html]
 [test_tree_04.html]
new file mode 100644
--- /dev/null
+++ b/devtools/client/shared/components/test/mochitest/test_reps_string.html
@@ -0,0 +1,55 @@
+
+<!DOCTYPE HTML>
+<html>
+<!--
+Test String rep
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Rep test - String</title>
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
+</head>
+<body>
+<pre id="test">
+<script src="head.js" type="application/javascript;version=1.8"></script>
+<script type="application/javascript;version=1.8">
+window.onload = Task.async(function* () {
+  let { Rep } = browserRequire("devtools/client/shared/components/reps/rep");
+  let { StringRep } = browserRequire("devtools/client/shared/components/reps/string");
+
+  try {
+    // Test that correct rep is chosen
+    const renderedRep = shallowRenderComponent(Rep, { object: getGripStub("testMultiline") });
+    is(renderedRep.type, StringRep.rep, `Rep correctly selects ${StringRep.rep.displayName}`);
+
+    // Test rendering
+    yield testMultiline();
+    yield testMultilineOpen();
+  } catch(e) {
+    ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e));
+  } finally {
+    SimpleTest.finish();
+  }
+
+  function testMultiline() {
+    const renderedComponent = renderComponent(StringRep.rep, { object: getGripStub("testMultiline") });
+    is(renderedComponent.textContent, "\"aaaaaaaaaaaaaaaaaaaaa\\nbbb…bbbbbb\\ncccccccccccccccc\\n\"", "String rep has expected text content for multiline string");
+  }
+
+  function testMultilineOpen() {
+    const renderedComponent = renderComponent(StringRep.rep, { object: getGripStub("testMultiline"), member: {open: true} });
+    is(renderedComponent.textContent, "\"aaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbb\ncccccccccccccccc\n\"", "String rep has expected text content for multiline string when open");
+  }
+
+  function getGripStub(name) {
+    switch (name) {
+      case "testMultiline":
+        return "aaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbb\ncccccccccccccccc\n";
+    }
+  }
+});
+</script>
+</pre>
+</body>
+</html>