Add init script, fix minor issues in tests

main
Chris Vickery 2019-10-10 16:22:07 -07:00
parent 9be4f934d6
commit 4a2e59eea8
5 changed files with 143 additions and 4 deletions

View File

@ -1,8 +1,7 @@
/* eslint-env jest */
import DBC, { swapOrder } from '../../models/can/dbc';
import Signal from '../../models/can/signal';
global.__JEST__ = 1;
const DBC_MESSAGE_DEF = `BO_ 228 STEERING_CONTROL: 5 ADAS
SG_ STEER_TORQUE : 7|16@0- (1,0) [-3840|3840] "" EPS
SG_ STEER_TORQUE_REQUEST : 23|1@0+ (1,0) [0|1] "" EPS

View File

@ -1,3 +1,7 @@
/**
* @jest-environment jsdom
*/
/* eslint-env jest */
import fs from 'fs';
import path from 'path';
import DBC, { swapOrder } from '../../models/can/dbc';

View File

@ -1,10 +1,9 @@
/* eslint-env jest */
import extend from 'xtend';
import DbcUtils from '../../utils/dbc';
import DBC from '../../models/can/dbc';
import Signal from '../../models/can/signal';
global.__JEST__ = 1;
// want to mock pandareader and test processStreamedCanMessages
const SAMPLE_MESSAGE = {
address: 0x10,

129
src/init.js 100644
View File

@ -0,0 +1,129 @@
import React from 'react';
import ReactDOM from 'react-dom';
import CommaAuth from '@commaai/my-comma-auth';
import { request as Request } from '@commaai/comma-api';
import Sentry from './logging/Sentry';
import CanExplorer from './CanExplorer';
import AcuraDbc from './acura-dbc';
import { getUrlParameter, modifyQueryParameters } from './utils/url';
import { GITHUB_AUTH_TOKEN_KEY } from './config';
import {
fetchPersistedDbc,
fetchPersistedGithubAuthToken,
persistGithubAuthToken
} from './api/localstorage';
import './index.css';
export default function init() {
Sentry.init();
const routeFullName = getUrlParameter('route');
const isDemo = !routeFullName;
let segments = getUrlParameter('segments');
if (segments && segments.length) {
segments = segments.split(',').map(Number);
if (segments.length !== 2) {
segments = undefined;
}
}
const props = {
autoplay: true,
startTime: Number(getUrlParameter('seekTime') || 0),
segments,
isDemo
};
let persistedDbc = null;
if (routeFullName) {
const [dongleId, route] = routeFullName.split('|');
props.dongleId = dongleId;
props.name = route;
persistedDbc = fetchPersistedDbc(routeFullName);
const max = getUrlParameter('max');
const url = getUrlParameter('url');
const exp = getUrlParameter('exp');
const sig = getUrlParameter('sig');
if (max) {
props.max = max;
}
if (url) {
props.url = url;
}
if (exp) {
props.exp = exp;
}
if (sig) {
props.sig = sig;
}
props.isLegacyShare = max && url && !exp && !sig;
props.isShare = max && url && exp && sig;
} else if (getUrlParameter('demo')) {
props.max = 12;
props.url = 'https://chffrprivate.blob.core.windows.net/chffrprivate3-permanent/v2/cb38263377b873ee/78392b99580c5920227cc5b43dff8a70_2017-06-12--18-51-47';
props.name = '2017-06-12--18-51-47';
props.dongleId = 'cb38263377b873ee';
props.dbc = AcuraDbc;
props.isDemo = true;
props.dbcFilename = 'acura_ilx_2016_can.dbc';
// lots of 404s on this one
// props.max = 752;
// props.url = 'https://chffrprivate.blob.core.windows.net/chffrprivate3/v2/07e243287e48432a/d97fcc321a58e660a14de72b749269ba_2017-09-09--22-00-00';
// props.name = '2017-09-09--22-00-00';
// props.dongleId = '07e243287e48432a';
// props.dbc = AcuraDbc;
// props.dbcFilename = 'acura_ilx_2016_can.dbc';
// really long one with real content
// props.max = 597;
// props.url = 'https://chffrprivate.blob.core.windows.net/chffrprivate3/v2/0c249898b339e978/957935e6a75bc2bf6f626fcbe6db93ba_2017-08-11--04-47-54';
// props.name = '2017-08-11--04-47-54';
// props.dongleId = '0c249898b339e978';
// props.dbc = AcuraDbc;
// props.dbcFilename = 'acura_ilx_2016_can.dbc';
}
if (persistedDbc) {
const { dbcFilename, dbc } = persistedDbc;
props.dbc = dbc;
props.dbcFilename = dbcFilename;
}
const authTokenQueryParam = getUrlParameter(GITHUB_AUTH_TOKEN_KEY);
if (authTokenQueryParam !== null) {
props.githubAuthToken = authTokenQueryParam;
persistGithubAuthToken(authTokenQueryParam);
const urlNoAuthToken = modifyQueryParameters({
remove: [GITHUB_AUTH_TOKEN_KEY]
});
window.location.href = urlNoAuthToken;
} else {
props.githubAuthToken = fetchPersistedGithubAuthToken();
}
async function renderDom() {
const token = await CommaAuth.init();
if (token) {
Request.configure(token);
}
ReactDOM.render(<CanExplorer {...props} />, document.getElementById('root')); // eslint-disable-line react/jsx-props-no-spreading
}
if (routeFullName || isDemo) {
renderDom();
return;
}
const img = document.createElement('img');
img.src = `${process.env.PUBLIC_URL}/img/cabana.jpg`;
img.style.width = '100%';
const comment = document.createComment('7/6/17');
document.getElementById('root').appendChild(img);
document.getElementById('root').appendChild(comment);
}

8
src/init.test.js 100644
View File

@ -0,0 +1,8 @@
/* eslint-env jest */
import init from './init';
describe('init', () => {
it('works without url params', () => {
init();
});
});