mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 12:15:51 +00:00
Rename RippleAPI client to Client (#1520)
* rename RippleAPI -> XrplClient * more renames * move API stuff to client folder * rename all api -> client * fix tests * make tests run * fix integ tests * fix urls * fix merge issues * XrplClient -> Client * fix merge issues * rename xrpl-client npm symlink to xrpl-local
This commit is contained in:
80
test/ripple-client-test.ts
Normal file
80
test/ripple-client-test.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import setupClient from './setup-client'
|
||||
import {Client} from 'xrpl-local'
|
||||
import addresses from './fixtures/addresses.json'
|
||||
import {getAllPublicMethods, loadTestSuites} from './utils'
|
||||
|
||||
/**
|
||||
* Client Test Runner
|
||||
*
|
||||
* Background: "test/client-test.ts" had hit 4000+ lines of test code and 300+
|
||||
* individual tests. Additionally, a new address format was added which
|
||||
* forced us to copy-paste duplicate the test file to test both the old forms
|
||||
* of address. This added a significant maintenance burden.
|
||||
*
|
||||
* This test runner allows us to split our tests by Client method, and
|
||||
* automatically load, validate, and run them. Each tests accepts arguments to
|
||||
* test with, which allows us to re-run tests across different data
|
||||
* (ex: different address styles).
|
||||
*
|
||||
* Additional benefits:
|
||||
* - Throw errors when we detect the absence of tests.
|
||||
* - Type the Client object under test and catch typing issues (currently untyped).
|
||||
* - Sets the stage for more cleanup, like moving test-specific fixtures closer to their tests.
|
||||
*/
|
||||
describe('Client [Test Runner]', function () {
|
||||
beforeEach(setupClient.setup)
|
||||
afterEach(setupClient.teardown)
|
||||
|
||||
// Collect all the tests:
|
||||
const allPublicMethods = getAllPublicMethods(new Client())
|
||||
const allTestSuites = loadTestSuites()
|
||||
|
||||
// Run all the tests:
|
||||
for (const {name: methodName, tests, config} of allTestSuites) {
|
||||
describe(`client.${methodName}`, () => {
|
||||
// Run each test that does not use an address.
|
||||
for (const [testName, fn] of tests) {
|
||||
if (fn.length === 1) {
|
||||
it(testName, function () {
|
||||
return fn(this.client, addresses.ACCOUNT)
|
||||
})
|
||||
}
|
||||
}
|
||||
// Run each test with a classic address.
|
||||
describe(`[Classic Address]`, () => {
|
||||
for (const [testName, fn] of tests) {
|
||||
if (fn.length === 2) {
|
||||
it(testName, function () {
|
||||
return fn(this.client, addresses.ACCOUNT)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
// Run each test with an X-address.
|
||||
if (!config.skipXAddress) {
|
||||
describe(`[X-address]`, () => {
|
||||
for (const [testName, fn] of tests) {
|
||||
if (fn.length === 2) {
|
||||
it(testName, function () {
|
||||
return fn(this.client, addresses.ACCOUNT_X)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Report any missing tests.
|
||||
const allTestedMethods = new Set(allTestSuites.map((s) => s.name))
|
||||
for (const methodName of allPublicMethods) {
|
||||
if (!allTestedMethods.has(methodName)) {
|
||||
// TODO: Once migration is complete, remove `.skip()` so that missing tests are reported as failures.
|
||||
it.skip(`${methodName} - no test suite found`, () => {
|
||||
throw new Error(
|
||||
`Test file not found! Create file "test/client/${methodName}/index.ts".`
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user