@@ -26,6 +26,7 @@ const extensions = ['amp-story:1.0', 'amp-audio'];
2626
2727describes . realWin ( 'amp-story-page' , { amp : { extensions} } , ( env ) => {
2828 let win ;
29+ let ampDoc ;
2930 let element ;
3031 let html ;
3132 let gridLayerEl ;
@@ -76,7 +77,8 @@ describes.realWin('amp-story-page', {amp: {extensions}}, (env) => {
7677
7778 element = win . document . createElement ( 'amp-story-page' ) ;
7879 gridLayerEl = win . document . createElement ( 'amp-story-grid-layer' ) ;
79- element . getAmpDoc = ( ) => new AmpDocSingle ( win ) ;
80+ ampDoc = new AmpDocSingle ( win ) ;
81+ element . getAmpDoc = ( ) => ampDoc ;
8082 const signals = new Signals ( ) ;
8183 element . signals = ( ) => signals ;
8284 element . appendChild ( gridLayerEl ) ;
@@ -805,4 +807,88 @@ describes.realWin('amp-story-page', {amp: {extensions}}, (env) => {
805807 } ) ;
806808 } ) ;
807809 } ) ;
810+
811+ describe ( 'auto-advance-after' , async ( ) => {
812+ beforeEach ( ( ) => {
813+ env . sandbox . stub ( ampDoc , 'isPreview' ) . returns ( true ) ;
814+ expect ( element . getAttribute ( 'auto-advance-after' ) ) . to . be . equal ( null ) ;
815+ } ) ;
816+
817+ it (
818+ 'should use the default advancement value when auto-advance-after is ' +
819+ 'unspecified' ,
820+ ( ) => {
821+ page . buildCallback ( ) ;
822+
823+ expect ( element . getAttribute ( 'auto-advance-after' ) ) . to . be . equal ( '5s' ) ;
824+ }
825+ ) ;
826+
827+ it ( 'should use the specified previewSecondsPerPage value' , ( ) => {
828+ const viewer = Services . viewerForDoc ( element ) ;
829+ stubWithArg ( viewer , 'getParam' , 'previewSecondsPerPage' , '3' ) ;
830+
831+ page . buildCallback ( ) ;
832+
833+ expect ( element . getAttribute ( 'auto-advance-after' ) ) . to . be . equal ( '3s' ) ;
834+ } ) ;
835+
836+ it ( 'should ignore max-video-preview when the page has no video' , ( ) => {
837+ const viewer = Services . viewerForDoc ( element ) ;
838+ stubWithArg ( viewer , 'getParam' , 'previewSecondsPerPage' , '3' ) ;
839+ stubWithArg ( ampDoc , 'getMetaByName' , 'robots' , 'max-video-preview: 2' ) ;
840+
841+ page . buildCallback ( ) ;
842+
843+ expect ( element . getAttribute ( 'auto-advance-after' ) ) . to . be . equal ( '3s' ) ;
844+ } ) ;
845+
846+ it (
847+ 'should override the previewSecondsPerPage value with the ' +
848+ 'max-video-preview value' ,
849+ ( ) => {
850+ const viewer = Services . viewerForDoc ( element ) ;
851+ stubWithArg ( viewer , 'getParam' , 'previewSecondsPerPage' , '3' ) ;
852+ stubWithArg ( ampDoc , 'getMetaByName' , 'robots' , 'max-video-preview: 2' ) ;
853+ appendAmpVideo ( ) ;
854+
855+ page . buildCallback ( ) ;
856+
857+ expect ( element . getAttribute ( 'auto-advance-after' ) ) . to . be . equal ( '2s' ) ;
858+ }
859+ ) ;
860+
861+ it ( 'should be unaffected by a max-video-preview value of -1' , ( ) => {
862+ const viewer = Services . viewerForDoc ( element ) ;
863+ stubWithArg ( viewer , 'getParam' , 'previewSecondsPerPage' , '3' ) ;
864+ stubWithArg ( ampDoc , 'getMetaByName' , 'robots' , 'max-video-preview: -1' ) ;
865+ appendAmpVideo ( ) ;
866+
867+ page . buildCallback ( ) ;
868+
869+ expect ( element . getAttribute ( 'auto-advance-after' ) ) . to . be . equal ( '3s' ) ;
870+ } ) ;
871+
872+ it ( 'should be unaffected by a max-video-preview value of 0' , ( ) => {
873+ const viewer = Services . viewerForDoc ( element ) ;
874+ stubWithArg ( viewer , 'getParam' , 'previewSecondsPerPage' , '3' ) ;
875+ stubWithArg ( ampDoc , 'getMetaByName' , 'robots' , 'max-video-preview: 0' ) ;
876+ appendAmpVideo ( ) ;
877+
878+ page . buildCallback ( ) ;
879+
880+ expect ( element . getAttribute ( 'auto-advance-after' ) ) . to . be . equal ( '3s' ) ;
881+ } ) ;
882+
883+ function stubWithArg ( object , functionName , arg , returnValue ) {
884+ env . sandbox . stub ( object , functionName ) . withArgs ( arg ) . returns ( returnValue ) ;
885+ }
886+
887+ /**
888+ * Appends an AMP video to the document
889+ */
890+ function appendAmpVideo ( ) {
891+ gridLayerEl . appendChild ( win . document . createElement ( 'amp-video' ) ) ;
892+ }
893+ } ) ;
808894} ) ;
0 commit comments