jinaga
Version:
Data management for web and mobile applications.
126 lines (119 loc) • 4.13 kB
text/typescript
import { Dehydration, HashMap } from "../../src/fact/hydrate";
describe("Known hash", () => {
it("String field", () => {
const hash = hashOf({
type: "Skylane.Airline",
identifier: "value"
});
expect(hash).toEqual("uXcsBceLFAkZdRD71Ztvc+QwASayHA0Zg7wC2mc3zl28N1hKTbGBfBA2OnEHAWo+0yYVeUnABMn9MCRH8cRHWg==");
});
it("Predecessor", () => {
const hash = hashOf({
type: "Skylane.Airline.Day",
airline: {
type: "Skylane.Airline",
identifier: "value"
},
date: "2021-07-04T00:00:00.000Z"
});
expect(hash).toEqual("cQaErYsizavFrTIGjD1C0g3shMG/uq+hVUXzs/kCzcvev9gPrVDom3pbrszUsmeRelNv8bRdIvOb6AbaYrVC7w==");
});
it("Integer field", () => {
const hash = hashOf({
type: "Skylane.Flight",
airlineDay: {
type: "Skylane.Airline.Day",
airline: {
type: "Skylane.Airline",
identifier: "value"
},
date: "2021-07-04T00:00:00.000Z"
},
flightNumber: 4247
});
expect(hash).toEqual("PyXT7pCvBq7Vw63kEZGgbIVJxqA7jhoO+QbmeM3YC9laayG0gjln58khyOd4D/cmxXzocPaIuwXGWusVJxqEjQ==");
});
it("Empty predecessor list", () => {
const hash = hashOf({
type: "Skylane.Passenger.Name",
passenger: {
type: "Skylane.Passenger",
airline: {
type: "Skylane.Airline",
identifier: "IA"
},
user: {
type: "Jinaga.User",
publicKey: "---PUBLIC KEY---"
}
},
value: "Charles Rane",
prior: []
});
expect(hash).toEqual("GsMMA/8Nv401P6RXvugFYzYCemGehnXSFZuaKNcoVFoXKmxzMJkpqI9rs/SRlKHZlnRP1QsBxFWKFt6143OpYA==");
});
it("Single predecessor list", () => {
const passenger = {
type: "Skylane.Passenger",
airline: {
type: "Skylane.Airline",
identifier: "IA"
},
user: {
type: "Jinaga.User",
publicKey: "---PUBLIC KEY---"
}
};
const first = <HashMap>{
type: "Skylane.Passenger.Name",
passenger,
value: "Charles Rane",
prior: []
};
const hash = hashOf({
type: "Skylane.Passenger.Name",
passenger,
value: "Charley Rane",
prior: [ first ]
});
expect(hash).toEqual("BYLtR7XddbhchlyBdGdrnRHGkPsDecynDjLHFvqtKH7zug46ymxNDpPC4QNb+T14Bhzs8M1F3VfCnlgzinNHPg==");
});
it("Multiple predecessor list", () => {
const passenger = {
type: "Skylane.Passenger",
airline: {
type: "Skylane.Airline",
identifier: "IA"
},
user: {
type: "Jinaga.User",
publicKey: "---PUBLIC KEY---"
}
};
const first = <HashMap>{
type: "Skylane.Passenger.Name",
passenger,
value: "Charles Rane",
prior: []
};
const middle = [1,2,3,4,5,6,7,8,9,10]
.map(id => ({
type: "Skylane.Passenger.Name",
passenger,
value: `Charley Rane ${id}`,
prior: [ first ]
}));
const hash = hashOf({
type: "Skylane.Passenger.Name",
passenger,
value: "Charley Rane",
prior: middle
});
expect(hash).toEqual("4Os8M2Tt7+lCEe6WQ6iAJwQ/wbmK6CTLqwF8DCS6Bc4tgXE268BanI0sHDeSYhbKYbSDAyRzarMkrciveBoDTQ==");
});
});
function hashOf(fact: HashMap) {
const dehydration = new Dehydration();
const record = dehydration.dehydrate(fact);
return record.hash;
}