Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions cypress/e2e/linked-data/LD Edit/classification-marc.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -203,35 +203,35 @@ describe('Citation: check classification number MARC codes', () => {
// Review editor sections
EditResource.clickEditWork();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_WORK);
EditResource.checkDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkSectionDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkTextValueOnField(resourceData.dewey1Number, fieldData.classificationNumber);
EditResource.checkTextValueOnField(resourceData.dewey1Additional, fieldData.classificationAdditional);
EditResource.checkTextValueOnField(resourceData.dewey1Edition, fieldData.classificationEdition);
EditResource.checkTextValueOnField(resourceData.dewey1Full, fieldData.classificationFull);
EditResource.checkTextValueOnDisabledField(resourceData.dnlmAgency, fieldData.classificationAssigner);
EditResource.checkDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkSectionDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkTextValueOnField(resourceData.dewey2Number, fieldData.classificationNumber);
EditResource.checkTextValueOnField(resourceData.dewey2Additional, fieldData.classificationAdditional);
EditResource.checkTextValueOnField(resourceData.dewey2Edition, fieldData.classificationEdition);
EditResource.checkTextValueOnField(resourceData.dewey2Full, fieldData.classificationFull);
EditResource.checkTextValueOnDisabledField(resourceData.assigningAgency, fieldData.classificationAssigner);
EditResource.checkDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkSectionDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkTextValueOnField(resourceData.dewey3Number, fieldData.classificationNumber);
EditResource.checkTextValueOnField(resourceData.dewey3Additional, fieldData.classificationAdditional);
EditResource.checkTextValueOnField(resourceData.dewey3Edition, fieldData.classificationEdition);
EditResource.checkTextValueOnField(resourceData.dewey3Full, fieldData.classificationFull);
EditResource.checkTextValueOnDisabledField(resourceData.caoonlAgency, fieldData.classificationAssigner);
EditResource.checkDropdownTextValue(fieldData.lccn, fieldData.classificationType);
EditResource.checkSectionDropdownTextValue(fieldData.lccn, fieldData.classificationType);
EditResource.checkTextValueOnField(resourceData.lccn1Number, fieldData.classificationNumber);
EditResource.checkTextValueOnField(resourceData.lccn1Additional, fieldData.classificationAdditional);
EditResource.checkTextValueOnDisabledField(resourceData.assigningAgency, fieldData.classificationAgency);
EditResource.checkLabelOnSimpleField(resourceData.lccn1Used, fieldData.classificationUsed);
EditResource.checkDropdownTextValue(fieldData.lccn, fieldData.classificationType);
EditResource.checkSectionDropdownTextValue(fieldData.lccn, fieldData.classificationType);
EditResource.checkTextValueOnField(resourceData.lccn2Number, fieldData.classificationNumber);
EditResource.checkTextValueOnField(resourceData.lccn2Additional, fieldData.classificationAdditional);
EditResource.checkTextValueOnDisabledField(resourceData.assigningAgency, fieldData.classificationAgency);
EditResource.checkLabelOnSimpleField(resourceData.lccn2Used, fieldData.classificationUsed);
EditResource.checkDropdownTextValue(fieldData.lccn, fieldData.classificationType);
EditResource.checkSectionDropdownTextValue(fieldData.lccn, fieldData.classificationType);
EditResource.checkTextValueOnField(resourceData.lccn3Number, fieldData.classificationNumber);
EditResource.checkTextValueOnField(resourceData.lccn3Additional, fieldData.classificationAdditional);
EditResource.checkTextValueOnDisabledField('', fieldData.classificationAgency);
Expand Down Expand Up @@ -283,7 +283,7 @@ describe('Citation: check classification number MARC codes', () => {
SearchAndFilter.checkSearchResultsByTitle(resourceData.marigoldTitle);
Marigold.clickEditWorkFromSearch();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_WORK);
EditResource.checkDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkSectionDropdownTextValue(fieldData.dewey, fieldData.classificationType);
EditResource.checkTextValueOnField(resourceData.marigoldDeweyNumber, fieldData.classificationNumber);
EditResource.checkTextValueOnField(resourceData.marigoldDeweyAdditional, fieldData.classificationAdditional);
EditResource.checkTextValueOnField(resourceData.marigoldDeweyEdition, fieldData.classificationEdition);
Expand Down
221 changes: 221 additions & 0 deletions cypress/e2e/linked-data/LD Edit/language-code-marc.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
import {
APPLICATION_NAMES,
DEFAULT_JOB_PROFILE_NAMES,
EDIT_RESOURCE_HEADINGS,
} from '../../../support/constants';
import CapabilitySets from '../../../support/dictionary/capabilitySets';
import getRandomPostfix from '../../../support/utils/stringTools';
import FileManager from '../../../support/utils/fileManager';

import DataImport from '../../../support/fragments/data_import/dataImport';
import InventoryInstance from '../../../support/fragments/inventory/inventoryInstance';
import InventoryInstances from '../../../support/fragments/inventory/inventoryInstances';
import InstanceRecordEdit from '../../../support/fragments/inventory/instanceRecordEdit';
import InventorySearchAndFilter from '../../../support/fragments/inventory/inventorySearchAndFilter';
import TopMenu from '../../../support/fragments/topMenu';
import TopMenuNavigation from '../../../support/fragments/topMenuNavigation';
import Users from '../../../support/fragments/users/users';

import EditResource from '../../../support/fragments/linked-data/editResource';
import InstanceProfileModal from '../../../support/fragments/linked-data/instanceProfileModal';
import Marigold from '../../../support/fragments/linked-data/marigold';
import PreviewResource from '../../../support/fragments/linked-data/previewResource';
import SearchAndFilter from '../../../support/fragments/linked-data/searchAndFilter';
import ViewMarc from '../../../support/fragments/linked-data/viewMarc';
import Work from '../../../support/fragments/linked-data/work';
import WorkProfileModal from '../../../support/fragments/linked-data/workProfileModal';

import {
MARIGOLD_CAPABILITIES,
MARIGOLD_CAPABILITY_SETS,
} from '../../../support/dictionary/marigoldCapabilities';

let user;

describe('Citation: check language MARC codes', () => {
const testData = {
workId: null,
instanceId: null,
marcFilePath: 'marcFileForC499692.mrc',
modifiedMarcFile: `C499692 editedMarcFile${getRandomPostfix()}.mrc`,
marcFileName: `C499692 marcFile${getRandomPostfix()}.mrc`,
uniqueInventoryTitle: `Language code inventory ${getRandomPostfix()}`,
uniqueMarigoldWorkTitle: `Lanuage code Marigold ${getRandomPostfix()}`,
uniqueMarigoldInstanceTitle: `Lanuage code Marigold ${getRandomPostfix()}`,
};

const resourceData = {
inventoryTitle: testData.uniqueInventoryTitle,
marigoldWorkTitle: testData.uniqueMarigoldWorkTitle,
marigoldInstanceTitle: testData.uniqueMarigoldInstanceTitle,
language: 'English',
languageCode: 'eng',
languageRel: 'Primary source language',
languageLink: 'http://id.loc.gov/vocabulary/languages/eng',
languageSelect: 'English (eng)',
marcLanguageCode: '$a eng',
marc008LangPosition: 36,
languagesSubset: [
'Akkadian (akk)',
'Bemba (bem)',
'Croatian (hrv)',
'Kanuri (kau)',
'Nepali (nep)',
'Uighur (uig)',
'Zaza (zza)',
],
languageRelationships: [
'Primary source language',
'Summary or abstract',
'Sung or spoken text',
'Librettos',
'Table of contents',
'Accompanying material other than librettos and transcripts',
'Original language',
'Intertitles',
'Subtitles',
'Intermediate translation',
'Original accompanying materials other than librettos',
'Original libretto',
'Captions',
'Accessible audio',
'Accessible visual language (non-textual)',
'Accompanying transcripts for audiovisual material',
],
};

const fieldData = {
languageSection: 'Language code',
languageField: 'Language',
languageRelField: 'Language relationship',
workTitle: 'Preferred Title for Work',
instanceTitle: 'Main Title',
ldSource: 'LINKED_DATA',
};

before('Create test data', () => {
DataImport.editMarcFile(
testData.marcFilePath,
testData.modifiedMarcFile,
['Placeholder Title Language Code'],
[testData.uniqueInventoryTitle],
);
cy.getAdminToken();

cy.createTempUser([]).then((userProperties) => {
user = userProperties;
cy.assignCapabilitiesToExistingUser(
user.userId,
MARIGOLD_CAPABILITIES,
[
...MARIGOLD_CAPABILITY_SETS,
CapabilitySets.uiInventoryInstanceView,
CapabilitySets.uiInventoryInstanceEdit,
],
);
});

DataImport.uploadFileViaApi(
testData.modifiedMarcFile,
testData.marcFileName,
DEFAULT_JOB_PROFILE_NAMES.CREATE_INSTANCE_AND_SRS,
);
});

after('Delete test data', () => {
FileManager.deleteFile(`cypress/fixtures/${testData.modifiedMarcFile}`);
cy.getAdminToken();
InventoryInstances.deleteFullInstancesByTitleViaApi(resourceData.inventoryTitle);
InventoryInstances.deleteFullInstancesByTitleViaApi(resourceData.marigoldInstanceTitle);
Work.getInstancesByTitle(resourceData.inventoryTitle).then((instances) => {
const filteredInstances = instances.filter(
(element) => element.titles[0].value === resourceData.inventoryTitle,
);
Work.deleteById(filteredInstances[0].id);
});
Work.getIdByTitle(resourceData.inventoryTitle).then((id) => Work.deleteById(id));
if (testData.instanceId) Work.deleteInstanceViaApi(testData.instanceId);
if (testData.workId) Work.deleteById(testData.workId);
Users.deleteViaApi(user.userId);
});

beforeEach(() => {
cy.login(user.username, user.password, {
path: TopMenu.inventoryPath,
waiter: InventoryInstances.waitContentLoading,
authRefresh: true,
});
});

it(
'C499692 Marigold - Language Code Work / Inventory / View MARC',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add please 'C499692 Marigold - Language Code Work / Inventory / View MARC (citation)'

{ tags: ['criticalPath', 'citation', 'C499692', 'marigold'] },
() => {
// Edit instance from Inventory
InventoryInstances.searchByTitle(resourceData.inventoryTitle);
InventoryInstance.editInstanceInMG();
PreviewResource.waitLoading();
PreviewResource.clickContinue();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_INSTANCE);
EditResource.clickEditWork();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_WORK);

// Check work language fields
EditResource.checkLabelOnSimpleField(resourceData.languageSelect, fieldData.languageField);
EditResource.checkDropdownTextValue(resourceData.languageRel, fieldData.languageRelField);
EditResource.checkSimpleFieldDropdownContainsOptions(fieldData.languageField, resourceData.languagesSubset);
EditResource.checkDropdownContainsOptions(fieldData.languageRelField, resourceData.languageRelationships);

// Review MARC
EditResource.editInstanceFormViaActions();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_INSTANCE);
EditResource.viewMarc();
ViewMarc.waitLoading();
ViewMarc.checkMarcFieldContainsDataAtPosition('008', resourceData.marc008LangPosition, resourceData.languageCode);
ViewMarc.checkMarcFieldIndicators('041', ' ');
ViewMarc.checkMarcFieldContainsData('041', resourceData.marcLanguageCode);

// Create new work and instance
ViewMarc.closeMarcView();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_INSTANCE);
EditResource.clickCloseResourceButton();
Marigold.waitLoading();
Marigold.openNewResourceForm();
WorkProfileModal.waitLoading();
WorkProfileModal.selectDefaultOption();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.NEW_WORK);
EditResource.setValueForTheField(testData.uniqueMarigoldWorkTitle, fieldData.workTitle);
EditResource.setValueForSectionSimpleField(resourceData.languageSelect, fieldData.languageField);
// Primary source language is already the default language relationship selection
EditResource.saveAndKeepEditingWithId(({ resourceId }) => {
testData.workId = resourceId;
});
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_WORK);
EditResource.openNewInstanceFormViaNewInstanceButton();
InstanceProfileModal.waitLoading();
InstanceProfileModal.selectDefaultOption();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.NEW_INSTANCE);
EditResource.setValueForTheField(testData.uniqueMarigoldInstanceTitle, fieldData.instanceTitle);
EditResource.saveAndKeepEditingWithId(({ resourceId }) => {
testData.instanceId = resourceId;
});
EditResource.clickCloseResourceButton();

