Skip to content

Commit

Permalink
Add 'hidden' state to dkan_publishing workflow (round 2) (#3742)
Browse files Browse the repository at this point in the history
  • Loading branch information
Clayton Liddell authored Jan 26, 2022
1 parent d206040 commit 0471fae
Show file tree
Hide file tree
Showing 31 changed files with 959 additions and 473 deletions.
302 changes: 66 additions & 236 deletions cypress/integration/01_metastore.spec.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion cypress/integration/08_admin_views.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ context('Admin content and dataset views', () => {
cy.get('h1').should('have.text', 'Create Data')
})

it('User can archive, publish, and edit, and delete a dataset. The edit link on the admin view should go to the json form.', () => {
it('User can archive, publish, edit, and delete a dataset. The edit link on the admin view should go to the json form.', () => {
// Create a dataset.
cy.visit(baseurl + "/node/add/data")
cy.wait(2000)
Expand Down
163 changes: 163 additions & 0 deletions cypress/integration/10_workflow_transitions.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
import * as dkan from '../support/helpers/dkan'

context('Draft datasets', () => {
beforeEach(() => cy.drupalLogin('testeditor', 'testeditor'))

it('Draft datasets are hidden from the catalog until published.', () => {
// Create draft dataset
const dataset_title = dkan.generateRandomString()
dkan.createDatasetWithModerationState(dataset_title, 'draft')
cy.get('@datasetId').then(datasetId => {

// Ensure dataset is hidden from catalog
dkan.searchMetastore({fulltext: dataset_title, facets: ''}).then((response) => {
expect(response.status).to.eq(200)
expect(response.body.results).to.be.empty
})

// Ensure dataset details are not available when directly visited
cy.request({
url: '/api/1/metastore/schemas/dataset/items/' + datasetId,
failOnStatusCode: false
}).should((response) => {
expect(response.status).to.eq(404)
expect(response.body.message).to.contain(datasetId + ' not found')
})

// Publish the draft dataset
cy.get('@nodeId').then((nodeId) => {
cy.visit('/node/' + nodeId + '/edit')
})
cy.get('h1.page-title').should('contain', dataset_title)
cy.get('#edit-moderation-state-0-state').select('published')
cy.get('#edit-submit').click()
cy.get('.messages--status').should('contain', 'has been updated')

// Ensure dataset is visible via public API with correct title
cy.request('/api/1/metastore/schemas/dataset/items/' + datasetId).should((response) => {
expect(response.status).to.eq(200)
expect(response.body.title).to.eq(dataset_title)
})

// Ensure dataset is present in catalog
dkan.searchMetastore({fulltext: dataset_title, facets: ''}).then((response) => {
expect(response.status).to.eq(200)
expect(response.body.total).to.eq('1')
})
})
})
})

context('Archived datasets', () => {
beforeEach(() => cy.drupalLogin('testeditor', 'testeditor'))

it('Existing datasets which are archived cannot be visited, and are hidden from the catalog.', () => {
// Create published dataset
const dataset_title = dkan.generateRandomString()
dkan.createDatasetWithModerationState(dataset_title, 'published')
cy.get('@datasetId').then(datasetId => {

// Ensure dataset is visible via public API with correct title
cy.request('/api/1/metastore/schemas/dataset/items/' + datasetId).should((response) => {
expect(response.status).to.eq(200)
expect(response.body.title).to.eq(dataset_title)
})

// Ensure dataset is present in catalog
dkan.searchMetastore({fulltext: dataset_title, facets: ''}).then((response) => {
expect(response.status).to.eq(200)
expect(response.body.total).to.eq('1')
})

// Archive the published dataset
cy.get('@nodeId').then((nodeId) => {
cy.visit('/node/' + nodeId + '/edit')
})
cy.get('h1.page-title').should('contain', dataset_title)
cy.get('#edit-moderation-state-0-state').select('archived')
cy.get('#edit-submit').click()
cy.get('.messages--status').should('contain', 'has been updated')

// Ensure dataset is hidden from catalog
dkan.searchMetastore({fulltext: dataset_title, facets: ''}).then((response) => {
expect(response.status).to.eq(200)
expect(response.body.results).to.be.empty
})

// Ensure dataset details are not available when directly visited
cy.request({
url: '/api/1/metastore/schemas/dataset/items/' + datasetId,
failOnStatusCode: false
}).should((response) => {
expect(response.status).to.eq(404)
expect(response.body.message).to.contain(datasetId + ' not found')
})
})
})
})

context('Hidden datasets', () => {
beforeEach(() => cy.drupalLogin('testeditor', 'testeditor'))

it('Newly created hidden datasets are visible when visited directly, but hidden from the catalog.', () => {
// create hidden dataset
const dataset_title = dkan.generateRandomString()
dkan.createDatasetWithModerationState(dataset_title, 'hidden')
cy.get('@datasetId').then(datasetId => {

// Ensure dataset is visible via public API with correct title
cy.request('/api/1/metastore/schemas/dataset/items/' + datasetId).should((response) => {
expect(response.status).to.eq(200)
expect(response.body.title).to.eq(dataset_title)
})

// Ensure dataset is hidden from catalog
dkan.searchMetastore({fulltext: dataset_title, facets: ''}).then((response) => {
expect(response.status).to.eq(200)
expect(response.body.results).to.be.empty
})
})
})

it('Existing datasets which are transitioned to hidden are visible when visited directly, but hidden from the catalog.', () => {
// create published dataset
const dataset_title = dkan.generateRandomString()
// Create a new published dataset in UI and get the resulting UUID
dkan.createDatasetWithModerationState(dataset_title, 'published')
cy.get('@datasetId').then(datasetId => {

// Ensure dataset is visible via public API with correct title
cy.request('/api/1/metastore/schemas/dataset/items/' + datasetId).should((response) => {
expect(response.status).to.eq(200)
expect(response.body.title).to.eq(dataset_title)
})

// Ensure dataset is visible in search
dkan.searchMetastore({fulltext: dataset_title, facets: ''}).then((response) => {
expect(response.status).to.eq(200)
expect(response.body.total).to.eq('1')
})

// Set the dataset workflow state to hidden
cy.get('@nodeId').then((nodeId) => {
cy.visit('/node/' + nodeId + '/edit')
})
cy.get('h1.page-title').should('contain', dataset_title)
cy.get('#edit-moderation-state-0-state').select('hidden')
cy.get('#edit-submit').click()
cy.get('.messages--status').should('contain', 'has been updated')

// Ensure dataset is now hidden from search
dkan.searchMetastore({fulltext: dataset_title, facets: ''}).then((response) => {
expect(response.status).to.eq(200)
expect(response.body.results).to.be.empty
})

// Ensure hidden dataset details are still available via public API
cy.request('/api/1/metastore/schemas/dataset/items/' + datasetId).should((response) => {
expect(response.status).to.eq(200)
expect(response.body.title).to.eq(dataset_title)
})
})
})
})
11 changes: 9 additions & 2 deletions cypress/plugins/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,13 @@ module.exports = (on, config) => {

return launchOptions
})
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config

// Provide log task for debugging. eg cy.task('log', myValue)
on('task', {
log(message) {
console.log(message)

return null
},
})
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
/**
* Drupal Collection
*/
Cypress.Commands.add("drupalLogin", (user, password) => {
// login as a given drupal user
Cypress.Commands.add('drupalLogin', (user, password) => {
return cy.request({
method: 'POST',
url: '/user/login',
Expand All @@ -14,11 +12,13 @@ Cypress.Commands.add("drupalLogin", (user, password) => {
});
});

// logout of drupal
Cypress.Commands.add('drupalLogout', () => {
return cy.request('/user/logout');
});

Cypress.Commands.add("drupalDrushCommand", (command) => {
// Run the supplied drush command
Cypress.Commands.add('drupalDrushCommand', (command) => {
var cmd = Cypress.env('drupalDrushCmdLine');

if (cmd == null) {
Expand Down
Loading

0 comments on commit 0471fae

Please sign in to comment.