1 describe("/admin/reprocess-report", function () {
4 "buildTime": "2013-02-28T10:12:03",
5 "builderName": "someBuilder",
6 "builderPassword": "somePassword",
7 "platform": "Mountain Lion",
10 "metrics": {"FrameRate": { "current": [[1, 2, 3], [4, 5, 6]] }}
15 function addBuilder(report, callback) {
16 queryAndFetchAll('INSERT INTO builders (builder_name, builder_password_hash) values ($1, $2)',
17 [report[0].builderName, sha256(report[0].builderPassword)], callback);
20 it("should add build", function () {
21 addBuilder(simpleReport, function () {
22 postJSON('/api/report/', simpleReport, function (response) {
23 assert.equal(response.statusCode, 200);
24 assert.equal(JSON.parse(response.responseText)['status'], 'OK');
25 queryAndFetchAll('SELECT * FROM builds', [], function (buildRows) {
26 assert.equal(buildRows.length, 1);
27 assert.equal(buildRows[0]['build_number'], 1986);
28 queryAndFetchAll('SELECT * FROM reports', [], function (reportRows) {
29 assert.equal(reportRows.length, 1);
30 assert.equal(reportRows[0]['report_build_number'], 1986);
31 queryAndFetchAll('DELETE FROM builds; SELECT * FROM builds', [], function (buildRows) {
32 assert.equal(buildRows.length, 0);
33 var reportId = reportRows[0]['report_id'];
34 httpGet('/admin/reprocess-report?report=' + reportId, function (response) {
35 assert.equal(response.statusCode, 200);
36 assert.equal(JSON.parse(response.responseText)['status'], 'OK');
37 queryAndFetchAll('SELECT * FROM builds', [], function (buildRows) {
38 assert.equal(buildRows.length, 1);
39 assert.equal(buildRows[0]['build_number'], 1986);
50 it("should not duplicate the reprocessed report", function () {
51 addBuilder(simpleReport, function () {
52 postJSON('/api/report/', simpleReport, function (response) {
53 assert.equal(response.statusCode, 200);
54 assert.equal(JSON.parse(response.responseText)['status'], 'OK');
55 queryAndFetchAll('SELECT * FROM reports', [], function (originalReprotRows) {
56 assert.equal(originalReprotRows.length, 1);
57 queryAndFetchAll('DELETE FROM builds', [], function () {
58 httpGet('/admin/reprocess-report?report=' + originalReprotRows[0]['report_id'], function (response) {
59 assert.equal(response.statusCode, 200);
60 assert.equal(JSON.parse(response.responseText)['status'], 'OK');
61 queryAndFetchAll('SELECT * FROM reports', [], function (reportRows) {
62 originalReprotRows[0]['report_committed_at'] = null;
63 reportRows[0]['report_committed_at'] = null;
64 assert.deepEqual(reportRows, originalReprotRows);