Marigold.waitLoading();
SearchAndFilter.searchResourceByTitle(resourceData.marigoldWorkTitle);
SearchAndFilter.verifySearchResultField(resourceData.languageCode);
SearchAndFilter.openSearchResultPreviewByTitle(resourceData.marigoldWorkTitle);
SearchAndFilter.waitPreviewLoading();
EditResource.checkPreviewSectionContainsLink(fieldData.languageSection, fieldData.languageField, resourceData.language, resourceData.languageLink);

// Review in inventory
TopMenuNavigation.navigateToApp(APPLICATION_NAMES.INVENTORY);
InventoryInstances.waitContentLoading();
InventorySearchAndFilter.bySource(fieldData.ldSource);
InventoryInstances.searchByTitle(resourceData.marigoldInstanceTitle);
InventoryInstance.editInstance();
InstanceRecordEdit.waitLoading();
InstanceRecordEdit.verifyLanguage(resourceData.language);
},
);
});
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import TopMenu from '../../../support/fragments/topMenu';
import Users from '../../../support/fragments/users/users';

import EditResource from '../../../support/fragments/linked-data/editResource';
import ExternalResourcePreview from '../../../support/fragments/linked-data/externalResourcePreview';
import PreviewResource from '../../../support/fragments/linked-data/previewResource';
import InstanceProfileModal from '../../../support/fragments/linked-data/instanceProfileModal';
import Marigold from '../../../support/fragments/linked-data/marigold';
import NewInstance from '../../../support/fragments/linked-data/newInstance';
Expand Down Expand Up @@ -98,8 +98,8 @@ describe('Citation: Statement of Responsibility - Inventory / View MARC', () =>
// Import MARC bib into Marigold
InventoryInstances.searchByTitle(testData.uniqueMarcTitle);
InventoryInstance.editInstanceInMG();
ExternalResourcePreview.waitLoading();
ExternalResourcePreview.clickContinueButton();
PreviewResource.waitLoading();
PreviewResource.clickContinue();
EditResource.waitLoading(EDIT_RESOURCE_HEADINGS.EDIT_INSTANCE);
EditResource.clickCloseResourceButton();

Expand Down
1 change: 1 addition & 0 deletions cypress/fixtures/marcFileForC499692.mrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
00182naa a2200073uu 4500001001400000005001700014008004100031245003600072in0000000070520260508181845.2260508| ||| | eng  aPlaceholder Title Language Code
7 changes: 7 additions & 0 deletions cypress/support/fragments/inventory/instanceRecordEdit.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ const staffSuppressCheckbox = Checkbox({ name: 'staffSuppress' });
const previoslyHeldCheckbox = Checkbox({ name: 'previouslyHeld' });
const setForDeletionChecbox = Checkbox({ name: 'deleted' });
const instanceStatusTerm = Select('Instance status term');
const descriptiveDataAccordion = Accordion('Descriptive data');
const languageSelect = Select('Language*');
const addStatisticalCodeButton = Button('Add statistical code');
const addNatureOfContentButton = Button('Add nature of content');
const addFormatsButton = Button('Add format');
Expand Down Expand Up @@ -645,6 +647,11 @@ export default {
cy.expect(Select('Nature of content term').has({ checkedOptionText: including(nature) }));
},

verifyLanguage(language) {
cy.do(descriptiveDataAccordion.clickHeader());
cy.expect(languageSelect.has({ checkedOptionText: including(language) }));
},

verifyParentInstance(title, hrid) {
cy.expect([
parentInstanceFieldSet
Expand Down
20 changes: 19 additions & 1 deletion cypress/support/fragments/linked-data/editResource.js
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,15 @@ export default {
).should('be.visible');
},

checkDropdownContainsOptions(field, optionLabels) {
cy.xpath(
`//div[text()="${field}"]/../following-sibling::div//select/option`
).then(($options) => {
const labels = [...$options].map(opt => opt.text);
expect(labels).to.include.members(optionLabels);
});
},

checkSectionDropdownContainsOptions(section, field, optionLabels, repeatPosition = 1) {
cy.xpath(
`(//div[text()='${section}']/../../div/following-sibling::div/div[@class="label" and text()="${field}"])[${repeatPosition}]/following-sibling::div/select/option`
Expand All @@ -353,7 +362,7 @@ export default {
const labels = [...$options].map(opt => opt.textContent);
expect(labels).to.include.members(optionLabels);
});
cy.do(Keyboard.escape());
cy.get('body').type('{esc}');
cy.wait(500);
},

Expand Down Expand Up @@ -486,6 +495,15 @@ export default {
},

checkDropdownTextValue(textValue, field) {
cy.xpath(`//div[text()="${field}"]/../following-sibling::div//select[@data-testid="dropdown-field"]`)
.filter((_selectIdx, selectBlock) => {
const opt = selectBlock.options[selectBlock.selectedIndex];
return opt && opt.text === textValue;
})
.should('have.length.at.least', 1);
},

checkSectionDropdownTextValue(textValue, field) {
cy.xpath(`//div[text()="${field}"]/following-sibling::div//select[@data-testid="dropdown-field"]`)
.filter((_selectIdx, selectBlock) => {
const opt = selectBlock.options[selectBlock.selectedIndex];
Expand Down
9 changes: 9 additions & 0 deletions cypress/support/fragments/linked-data/searchAndFilter.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,15 @@ export default {
});
},

verifySearchResultField(fieldValue) {
cy.get('[class*="search-result-entry-container"]')
.first()
.find('[class*="work-details-card"]')
.find('[class*="details"]')
.contains(fieldValue)
.should('exist');
},

verifyNoResultsFound() {
cy.get('[class*="search-result-entry-container"]').should('not.exist');
cy.get('[class*="item-search-content"]')
Expand Down