blob: aaca0e1fc917e1552a4729a32a27001e26c8b336 [file] [log] [blame]
/**
*
* Copyright (c) 2022 Silicon Labs
*
* Licensed 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.
*
*
* @jest-environment node
*/
const path = require('path')
const genEngine = require('../src-electron/generator/generation-engine')
const env = require('../src-electron/util/env')
const dbApi = require('../src-electron/db/db-api')
const queryAttribute = require('../src-electron/db/query-attribute')
const querySession = require('../src-electron/db/query-session')
const queryPackage = require('../src-electron/db/query-package')
const queryZcl = require('../src-electron/db/query-zcl')
const zclLoader = require('../src-electron/zcl/zcl-loader')
const importJs = require('../src-electron/importexport/import')
const testUtil = require('./test-util')
const testQuery = require('./test-query')
const dbEnum = require('../src-shared/db-enum')
let db
// These two files have intentionally wrong paths in the package, so
// that it tests the ability of the zap files that got moved around
// to attach to proper packages via category.
const testFileMatter = path.join(__dirname, 'resource/mp-matter.zap')
const testFileZigbee = path.join(__dirname, 'resource/mp-zigbee.zap')
beforeAll(async () => {
env.setDevelopmentEnv()
let file = env.sqliteTestFile('multi-package')
db = await dbApi.initDatabaseAndLoadSchema(
file,
env.schemaFile(),
env.zapVersion()
)
await zclLoader.loadZcl(db, env.builtinMatterZclMetafile())
await zclLoader.loadZcl(db, env.builtinSilabsZclMetafile())
await genEngine.loadTemplates(db, testUtil.testTemplate.matter)
await genEngine.loadTemplates(db, testUtil.testTemplate.zigbee)
}, testUtil.timeout.medium())
afterAll(() => dbApi.closeDatabase(db), testUtil.timeout.short())
test('Validate loaded packages', async () => {
expect(
await testQuery.selectCountFrom(
db,
"PACKAGE WHERE PACKAGE.TYPE = 'zcl-properties'"
)
).toBe(2)
expect(
await testQuery.selectCountFrom(
db,
"PACKAGE WHERE PACKAGE.TYPE = 'gen-templates-json'"
)
).toBe(2)
})
test('Validate Matter zap file.', async () => {
let sessionId = await querySession.createBlankSession(db)
await importJs.importDataFromFile(db, testFileMatter, {
sessionId: sessionId
})
let pkgs = await queryPackage.getSessionPackagesWithTypes(db, sessionId)
expect(pkgs.length).toBe(2)
for (let pkg of pkgs) {
if (pkg.type === dbEnum.packageType.zclProperties) {
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
expect(p.category).toBe('matter')
} else if (pkg.type === dbEnum.packageType.genTemplatesJson) {
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
expect(p.category).toBe('matter')
} else {
fail('Unknown package type.')
}
}
})
test('Validate Zigbee zap file.', async () => {
let sessionId = await querySession.createBlankSession(db)
await importJs.importDataFromFile(db, testFileZigbee, {
sessionId: sessionId
})
let pkgs = await queryPackage.getSessionPackagesWithTypes(db, sessionId)
expect(pkgs.length).toBe(2)
for (let pkg of pkgs) {
if (pkg.type === dbEnum.packageType.zclProperties) {
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
expect(p.category).toBe('zigbee')
} else if (pkg.type === dbEnum.packageType.genTemplatesJson) {
let p = await queryPackage.getPackageByPackageId(db, pkg.packageRef)
expect(p.category).toBe('zigbee')
} else {
fail('Unknown package type.')
}
}
})