2021-06-08 01:23:25 +05:30
import { shallowMount } from '@vue/test-utils' ;
import Feature from '~/whats_new/components/feature.vue' ;
describe ( "What's new single feature" , ( ) => {
/** @type {import("@vue/test-utils").Wrapper} */
let wrapper ;
const exampleFeature = {
title : 'Compliance pipeline configurations' ,
body :
2021-09-04 01:27:46 +05:30
'<p data-testid="body-content">We are thrilled to announce that it is now possible to define enforceable pipelines that will run for any project assigned a corresponding <a href="https://en.wikipedia.org/wiki/Compliance_(psychology)" target="_blank" rel="noopener noreferrer" onload="alert(xss)">compliance</a> framework.</p>' ,
2021-06-08 01:23:25 +05:30
stage : 'Manage' ,
'self-managed' : true ,
'gitlab-com' : true ,
packages : [ 'Ultimate' ] ,
url : 'https://docs.gitlab.com/ee/user/project/settings/#compliance-pipeline-configuration' ,
image _url : 'https://img.youtube.com/vi/upLJ_equomw/hqdefault.jpg' ,
published _at : '2021-04-22T00:00:00.000Z' ,
release : '13.11' ,
} ;
const findReleaseDate = ( ) => wrapper . find ( '[data-testid="release-date"]' ) ;
2021-09-04 01:27:46 +05:30
const findBodyAnchor = ( ) => wrapper . find ( '[data-testid="body-content"] a' ) ;
2021-06-08 01:23:25 +05:30
const createWrapper = ( { feature } = { } ) => {
wrapper = shallowMount ( Feature , {
propsData : { feature } ,
} ) ;
} ;
afterEach ( ( ) => {
wrapper . destroy ( ) ;
wrapper = null ;
} ) ;
it ( 'renders the date' , ( ) => {
createWrapper ( { feature : exampleFeature } ) ;
expect ( findReleaseDate ( ) . text ( ) ) . toBe ( 'April 22, 2021' ) ;
} ) ;
describe ( 'when the published_at is null' , ( ) => {
it ( "doesn't render the date" , ( ) => {
createWrapper ( { feature : { ... exampleFeature , published _at : null } } ) ;
expect ( findReleaseDate ( ) . exists ( ) ) . toBe ( false ) ;
} ) ;
} ) ;
2021-09-04 01:27:46 +05:30
it ( 'safe-html config allows target attribute on elements' , ( ) => {
createWrapper ( { feature : exampleFeature } ) ;
expect ( findBodyAnchor ( ) . attributes ( ) ) . toEqual ( {
href : expect . any ( String ) ,
rel : 'noopener noreferrer' ,
target : '_blank' ,
} ) ;
} ) ;
2021-06-08 01:23:25 +05:30
} ) ;