0a47a95588
* ui: Add data-source component and related services (#6486) * ui: Add data-source component and related services: 1. DataSource component 2. Repository manager for retrieving repositories based on URIs 3. Blocking data service for injection to the data-source component to support blocking query types of data sources 4. 'Once' promise based data service for injection for potential fallback to old style promise based data (would need to be injected via an initial runtime variable) 5. Several utility functions taken from elsewhere - maybeCall - a replication of code from elsewhere for condition calling a function based on the result of a promise - restartWhenAvailable - used for restarting blocking queries when a tab is brought to the front - ifNotBlocking - to check if blocking is NOT enabled * Move to a different organization based on protocols * Don't call open twice when eager * Workaround new ember error for reading and writing at the same time * Add first draft of a README.mdx file
78 lines
3.1 KiB
JavaScript
78 lines
3.1 KiB
JavaScript
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 see the text "$text" in "$selector"'], function(text, selector) {
|
|
const textContent = find(selector).textContent;
|
|
assert.ok(
|
|
textContent.indexOf(text) !== -1,
|
|
`Expected 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([`I don't see the "$selector" element`], function(selector) {
|
|
assert.equal(document.querySelector(selector), null, `Expected not to see ${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}`
|
|
);
|
|
})
|
|
// 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 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}"`);
|
|
});
|
|
}
|