Files
shields/services/dynamic/dynamic-xml.spec.js
dependabot[bot] b9d96755ec chore(deps-dev): bump prettier from 2.8.8 to 3.0.0 (#9357)
* chore(deps-dev): bump prettier from 2.8.8 to 3.0.0

Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.0.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.0.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* reformat all the things (prettier 3)

* update tests to await calls to prettier.format()

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: chris48s <git@chris-shaw.dev>
2023-07-10 09:27:51 +00:00

131 lines
3.1 KiB
JavaScript

import { expect } from 'chai'
import sinon from 'sinon'
import xpath from 'xpath'
import { test, given } from 'sazerac'
import { InvalidResponse } from '../index.js'
import DynamicXml from './dynamic-xml.service.js'
const exampleXml = `<?xml version="1.0"?>
<catalog>
<book id="bk101">
<title>XML Developer's Guide</title>
<price>44.95</price>
<genre>Computer</genre>
</book>
<book id="bk102">
<title>Midnight Rain</title>
<price>5.95</price>
<genre></genre>
</book>
</catalog>
`
describe('DynamicXml', function () {
describe('transform()', function () {
beforeEach(function () {
sinon.stub(xpath, 'select').returns(undefined)
})
afterEach(function () {
sinon.restore()
})
it('throws InvalidResponse on unsupported query', function () {
expect(() =>
DynamicXml.prototype.transform({
pathExpression: '//book/title',
buffer: exampleXml,
}),
)
.to.throw(InvalidResponse)
.with.property('prettyMessage', 'unsupported query')
})
})
test(DynamicXml.prototype.transform, () => {
given({
pathExpression: '//book[1]/title/text()',
buffer: exampleXml,
}).expect({
values: ["XML Developer's Guide"],
})
given({ pathExpression: '//book/title/text()', buffer: exampleXml }).expect(
{
values: ["XML Developer's Guide", 'Midnight Rain'],
},
)
given({
pathExpression: 'string(//book[1]/title)',
buffer: exampleXml,
}).expect({
values: ["XML Developer's Guide"],
})
given({
pathExpression: 'string(//book/title)',
buffer: exampleXml,
}).expect({
values: ["XML Developer's Guide"],
})
given({
pathExpression: 'string(//book[1]/@id)',
buffer: exampleXml,
}).expect({
values: ['bk101'],
})
given({
pathExpression: 'substring(//book[1]/title, 5, 9)',
buffer: exampleXml,
}).expect({
values: ['Developer'],
})
given({
pathExpression: 'number(//book[1]/price)',
buffer: exampleXml,
}).expect({
values: [44.95],
})
given({
pathExpression: 'boolean(string(//book[1]/genre))',
buffer: exampleXml,
}).expect({
values: [true],
})
given({
pathExpression: 'boolean(string(//book[2]/genre))',
buffer: exampleXml,
}).expect({
values: [false],
})
given({
pathExpression: 'count(//book)',
buffer: exampleXml,
}).expect({
values: [2],
})
given({
pathExpression: 'floor(//book[1]/price)',
buffer: exampleXml,
}).expect({
values: [44],
})
given({
pathExpression: "//p[lang('en')]",
buffer: '<p xml:lang="en">Midnight Rain</p>',
}).expect({
values: ['Midnight Rain'],
})
given({
pathExpression: 'normalize-space(string(/title))',
buffer: '<title> Midnight Rain </title>',
}).expect({
values: ['Midnight Rain'],
})
given({
pathExpression: '//book[1]/title | //book[1]/price',
buffer: exampleXml,
}).expect({
values: ["XML Developer's Guide", '44.95'],
})
})
})