<!DOCTYPE html>
<html>

<head>
  <title>fuzzer-details-sk demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="/res/js/fuzzer.js"></script>
  <script src="/res/common/js/common.js"></script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="/res/imp/sinon-1.17.2.js"></script>

  <!-- Makes a var called data-->
  <script type="text/javascript" src="fuzzer-info-sk-demo.json"></script>
  <script type="text/javascript" charset="utf-8">
    // sinon.format = function(object) {return JSON.stringify(object);}
    // sinon.log = function(message) {console.log(message);};

    var server = sinon.fakeServer.create();
    server.autoRespond = true;

    server.respondWith("GET", "/json/details?category=skpicture&file=&func=&line=&name=&badOrGrey=bad",JSON.stringify(data));

    var revisionStatus = {
      "lastUpdated": "2016-06-28T15:45:54-07:00",
      "current":{
        "hash": "deadbeef",
        "author": "youdontknow (John Snow)"
      },
      "pending": {
        "hash": "1234567890abcdef",
        "author": "winteriscoming (Ned Stark)"
      }
    };
    server.respondWith("GET","/json/status", JSON.stringify(revisionStatus));

    var login = {"Email":"test@google.com","LoginURL":"http://www.example.com","IsAGoogler":true};
    server.respondWith("GET","/loginstatus/", JSON.stringify(login));

    var version = {"commit":"3e0fcf9b99baf4256851a6767bc6955266fc2369","date":"2016-02-19T13:57:18-05:00"};
    server.respondWith("GET","/json/version", JSON.stringify(version));
  </script>

  <link rel="import" href="fuzzer-details-sk.html">

</head>

<body>
<fuzzer-details-sk
  category="skpicture">

</fuzzer-details-sk>
</body>

</html>
