blob: ea386ddaaa2505ab4b0f896a0ab3bb5ca2e91361 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { types, Client, QueryResultRow } from 'pg'
import { setAGETypes } from '../src'
const config = {
user: 'postgres',
host: '127.0.0.1',
database: 'postgres',
password: 'agens',
port: 5432
}
const testGraphName = 'age-test'
describe('Pre-connected Connection', () => {
let client: Client | null
beforeAll(async () => {
client = new Client(config)
await client.connect()
await setAGETypes(client, types)
await client.query(`SELECT create_graph('${testGraphName}');`)
})
afterAll(async () => {
await client?.query(`SELECT drop_graph('${testGraphName}', true);`)
await client?.end()
})
it('simple CREATE & MATCH', async () => {
await client?.query(`
SELECT *
from cypher('${testGraphName}', $$ CREATE (a:Part {part_num: '123'}),
(b:Part {part_num: '345'}),
(c:Part {part_num: '456'}),
(d:Part {part_num: '789'})
$$) as (a agtype);
`)
const results: QueryResultRow = await client?.query<QueryResultRow>(`
SELECT *
from cypher('${testGraphName}', $$
MATCH (a) RETURN a
$$) as (a agtype);
`)!
expect(results.rows).toStrictEqual(
[
{
a : new Map(Object.entries({
id: 844424930131969,
label: 'Part',
properties: new Map(Object.entries({
part_num: '123'
}))
})),
},
{
a : new Map(Object.entries({
id: 844424930131970,
label: 'Part',
properties: new Map(Object.entries({
part_num: '345'
}))
})),
},
{
a : new Map(Object.entries({
id: 844424930131971,
label: 'Part',
properties: new Map(Object.entries({
part_num: '456'
}))
})),
},
{
a : new Map(Object.entries({
id: 844424930131972,
label: 'Part',
properties: new Map(Object.entries({
part_num: '789'
}))
})),
}
]
)
})
})