From 1ce7e05687b494410343f759edf53f3c4166996e Mon Sep 17 00:00:00 2001 From: Seyi Adebajo Date: Wed, 21 Feb 2018 19:20:20 -0800 Subject: [PATCH] adds unit tests for urn conversion --- wherehows-web/app/utils/validators/urn.ts | 3 +- wherehows-web/mirage/fixtures/urn.ts | 17 +++++++-- .../tests/unit/utils/validators/urn-test.js | 36 +++++++++++++++++++ 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 wherehows-web/tests/unit/utils/validators/urn-test.js diff --git a/wherehows-web/app/utils/validators/urn.ts b/wherehows-web/app/utils/validators/urn.ts index 32db8ae06d..030dd29a26 100644 --- a/wherehows-web/app/utils/validators/urn.ts +++ b/wherehows-web/app/utils/validators/urn.ts @@ -78,7 +78,7 @@ const convertWhUrnToLiUrn = (whUrn: string): string => { * @return {string} */ const convertWhDatasetPathToLiPath = (platform: DatasetPlatform, path: string): string => - platform === DatasetPlatform.HDFS ? `/${path}` : path.replace(/\//g, '.'); + String(platform).toLowerCase() === DatasetPlatform.HDFS ? `/${path}` : path.replace(/\//g, '.'); /** * Cached RegExp object for a global search of / @@ -123,6 +123,7 @@ export { specialFlowUrnRegex, getPlatformFromUrn, convertWhUrnToLiUrn, + convertWhDatasetPathToLiPath, encodeForwardSlash, encodeUrn, decodeUrn diff --git a/wherehows-web/mirage/fixtures/urn.ts b/wherehows-web/mirage/fixtures/urn.ts index ce51c8c7a2..1cac579a72 100644 --- a/wherehows-web/mirage/fixtures/urn.ts +++ b/wherehows-web/mirage/fixtures/urn.ts @@ -1,3 +1,16 @@ -const urn = 'urn:li:dataset:(urn:li:dataPlatform:hdfs,%2Fjobs%2Faffinity%2FeAffinity%2Fmaster%2Fold-job-seeker,PROD)'; +const urn = 'urn:li:dataset:(urn:li:dataPlatform:hdfs,%2Fseg1s%2Fseg2%2Fseg3%2Fseg4%2Fdataset-node,PROD)'; -export { urn }; +const whUrnToLiUrnMap = [ + ['espresso:///ETLInfra/AllTables', 'urn:li:dataset:(urn:li:dataPlatform:espresso,ETLInfra.AllTables,PROD)'], + [ + 'hdfs:///seg1/seg2/seg3/data/kebab-db-name', + 'urn:li:dataset:(urn:li:dataPlatform:hdfs,/seg1/seg2/seg3/data/kebab-db-name,PROD)' + ], + [ + 'hdfs:///seg1/seg2/data/UpperCaseDbName', + 'urn:li:dataset:(urn:li:dataPlatform:hdfs,/seg1/seg2/data/UpperCaseDbName,PROD)' + ], + ['oracle:///ABOOK/ABOOK_DATA', 'urn:li:dataset:(urn:li:dataPlatform:oracle,ABOOK.ABOOK_DATA,PROD)'] +]; + +export { urn, whUrnToLiUrnMap }; diff --git a/wherehows-web/tests/unit/utils/validators/urn-test.js b/wherehows-web/tests/unit/utils/validators/urn-test.js new file mode 100644 index 0000000000..c5f73ace81 --- /dev/null +++ b/wherehows-web/tests/unit/utils/validators/urn-test.js @@ -0,0 +1,36 @@ +import { module, test } from 'qunit'; +import { + convertWhDatasetPathToLiPath, + datasetUrnRegexWH, + convertWhUrnToLiUrn +} from 'wherehows-web/utils/validators/urn'; +import { whUrnToLiUrnMap } from 'wherehows-web/mirage/fixtures/urn'; + +module('Unit | Utility | validators/urn'); + +test('converters exist', function(assert) { + assert.ok(typeof convertWhDatasetPathToLiPath === 'function', 'convertWhDatasetPathToLiPath is a function'); + assert.ok(typeof convertWhUrnToLiUrn === 'function', 'convertWhUrnToLiUrn is a function'); +}); + +test('convertWhDatasetPathToLiPath correctly converts an hdfs path', function(assert) { + const [, platform, path] = datasetUrnRegexWH.exec('hdfs:///seg1/seg2/seg3/data/kebab-db-name'); + const result = convertWhDatasetPathToLiPath(platform, path); + + assert.equal('/seg1/seg2/seg3/data/kebab-db-name', result, 'hdfs path is correctly converted'); +}); + +test('convertWhDatasetPathToLiPath correctly converts a non-hdfs path', function(assert) { + const [, platform, path] = datasetUrnRegexWH.exec('oracle:///ABOOK/ABOOK_DATA'); + const result = convertWhDatasetPathToLiPath(platform, path); + + assert.equal('ABOOK.ABOOK_DATA', result, 'non hdfs path is correctly converted'); +}); + +test('convertWhUrnToLiUrn correctly converts urns', function(assert) { + assert.expect(whUrnToLiUrnMap.length); + + whUrnToLiUrnMap.forEach(([actual, expected]) => + assert.equal(convertWhUrnToLiUrn(actual), expected, `${actual} is correctly converted to ${expected}`) + ); +});