<html>
<head>
  <title>byblame-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="../../node_modules/native-promise-only/npo.js"></script>
  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="bower_components/page/page.js"></script>
  <script src="../common/js/common.js"></script>
  <script src="../js/gold.js"></script>
  <script src="bower_components/sinonjs/sinon.js"></script>

  <script>
    var server = sinon.fakeServer.create();
    server.respondImmediately = true;

    var hashes = [
      "6900641e02c3b6c7ee15d0aa5bd4af0d42db480f",
      "134ad3e5b0979c2fd60dc01717022cac57fd76ec",
      "cecbbe2fa91d116d5c724ed9a1be9b6d82593e13",
      "d9ec32090e95cebc7c1bb7c4fe29bef54629ef2c",
      "6b3cf73af525fdbf6fd093304db840bb998e3dd6"
    ];

    // gold-sk-status response
    server.respondWith("GET", "/json/byblame", function(request) {
     var entries = [];
     var affectedTests;
      for(var i=0; i<20; i++) {
        affectedTests = [];
        if (i < 10) {
          for(var j=0; j <= i; j++) {
            affectedTests.push({
                  test: "Test " + (i*100+j).toString(),
                  num: 1+i,
                  sample_digest: "9430abdcd034503049abdcd039430"
            });
          }
        }

        var commits = [];
        if (i % 2 == 0) {
          for(var k=0; k<hashes.length; k++) {
            commits.push({
              commit_time: new Date().getTime() / 1000 - 3600 + k,
              hash: hashes[k],
              author:"John Doe " + i + "-" + k,
            });
          }
        }

        entries.push({
            groupID: "gdi-000" + (i+1).toString(),
            nDigests: i+1,
            nTests: i*2+1,
            affectedTests: affectedTests,
            commits: commits
        });
      }

      request.respond(200, {"Content-Type":"application/json"},
        JSON.stringify({ data: entries }));
    });

  </script>

  <link rel="import" href="byblame-page-sk.html">

</head>
<body>
  <byblame-page-sk></byblame-page-sk>
    <script type="text/javascript" charset="utf-8">
      var ctx = new page.Context(window.location.pathname);
      $$$('byblame-page-sk').pageSelected(ctx);
    </script>
</body>
</html>
