99 lines
2.7 KiB
JavaScript
99 lines
2.7 KiB
JavaScript
|
|
import { Given, When, Then, Before } from '@cucumber/cucumber';
|
||
|
|
import { expect } from 'chai';
|
||
|
|
|
||
|
|
// Shared state (simulating useState behavior)
|
||
|
|
const sharedState = { pageName: '' };
|
||
|
|
|
||
|
|
// Simple mock of usePageTitle behavior for Cucumber tests
|
||
|
|
// This simulates the useState() sharing behavior
|
||
|
|
const createPageTitleMock = () => {
|
||
|
|
return {
|
||
|
|
get title() {
|
||
|
|
return {
|
||
|
|
get value() {
|
||
|
|
return sharedState.pageName.length > 0 ? `${sharedState.pageName} - Tímmál` : 'Tímmál';
|
||
|
|
},
|
||
|
|
};
|
||
|
|
},
|
||
|
|
get pageName() {
|
||
|
|
return {
|
||
|
|
get value() {
|
||
|
|
return sharedState.pageName;
|
||
|
|
},
|
||
|
|
};
|
||
|
|
},
|
||
|
|
setPageName(newName) {
|
||
|
|
sharedState.pageName = newName;
|
||
|
|
},
|
||
|
|
};
|
||
|
|
};
|
||
|
|
|
||
|
|
// Instance for step definitions
|
||
|
|
let pageTitleInstance;
|
||
|
|
const userInstances = new Map();
|
||
|
|
|
||
|
|
Before(function () {
|
||
|
|
// Reset shared state before each scenario
|
||
|
|
sharedState.pageName = '';
|
||
|
|
userInstances.clear();
|
||
|
|
pageTitleInstance = null;
|
||
|
|
});
|
||
|
|
|
||
|
|
Given('the page title system is initialized', function () {
|
||
|
|
pageTitleInstance = createPageTitleMock();
|
||
|
|
pageTitleInstance.setPageName('');
|
||
|
|
});
|
||
|
|
|
||
|
|
When('I first load the application', function () {
|
||
|
|
pageTitleInstance = createPageTitleMock();
|
||
|
|
});
|
||
|
|
|
||
|
|
When('I navigate to the {string} page', function (pageName) {
|
||
|
|
if (!pageTitleInstance) {
|
||
|
|
pageTitleInstance = createPageTitleMock();
|
||
|
|
}
|
||
|
|
pageTitleInstance.setPageName(pageName);
|
||
|
|
});
|
||
|
|
|
||
|
|
When('I clear the page name', function () {
|
||
|
|
pageTitleInstance.setPageName('');
|
||
|
|
});
|
||
|
|
|
||
|
|
Given('I am on the {string} page', function (pageName) {
|
||
|
|
if (!pageTitleInstance) {
|
||
|
|
pageTitleInstance = createPageTitleMock();
|
||
|
|
}
|
||
|
|
pageTitleInstance.setPageName(pageName);
|
||
|
|
});
|
||
|
|
|
||
|
|
Given('the page title is {string}', function (expectedTitle) {
|
||
|
|
expect(pageTitleInstance.title.value).to.equal(expectedTitle);
|
||
|
|
});
|
||
|
|
|
||
|
|
Given('user {string} sets the page name to {string}', function (userName, pageName) {
|
||
|
|
let userInstance = userInstances.get(userName);
|
||
|
|
if (!userInstance) {
|
||
|
|
userInstance = createPageTitleMock();
|
||
|
|
userInstances.set(userName, userInstance);
|
||
|
|
}
|
||
|
|
userInstance.setPageName(pageName);
|
||
|
|
});
|
||
|
|
|
||
|
|
When('user {string} checks the page title', function (userName) {
|
||
|
|
let userInstance = userInstances.get(userName);
|
||
|
|
if (!userInstance) {
|
||
|
|
userInstance = createPageTitleMock();
|
||
|
|
userInstances.set(userName, userInstance);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
Then('the page title should be {string}', function (expectedTitle) {
|
||
|
|
expect(pageTitleInstance.title.value).to.equal(expectedTitle);
|
||
|
|
});
|
||
|
|
|
||
|
|
Then('user {string} should see {string}', function (userName, expectedTitle) {
|
||
|
|
const userInstance = userInstances.get(userName);
|
||
|
|
expect(userInstance).to.not.be.undefined;
|
||
|
|
expect(userInstance.title.value).to.equal(expectedTitle);
|
||
|
|
});
|