mirror of
https://github.com/status-im/consul.git
synced 2025-02-23 10:58:25 +00:00
* v3.20.2...v3.24.0 * Fix handle undefined outlet in route component * Don't use template helper for optional modal.open Using the optional-helper here will trigger a computation in the same runloop error. This is because we are setting the `modal`-property when the `<Ref>` component gets rendered which will update the `this.modal`-property which will then recompute the `optional`-helper leading to this error. Instead we will create an action that will call the `open`-method on the modal when it is defined. This gets rid of the double computation error as we will not access the modal property twice in the same runloop when `modal` is getting set. * Fix - fn needs to be passed function tab-nav We create functions in the component file instead so that fn-helper stops complaining about the need to pass a function. * Update ember-exam to 6.1 version "Makes it compatible" with ember-qunit v5 * scheduleOnce setMaxHeight paged-collection We need to schedule to get around double-computation error. * Fix - model.data is removed from ember-data This has been private API all along - we need to work around the removal. Reference: https://github.com/emberjs/data/pull/7338/files#diff-9a8746fc5c86fd57e6122f00fef3155f76f0f3003a24b53fb7c4621d95dcd9bfL1310 * Fix `propContains` instead of `deepEqual` policy Recent model.data works differently than iterating attributes. We use `propContains` instead of `deepEqual`. We are only interested in the properties we assert against and match the previous behavior with this change. * Fix `propContains` instead of `deepEqual` token * Better handling single-records repo test-helper `model.data` has been removed we need to handle proxies and model instances differently. * Fix remaining repository tests with propContains We don't want to match entire objects - we don't care about properties we haven't defined in the assertion. * Don't use template helper for optional modal.open Using a template helper will give us a recomputation error - we work around it by creating an explicit action on the component instead. * Await `I $verb the $pageObject object` step * Fix no more customization ember-can No need to customize, the helper handles destruction fine on its own. * Fix - don't pass `optional` functions to fn We will declare the functions on the component instead. This gives us the same behavior but no error from `fn`, which expects a function to be passed. * Fix - handle `undefined` state on validate modifier StateChart can yield out an undefined `state` we need to handle that in the validate modifier * Fix linting errors tests directory * Warn / turn off new ember linting issues We will tackle them one by one and don't want to autofix issues that could be dangerous to auto-fix. * Auto-fix linting issues * More linting configuration * Fix remaining linting issues * Fix linting issues new files after rebase * ui: Remove ember-cli-uglify config now we are using terser (#14574) Co-authored-by: John Cowen <johncowen@users.noreply.github.com>
90 lines
3.6 KiB
JavaScript
90 lines
3.6 KiB
JavaScript
const dont = `( don't| shouldn't| can't)?`;
|
|
export default function (scenario, assert, pauseUntil, find, currentURL, clipboard) {
|
|
scenario
|
|
.then('pause until I see the text "$text" in "$selector"', function (text, selector) {
|
|
return pauseUntil(function (resolve, reject, retry) {
|
|
const $el = find(selector);
|
|
if ($el) {
|
|
const hasText = $el.textContent.indexOf(text) !== -1;
|
|
if (hasText) {
|
|
return resolve();
|
|
}
|
|
return reject();
|
|
}
|
|
return retry();
|
|
}, `Expected to see "${text}" in "${selector}"`);
|
|
})
|
|
.then([`I${dont} see the text "$text" in "$selector"`], function (negative, text, selector) {
|
|
const textContent = (find(selector) || { textContent: '' }).textContent;
|
|
assert[negative ? 'notOk' : 'ok'](
|
|
textContent.indexOf(text) !== -1,
|
|
`Expected${negative ? ' not' : ''} to see "${text}" in "${selector}", was "${textContent}"`
|
|
);
|
|
})
|
|
.then(['I copied "$text"'], function (text) {
|
|
const copied = clipboard();
|
|
assert.ok(
|
|
copied.indexOf(text) !== -1,
|
|
`Expected to see "${text}" in the clipboard, was "${copied}"`
|
|
);
|
|
})
|
|
.then(['I see the exact text "$text" in "$selector"'], function (text, selector) {
|
|
assert.ok(
|
|
find(selector).textContent.trim() === text,
|
|
`Expected to see the exact "${text}" in "${selector}"`
|
|
);
|
|
})
|
|
// TODO: Think of better language
|
|
// TODO: These should be mergeable
|
|
.then(['"$selector" has the "$class" class'], function (selector, cls) {
|
|
// because `find` doesn't work, guessing its sandboxed to ember's container
|
|
assert
|
|
.dom(document.querySelector(selector))
|
|
.hasClass(cls, `Expected [class] to contain ${cls} on ${selector}`);
|
|
})
|
|
.then(['"$selector" doesn\'t have the "$class" class'], function (selector, cls) {
|
|
assert.ok(
|
|
!document.querySelector(selector).classList.contains(cls),
|
|
`Expected [class] not to contain ${cls} on ${selector}`
|
|
);
|
|
})
|
|
.then([`I${dont} see the "$selector" element`], function (negative, selector) {
|
|
assert[negative ? 'equal' : 'notEqual'](
|
|
document.querySelector(selector),
|
|
null,
|
|
`Expected${negative ? ' not' : ''} to see ${selector}`
|
|
);
|
|
})
|
|
// TODO: Make this accept a 'contains' word so you can search for text containing also
|
|
.then('I have settings like yaml\n$yaml', function (data) {
|
|
// TODO: Inject this
|
|
const settings = window.localStorage;
|
|
// TODO: this and the setup should probably use consul:
|
|
// as we are talking about 'settings' here not localStorage
|
|
// so the prefix should be hidden
|
|
Object.keys(data).forEach(function (prop) {
|
|
const actual = settings.getItem(prop);
|
|
const expected = data[prop];
|
|
assert.strictEqual(actual, expected, `Expected settings to be ${expected} was ${actual}`);
|
|
});
|
|
})
|
|
.then('the url should match $url', function (url) {
|
|
const currentUrl = currentURL() || '';
|
|
|
|
const matches = !!currentUrl.match(url);
|
|
|
|
assert.ok(matches, `Expected currentURL to match the provided regex: ${url}`);
|
|
})
|
|
.then('the url should be $url', function (url) {
|
|
// TODO: nice! $url should be wrapped in ""
|
|
if (url === "''") {
|
|
url = '';
|
|
}
|
|
const current = currentURL() || '';
|
|
assert.equal(current, url, `Expected the url to be ${url} was ${current}`);
|
|
})
|
|
.then(['the title should be "$title"'], function (title) {
|
|
assert.equal(document.title, title, `Expected the document.title to equal "${title}"`);
|
|
});
|
|
}
|