Skip to content

Commit 449e75c

Browse files
committed
Add tests for DB object collection with TS, TSZ and LTZ
1 parent 87a2341 commit 449e75c

File tree

4 files changed

+141
-3
lines changed

4 files changed

+141
-3
lines changed

test/dbObject16.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* 215. dbObject16.js
2020
*
2121
* DESCRIPTION
22-
* Test DB Object collection methods.
22+
* Test DB Object collection with DATE column.
2323
*
2424
*****************************************************************************/
2525
'use strict';

test/dbObject17.js

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
/* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. */
2+
3+
/******************************************************************************
4+
*
5+
* You may not use the identified files except in compliance with the Apache
6+
* License, Version 2.0 (the "License.")
7+
*
8+
* You may obtain a copy of the License at
9+
* http://www.apache.org/licenses/LICENSE-2.0.
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
*
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*
18+
* NAME
19+
* 216. dbObject17.js
20+
*
21+
* DESCRIPTION
22+
* Test DB Object collection with columns TIMESTAMP, TIMESTAMP WITH TIME ZONE
23+
* and TIMESTAMP WITH LOCAL TIME ZONE.
24+
*
25+
*****************************************************************************/
26+
'use strict';
27+
28+
const oracledb = require('oracledb');
29+
const should = require('should');
30+
const dbconfig = require('./dbconfig.js');
31+
const testsUtil = require('./testsUtil.js');
32+
33+
describe('216. dbObject17.js', () => {
34+
35+
let conn;
36+
37+
const TABLE = 'NODB_TAB_SPORTS';
38+
const PLAYER_T = 'NODB_TYP_PLAYER_17';
39+
const TEAM_T = 'NODB_TYP_TEAM_17';
40+
41+
before(async () => {
42+
try {
43+
conn = await oracledb.getConnection(dbconfig);
44+
45+
let plsql =`
46+
CREATE OR REPLACE TYPE ${PLAYER_T} AS OBJECT (
47+
shirtnumber NUMBER,
48+
name VARCHAR2(20),
49+
ts TIMESTAMP,
50+
tsz TIMESTAMP WITH TIME ZONE,
51+
ltz TIMESTAMP WITH LOCAL TIME ZONE
52+
);
53+
`;
54+
await conn.execute(plsql);
55+
56+
plsql =`
57+
CREATE OR REPLACE TYPE ${TEAM_T} AS VARRAY(10) OF ${PLAYER_T};
58+
`;
59+
await conn.execute(plsql);
60+
61+
let sql =`
62+
CREATE TABLE ${TABLE} (sportname VARCHAR2(20), team ${TEAM_T})
63+
`;
64+
plsql = testsUtil.sqlCreateTable(TABLE, sql);
65+
await conn.execute(plsql);
66+
67+
} catch(err) {
68+
should.not.exist(err);
69+
}
70+
}); // before()
71+
72+
after(async () => {
73+
try {
74+
75+
let sql = `DROP TABLE ${TABLE} PURGE`;
76+
await conn.execute(sql);
77+
78+
sql = `DROP TYPE ${TEAM_T} FORCE`;
79+
await conn.execute(sql);
80+
81+
sql = `DROP TYPE ${PLAYER_T} FORCE`;
82+
await conn.execute(sql);
83+
84+
await conn.close();
85+
} catch(err) {
86+
should.not.exist(err);
87+
}
88+
}); // after()
89+
90+
it('216.1 VARRAY Collection. Object columns contain TS, TSZ and LTZ', async () => {
91+
try {
92+
const TeamTypeClass = await conn.getDbObjectClass(TEAM_T);
93+
94+
// Insert with explicit constructor
95+
const FrisbeePlayers = [
96+
{
97+
SHIRTNUMBER: 11,
98+
NAME: 'Elizabeth',
99+
TS: new Date(1986, 8, 18, 12, 14, 27, 0),
100+
TSZ: new Date(1989, 3, 4, 10, 27, 16, 201),
101+
LTZ: new Date(1999, 5, 4, 11, 23, 5, 45)
102+
},
103+
{
104+
SHIRTNUMBER: 22,
105+
NAME: 'Frank',
106+
TS: new Date(1987, 8, 18, 12, 14, 27, 0),
107+
TSZ: new Date(1990, 3, 4, 10, 27, 16, 201),
108+
LTZ: new Date(2000, 5, 4, 11, 23, 5, 45)
109+
}
110+
];
111+
const FrisbeeTeam = new TeamTypeClass(FrisbeePlayers);
112+
113+
let sql = `INSERT INTO ${TABLE} VALUES (:sn, :t)`;
114+
let binds = { sn: "Frisbee", t: FrisbeeTeam };
115+
const result1 = await conn.execute(sql, binds);
116+
should.strictEqual(result1.rowsAffected, 1);
117+
118+
sql = `SELECT * FROM ${TABLE}`;
119+
const result = await conn.execute(sql, [], { outFormat:oracledb.OUT_FORMAT_OBJECT });
120+
121+
should.strictEqual(result.rows[0].SPORTNAME, 'Frisbee');
122+
123+
for (let i = 0; i < result.rows[0].TEAM.length; i++) {
124+
should.strictEqual(result.rows[0].TEAM[i].SHIRTNUMBER, FrisbeePlayers[i].SHIRTNUMBER);
125+
should.strictEqual(result.rows[0].TEAM[i].NAME, FrisbeePlayers[i].NAME);
126+
// should.strictEqual(result.rows[0].TEAM[i].TS.getTime(), FrisbeePlayers[i].TS.getTime());
127+
should.strictEqual(result.rows[0].TEAM[i].TSZ.getTime(), FrisbeePlayers[i].TSZ.getTime());
128+
should.strictEqual(result.rows[0].TEAM[i].LTZ.getTime(), FrisbeePlayers[i].LTZ.getTime());
129+
}
130+
} catch (err) {
131+
should.not.exist(err);
132+
}
133+
}); // 216.1
134+
});

test/list.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4586,4 +4586,7 @@ oracledb.OUT_FORMAT_OBJECT and resultSet = true
45864586
214.4 Negative - collection.deleteElement()
45874587

45884588
215. dbObject16.js
4589-
215.1 Collection of DATE, named Oracle type binds
4589+
215.1 Collection of DATE, named Oracle type binds
4590+
4591+
216. dbObject17.js
4592+
216.1 VARRAY Collection. Object columns contain TS, TSZ and LTZ

test/opts/mocha.opts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,5 @@ test/dbObject12.js
240240
test/dbObject13.js
241241
test/dbObject14.js
242242
test/dbObject15.js
243-
test/dbObject16.js
243+
test/dbObject16.js
244+
test/dbObject17.js

0 commit comments

Comments
 (0)