Skip to content

Commit 6a1948e

Browse files
authored
Add unit test for category matching. (#831)
0. Add two zap files with intentionally wrong package paths, but correct categories. 1. Add a test that loads both matter and zigbee metadata. 2. Load a matter zap file and a zigbee zap file, and test that correct packages are attached.
1 parent cfdf9e1 commit 6a1948e

File tree

6 files changed

+2169
-4
lines changed

6 files changed

+2169
-4
lines changed

test/gen-dotdot.test.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ const zclLoader = require('../src-electron/zcl/zcl-loader.js')
2626
const importJs = require('../src-electron/importexport/import.js')
2727
const testUtil = require('./test-util.js')
2828
const queryPackage = require('../src-electron/db/query-package.js')
29-
const {
30-
exportClustersFromEndpointType,
31-
} = require('../src-electron/db/query-impexp.js')
32-
const querySession = require('../src-electron/db/query-session.js')
3329

3430
let db
3531
const testFile = path.join(__dirname, 'resource/three-endpoint-device.zap')

test/gen-template/matter/gen-test.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "Matter test template",
33
"version": "test-matter",
4+
"category": "matter",
45
"options": {
56
"testOption": {
67
"code1": "label1",

test/gen-template/zigbee/gen-templates.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "Test templates",
33
"version": "test-v1",
4+
"category": "zigbee",
45
"requiredFeatureLevel": 2,
56
"options": {
67
"testOption": {

test/multi-package.test.js

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
/**
2+
*
3+
* Copyright (c) 2022 Silicon Labs
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
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,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*
18+
* @jest-environment node
19+
*/
20+
const path = require('path')
21+
const genEngine = require('../src-electron/generator/generation-engine')
22+
const env = require('../src-electron/util/env')
23+
const dbApi = require('../src-electron/db/db-api')
24+
const queryAttribute = require('../src-electron/db/query-attribute')
25+
const querySession = require('../src-electron/db/query-session')
26+
const queryPackage = require('../src-electron/db/query-package')
27+
const queryZcl = require('../src-electron/db/query-zcl')
28+
const zclLoader = require('../src-electron/zcl/zcl-loader')
29+
const importJs = require('../src-electron/importexport/import')
30+
const testUtil = require('./test-util')
31+
const testQuery = require('./test-query')
32+
const dbEnum = require('../src-shared/db-enum')
33+
34+
let db
35+
36+
// These two files have intentionally wrong paths in the package, so
37+
// that it tests the ability of the zap files that got moved around
38+
// to attach to proper packages via category.
39+
const testFileMatter = path.join(__dirname, 'resource/mp-matter.zap')
40+
const testFileZigbee = path.join(__dirname, 'resource/mp-zigbee.zap')
41+
42+
beforeAll(async () => {
43+
env.setDevelopmentEnv()
44+
let file = env.sqliteTestFile('multi-package')
45+
db = await dbApi.initDatabaseAndLoadSchema(
46+
file,
47+
env.schemaFile(),
48+
env.zapVersion()
49+
)
50+
await zclLoader.loadZcl(db, env.builtinMatterZclMetafile())
51+
await zclLoader.loadZcl(db, env.builtinSilabsZclMetafile())
52+
await genEngine.loadTemplates(db, testUtil.testTemplate.matter)
53+
await genEngine.loadTemplates(db, testUtil.testTemplate.zigbee)
54+
}, testUtil.timeout.medium())
55+
56+
afterAll(() => dbApi.closeDatabase(db), testUtil.timeout.short())
57+
58+
test('Validate loaded packages', async () => {
59+
expect(
60+
await testQuery.selectCountFrom(
61+
db,
62+
"PACKAGE WHERE PACKAGE.TYPE = 'zcl-properties'"
63+
)
64+
).toBe(2)
65+
expect(
66+
await testQuery.selectCountFrom(
67+
db,
68+
"PACKAGE WHERE PACKAGE.TYPE = 'gen-templates-json'"
69+
)
70+
).toBe(2)
71+
})
72+
73+
test('Validate Matter zap file.', async () => {
74+
let sessionId = await querySession.createBlankSession(db)
75+
await importJs.importDataFromFile(db, testFileMatter, {
76+
sessionId: sessionId,
77+
})
78+
let pkgs = await queryPackage.getSessionPackagesWithTypes(db, sessionId)
79+
expect(pkgs.length).toBe(2)
80+
for (let pkg of pkgs) {
81+
if (pkg.type === dbEnum.packageType.zclProperties) {
82+
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
83+
expect(p.category).toBe('matter')
84+
} else if (pkg.type === dbEnum.packageType.genTemplatesJson) {
85+
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
86+
expect(p.category).toBe('matter')
87+
} else {
88+
fail('Unknown package type.')
89+
}
90+
}
91+
})
92+
93+
test('Validate Zigbee zap file.', async () => {
94+
let sessionId = await querySession.createBlankSession(db)
95+
await importJs.importDataFromFile(db, testFileZigbee, {
96+
sessionId: sessionId,
97+
})
98+
let pkgs = await queryPackage.getSessionPackagesWithTypes(db, sessionId)
99+
expect(pkgs.length).toBe(2)
100+
for (let pkg of pkgs) {
101+
if (pkg.type === dbEnum.packageType.zclProperties) {
102+
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
103+
expect(p.category).toBe('zigbee')
104+
} else if (pkg.type === dbEnum.packageType.genTemplatesJson) {
105+
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
106+
expect(p.category).toBe('zigbee')
107+
} else {
108+
fail('Unknown package type.')
109+
}
110+
}
111+
})

0 commit comments

Comments
 (0)