import { AdminPluginPage } from '../po/admin-plugin.po' ; import { LoginPage } from '../po/login.po' ; import { VideoUploadPage } from '../po/video-upload.po' ; import { getCheckbox , waitServerUp } from '../utils' ; describe ( 'Plugins' , ( ) => { let videoUploadPage ; let loginPage ; let adminPluginPage ; function getPluginCheckbox ( ) { return getCheckbox ( 'hello-world-field-4' ) ; } async function expectSubmitState ( { disabled } ) { const disabledSubmit = await $ ( 'my-button .disabled' ) ; if ( disabled ) expect ( await disabledSubmit . isDisplayed ( ) ) . toBeTruthy ( ) ; else expect ( await disabledSubmit . isDisplayed ( ) ) . toBeFalsy ( ) ; } before ( async ( ) => { await waitServerUp ( ) ; } ) ; beforeEach ( async ( ) => { loginPage = new LoginPage ( ) ; videoUploadPage = new VideoUploadPage ( ) ; adminPluginPage = new AdminPluginPage ( ) ; await browser . maximizeWindow ( ) ; } ) ; it ( 'Should install hello world plugin' , async ( ) => { await loginPage . loginAsRootUser ( ) ; await adminPluginPage . navigateToSearch ( ) ; await adminPluginPage . search ( 'hello-world' ) ; await adminPluginPage . installHelloWorld ( ) ; await browser . refresh ( ) ; } ) ; it ( 'Should have checkbox in video edit page' , async ( ) => { await videoUploadPage . navigateTo ( ) ; await videoUploadPage . uploadVideo ( ) ; await $ ( 'span=Super field 4 in main tab' ) . waitForDisplayed ( ) ; const checkbox = await getPluginCheckbox ( ) ; expect ( await checkbox . isDisplayed ( ) ) . toBeTruthy ( ) ; await expectSubmitState ( { disabled : true } ) ; } ) ; it ( 'Should check the checkbox and be able to submit the video' , async function ( ) { const checkbox = await getPluginCheckbox ( ) ; await checkbox . click ( ) ; await expectSubmitState ( { disabled : false } ) ; } ) ; it ( 'Should uncheck the checkbox and not be able to submit the video' , async function ( ) { const checkbox = await getPluginCheckbox ( ) ; await checkbox . click ( ) ; await expectSubmitState ( { disabled : true } ) ; const error = await $ ( '.form-error*=Should be enabled' ) ; expect ( await error . isDisplayed ( ) ) . toBeTruthy ( ) ; } ) ; it ( 'Should change the privacy and should hide the checkbox' , async function ( ) { await videoUploadPage . setAsPrivate ( ) ; await expectSubmitState ( { disabled : false } ) ; } ) ; } ) ;