Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
test('', () => {
expect(true).toBe(true);
const store = createStore(reducer, {
insights: {
definitions: testDefinitions,
searches: [
{
name: 'Google',
url: 'https://www.google.com/search?q=Blood%20Meridian',
},
],
wikis: [
{
recipe: defaultRecipe.wikis[0],
doc: wtf(testWikitext),
},
],
text: 'Blood Meridian',
},
recipe: defaultRecipe,
pub: testPub,
ast: [],
});
const { getAllByText, getByTitle, getByText } = render(
,
);
// Expect insight to have opened definitions
getAllByText('noun');
test('', async () => {
const { getByLabelText, getAllByText, getByText } = render(
,
);
// Validate only main section was rendered
getByText("McCarthy's fifth book", { exact: false });
// in second section:
expect(() =>
getByText('The novel follows an adolescent runaway', { exact: false }),
).toThrow();
// in infobox:
expect(() => getByText('historical novel')).toThrow();
// Validate attribution
let el = getByText('Source: Wikipedia:');
el = el.querySelector('a')!;
expect(el.textContent).toBe(
expect(els[1].tagName).toBe('H1');
// Trigger section change from breadcrumbs to main "Blood Meridian or The Evening Redness in the West"
fireEvent.click(
getByText('Blood Meridian or The Evening Redness in the West'),
);
// Validate we're back to main section
getByText('Source: Wikipedia:');
getByText("McCarthy's fifth book", { exact: false });
getByText('Continue Reading');
getByText('Show Statistics');
// Mock wtf_wikipedia.fetch()
const mockFetch = ((wtf as any).fetch = jest.fn());
mockFetch.mockResolvedValueOnce(wtf(alternateTestWikitext));
// Click "Cormac McCarthy" link
fireEvent.click(getByText('Cormac McCarthy'));
// Validate new article was loaded
expect(mockFetch).toHaveBeenCalledTimes(1);
expect(mockFetch.mock.calls[0][0]).toBe('Cormac_McCarthy');
await waitForDomChange();
getByText('American novelist, playwright, and', { exact: false });
// Click back button to main "Blood Meridian" article
fireEvent.click(getByLabelText('Go back to previous article'));
// Validate we're back to main article
getByText("McCarthy's fifth book", { exact: false });
});
function printWikiSummary(queryText) {
let spinner = ora({ text: 'Searching...', spinner: 'dots4' }).start();
queryText = queryText.replace(/_/g, ' ');
wiki.fetch(queryText, _lang, (err, doc) => {
spinner.stop();
if (err) {
console.log('Error:', err);
}
if (doc) {
let summary = doc.sections()[0].text();
// Handle ambiguous results
if (_disambig || isDisambiguationPage(doc) || summary.includes('may refer to:')) {
handleAmbiguousResults(doc, queryText);
return;
}
// Output
function parseJob(markup) {
// gets the first sentence in Wikipedia markup
var sentence = WikipediaApi.plaintext(markup).split(/\. [A-Z]/)[0];
// split after name and DOB
var arr = sentence.split(' is ');
arr.splice(0, 1);
// get their job
var job = arr.join(' is ').replace(/^a /, '').replace(/^an /, '').replace(/^the /, '');
job = job.split(' who')[0];
job = job.split(', where')[0];
job = job.split(' from')[0];
job = job.split('; ')[0];
job = job.replace(/[,.:;!@#$%^&*()+ ]+$/, '');
// if job description is over 90 characters, is probably bad.
return job.length > 90 ? '' : job;
};
return new Promise((resolve, reject) => {
wtf_wikipedia.from_api(country.name.common, 'en', function (markup) {
console.log(markup)
var wiki = wtf_wikipedia.parse(markup)
if (wiki.type === 'disambiguation') {
console.log(country.name.common, 'disambiguation. fetching flag from +(country)')
return wtf_wikipedia.from_api(country.name.common + ' (country)', 'en', function (markup) {
var wiki = wtf_wikipedia.parse(markup)
console.log(country.name.common, '(country) wiki', wiki)
console.log(country.name.common, '(country) infobox', wiki.infobox)
if (wiki.infobox && wiki.infobox.image_flag && wiki.infobox.image_flag.text) {
console.log(country.name.common, '(country) flag', wiki.infobox.image_flag.text)
}
resolve(wiki.infobox)
})
}
console.log(country.name.common, 'infobox', wiki.infobox)
if (wiki.infobox && wiki.infobox.image_flag && wiki.infobox.image_flag.text) {
wtf_wikipedia.from_api(country.name.common, 'en', function (markup) {
console.log(markup)
var wiki = wtf_wikipedia.parse(markup)
if (wiki.type === 'disambiguation') {
console.log(country.name.common, 'disambiguation. fetching flag from +(country)')
return wtf_wikipedia.from_api(country.name.common + ' (country)', 'en', function (markup) {
var wiki = wtf_wikipedia.parse(markup)
console.log(country.name.common, '(country) wiki', wiki)
console.log(country.name.common, '(country) infobox', wiki.infobox)
if (wiki.infobox && wiki.infobox.image_flag && wiki.infobox.image_flag.text) {
console.log(country.name.common, '(country) flag', wiki.infobox.image_flag.text)
}
resolve(wiki.infobox)
})
}
console.log(country.name.common, 'infobox', wiki.infobox)
if (wiki.infobox && wiki.infobox.image_flag && wiki.infobox.image_flag.text) {
console.log(country.name.common, 'flag', wiki.infobox.image_flag.text)
country.flag = 'https://en.m.wikipedia.org/wiki/File:' + wiki.infobox.image_flag.text
}
resolve(wiki.infobox)
})
const fetch_page = function (title, cb) {
wtf_wikipedia.from_api(title, lang, function (markup) {
let text = wtf_wikipedia.plaintext(markup) || '';
let filename = __dirname + '/corpus/' + title + '.txt';
fs.writeFileSync(filename, text, 'utf8')
let mb = (fs.statSync(filename).size || 0) / 1000000.0;
console.log(title + ' - ' + mb.toFixed(2) + 'mb');
cb(null, '');
});
};
return new Promise(resolve => {
if (state.debug) {
console.log('ActionWikipedia'.bold.yellow, `concept: ${concept}`);
}
if (!concept) resolve(state);
wikipedia.from_api(concept, 'en', (response) => {
const document = wikipedia.parse(response);
if (document.type === 'page' && document.categories.length > 0) {
const summary = document.text.Intro.map(sentence => sentence.text).join(' ');
state.action = {
ms: (new Date() - ms),
engine: 'wikipedia',
entity: entities.knowledge,
image: `http://en.wikipedia.org/wiki/${document.images[0]}`,
title: document.infobox.name ? document.infobox.name.text : concept,
value: summary,
related: extract(document.infobox),
};
resolve(state);
}
names.forEach(function(name) {
WikipediaApi.from_api(name, 'en', function(markup) {
if(!markup){ console.log(name); return;}
var id = wikis[name][0];
var fullName = name;
var occupation = parseJob(markup);
var extract = parseExtract(markup);
var url = 'http://en.wikipedia.org/wiki/' + encodeURIComponent(fullName);
var update = {
'id': id,
'wikipedia': {
'fullName': fullName,
'occupation': occupation,
'extract': extract,
'url': url
}
};