mirror of
https://github.com/datahub-project/datahub.git
synced 2025-08-31 04:25:29 +00:00
Merge pull request #891 from theseyi/master
refactors informational text in purge policy into constant. adds inte…
This commit is contained in:
commit
f1fefc9714
@ -5,14 +5,29 @@ import {
|
||||
baseCommentEditorOptions,
|
||||
exemptPolicy,
|
||||
isExempt,
|
||||
missingPolicyText,
|
||||
PurgePolicy,
|
||||
purgePolicyProps
|
||||
} from 'wherehows-web/constants';
|
||||
import noop from 'wherehows-web/utils/noop';
|
||||
|
||||
export default Component.extend({
|
||||
/**
|
||||
* Reference to the purge exempt policy
|
||||
* @type {string}
|
||||
*/
|
||||
exemptPolicy,
|
||||
|
||||
/**
|
||||
* Reference to the informational text if the dataset does not have a saved purge policy
|
||||
* @type {string}
|
||||
*/
|
||||
missingPolicyText,
|
||||
|
||||
/**
|
||||
* Reference to client options for each purge policy
|
||||
* @type {PurgePolicyProperties}
|
||||
*/
|
||||
purgePolicyProps,
|
||||
|
||||
/**
|
||||
|
@ -35,7 +35,13 @@ const purgePolicyProps: PurgePolicyProperties = {
|
||||
displayAs: 'Auto Purge'
|
||||
},
|
||||
MANUAL_PURGE: {
|
||||
platforms: [DatasetPlatform.MySql, DatasetPlatform.Espresso, DatasetPlatform.Teradata, DatasetPlatform.Oracle, DatasetPlatform.HDFS],
|
||||
platforms: [
|
||||
DatasetPlatform.MySql,
|
||||
DatasetPlatform.Espresso,
|
||||
DatasetPlatform.Teradata,
|
||||
DatasetPlatform.Oracle,
|
||||
DatasetPlatform.HDFS
|
||||
],
|
||||
desc: 'Choose this option only if you or your team have implemented a custom mechanism to purge this dataset.',
|
||||
displayAs: 'Manual Purge'
|
||||
},
|
||||
@ -69,4 +75,10 @@ const exemptPolicy = PurgePolicy.PurgeExempt;
|
||||
*/
|
||||
const isExempt = (policy: PurgePolicy) => policy === PurgePolicy.PurgeExempt;
|
||||
|
||||
export { PurgePolicy, purgePolicyProps, isExempt, exemptPolicy };
|
||||
/**
|
||||
* User informational text for datasets without a purge policy
|
||||
* @type {string}
|
||||
*/
|
||||
const missingPolicyText = 'This dataset does not have a current compliance purge policy.';
|
||||
|
||||
export { PurgePolicy, purgePolicyProps, isExempt, exemptPolicy, missingPolicyText };
|
||||
|
@ -1 +1,2 @@
|
||||
@import 'deprecated-dataset';
|
||||
@import 'removed-dataset';
|
||||
|
@ -0,0 +1,5 @@
|
||||
.removed-dataset {
|
||||
@include pill(set-color(red, maroonflush), set-color(white, base));
|
||||
margin-top: item-spacing(3);
|
||||
line-height: item-spacing(5);
|
||||
}
|
@ -54,7 +54,7 @@
|
||||
</li>
|
||||
{{else}}
|
||||
|
||||
<p>This dataset does not have a current compliance purge policy.</p>
|
||||
<p>{{missingPolicyText}}</p>
|
||||
<sub>To update, click edit and follow the steps</sub>
|
||||
|
||||
{{/if}}
|
||||
|
@ -11,6 +11,23 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-5">
|
||||
{{#if datasetView.removed}}
|
||||
<span class="removed-dataset">
|
||||
REMOVED
|
||||
</span>
|
||||
|
||||
<sup>
|
||||
<span
|
||||
class="glyphicon glyphicon-question-sign"
|
||||
title="This dataset has been removed">
|
||||
{{tooltip-on-element
|
||||
event="hover"
|
||||
text="This dataset has been removed"
|
||||
}}
|
||||
</span>
|
||||
</sup>
|
||||
{{/if}}
|
||||
|
||||
{{#if datasetView.deprecated}}
|
||||
<a data-toggle="tab" href="#propertiestab" {{action "showProperties" preventDefault=false}}>
|
||||
<span class="deprecated-dataset">
|
||||
@ -19,7 +36,7 @@
|
||||
<sup>
|
||||
<span
|
||||
class="glyphicon glyphicon-question-sign"
|
||||
title={{helpText.classification}}>
|
||||
title="Click to view dataset properties">
|
||||
{{tooltip-on-element
|
||||
event="hover"
|
||||
text="Click to view dataset properties"
|
||||
|
@ -0,0 +1,99 @@
|
||||
import { moduleForComponent, test } from 'ember-qunit';
|
||||
import hbs from 'htmlbars-inline-precompile';
|
||||
import { triggerEvent } from 'ember-native-dom-helpers';
|
||||
import { missingPolicyText, purgePolicyProps, exemptPolicy } from 'wherehows-web/constants';
|
||||
|
||||
moduleForComponent('purge-policy', 'Integration | Component | purge policy', {
|
||||
integration: true
|
||||
});
|
||||
|
||||
const policyList = '.purge-policy-list';
|
||||
const policyTypes = Object.keys(purgePolicyProps);
|
||||
|
||||
test('it renders', function(assert) {
|
||||
assert.expect(1);
|
||||
|
||||
this.render(hbs`{{purge-policy}}`);
|
||||
|
||||
assert.equal(document.querySelector(policyList).tagName, 'UL', 'expected component element is rendered');
|
||||
});
|
||||
|
||||
test('it renders each purge policy in edit mode', function(assert) {
|
||||
assert.expect(1);
|
||||
const purgePoliciesLength = policyTypes.length;
|
||||
|
||||
this.set('isEditable', true);
|
||||
this.render(hbs`{{purge-policy isEditable=isEditable}}`);
|
||||
|
||||
assert.equal(
|
||||
document.querySelectorAll(`${policyList} [type=radio]`).length,
|
||||
purgePoliciesLength,
|
||||
'all policies are rendered'
|
||||
);
|
||||
});
|
||||
|
||||
test('it triggers the onPolicyChange action', function(assert) {
|
||||
assert.expect(2);
|
||||
let onPolicyChangeActionCallCount = 0;
|
||||
|
||||
this.set('isEditable', true);
|
||||
|
||||
this.set('onPolicyChange', () => {
|
||||
assert.equal(++onPolicyChangeActionCallCount, 1, 'onPolicyChange action is invoked when change event is triggered');
|
||||
});
|
||||
|
||||
this.render(hbs`{{purge-policy onPolicyChange=onPolicyChange isEditable=isEditable}}`);
|
||||
assert.equal(onPolicyChangeActionCallCount, 0, 'onPolicyChange action is not invoked on instantiation');
|
||||
|
||||
triggerEvent(`${policyList} [type=radio]`, 'change');
|
||||
});
|
||||
|
||||
test('it renders a user message if the purge policy is not set and is in readonly mode', function(assert) {
|
||||
assert.expect(1);
|
||||
|
||||
this.render(hbs`{{purge-policy}}`);
|
||||
assert.equal(
|
||||
document.querySelector(`${policyList} p`).textContent,
|
||||
missingPolicyText,
|
||||
`${missingPolicyText} is rendered`
|
||||
);
|
||||
});
|
||||
|
||||
test('it indicates the currently selected purge policy', function(assert) {
|
||||
assert.expect(1);
|
||||
const selectedPolicy = policyTypes[1];
|
||||
const platform = purgePolicyProps[selectedPolicy].platforms[0];
|
||||
|
||||
this.set('isEditable', true);
|
||||
this.set('platform', platform);
|
||||
this.set('purgePolicy', selectedPolicy);
|
||||
|
||||
this.render(hbs`{{purge-policy isEditable=isEditable purgePolicy=purgePolicy platform=platform}}`);
|
||||
|
||||
assert.ok(
|
||||
document.querySelector(`${policyList} [type=radio][value=${selectedPolicy}]`).checked,
|
||||
`${selectedPolicy} radio is checked`
|
||||
);
|
||||
});
|
||||
|
||||
test('it focuses the comment element for exempt policy', function(assert) {
|
||||
assert.expect(1);
|
||||
|
||||
const focusEditor = () => {
|
||||
assert.equal(++focusMethodCount, 1, 'focusEditor action is invoked');
|
||||
};
|
||||
let selectedPolicy = exemptPolicy;
|
||||
let platform = purgePolicyProps[selectedPolicy].platforms[0];
|
||||
let focusMethodCount = 0;
|
||||
|
||||
this.setProperties({
|
||||
platform,
|
||||
focusEditor,
|
||||
isEditable: true,
|
||||
purgePolicy: selectedPolicy
|
||||
});
|
||||
|
||||
this.render(
|
||||
hbs`{{purge-policy isEditable=isEditable purgePolicy=purgePolicy platform=platform focusEditor=focusEditor}}`
|
||||
);
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user