37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
const { getTestConfig } = require( './test-config' );
|
|
const { HTTPClientFactory } = require('@woocommerce/api');
|
|
|
|
/**
|
|
* Uses the WordPress API to update the Ready page's status.
|
|
*
|
|
* @param {string} status | Status to update the page to. One of: publish, future, draft, pending, private
|
|
*/
|
|
const updateReadyPageStatus = async ( status ) => {
|
|
const testConfig = getTestConfig();
|
|
|
|
const apiUrl = testConfig.url;
|
|
const wpPagesEndpoint = '/wp/v2/pages';
|
|
const adminUsername = testConfig.users.admin.username ? testConfig.users.admin.username : 'admin';
|
|
const adminPassword = testConfig.users.admin.password ? testConfig.users.admin.password : 'password';
|
|
const client = HTTPClientFactory.build(apiUrl)
|
|
.withBasicAuth(adminUsername, adminPassword)
|
|
.create();
|
|
|
|
// As the default status filter in the API is `publish`, we need to
|
|
// filter based on the supplied status otherwise no results are returned.
|
|
let statusFilter = 'publish';
|
|
if ( 'publish' === status ) {
|
|
// The page will be in a draft state, so we need to filter on that status
|
|
statusFilter = 'draft';
|
|
}
|
|
|
|
const getPostsResponse = await client.get(`${wpPagesEndpoint}?search=ready&status=${statusFilter}`);
|
|
if ( getPostsResponse.data && getPostsResponse.data.length > 0) {
|
|
const pageId = getPostsResponse.data[0].id;
|
|
// Update the page to the new status
|
|
await client.post(`${wpPagesEndpoint}/${pageId}`, { 'status': status });
|
|
}
|
|
}
|
|
|
|
module.exports = updateReadyPageStatus;
|