Skip to content
Snippets Groups Projects
Select Git revision
  • 2cc8b70e0d8c8acddbb9561a53505531a6607c96
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

VisualTest.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    VisualTest.php 7.38 KiB
    <?php
    
    /*
     * Copyright (C) 2010 - Marcus Lunzenauer <mlunzena@uos.de>
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License as
     * published by the Free Software Foundation; either version 2 of
     * the License, or (at your option) any later version.
     */
    
    require_once 'lib/models/SimpleORMap.class.php';
    require_once 'lib/models/OpenGraphURL.class.php';
    require_once 'lib/visual.inc.php';
    require_once 'lib/classes/Config.class.php';
    require_once 'lib/classes/SmileyFormat.php';
    
    class VisualFunctionsTest extends \Codeception\Test\Unit
    {
        public function setUp()
        {
            static $config = [
                'LOAD_EXTERNAL_MEDIA' => 'allow',
                'OPENGRAPH_ENABLE'    => false,
            ];
    
            Config::set(new Config($config));
    
            $GLOBALS['SMILEY_NO_DB'] = true;
            $GLOBALS['SYMBOL_SHORT'] = [];
        }
    
        public function tearDown()
        {
            $GLOBALS['SMILEY_NO_DB'] = false;
        }
    
        public function testFormatReady()
        {
            $expected = '<strong>some code</strong>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady('*some*code*'));
        }
    
        public function testHtmlReady()
        {
            $pairs = [
              'abc'    => 'abc',
              'äöü'    => 'äöü',
              '<'      => '&lt;',
              '"'      => '&quot;',
              "'"      => '&#039;',
              '&amp;'  => '&amp;amp;',
              '&#039;' => '&amp;#039;',
              ''       => '',
              NULL     => NULL
            ];
    
            foreach ($pairs as $string => $expected) {
              $this->assertEquals($expected, htmlReady($string));
            }
        }
    
        public function testFormatReadyTicket1255()
        {
            $input = "!\nHallo Welt";
            $expected = "!<br>Hallo Welt";
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testLine()
        {
            $input = "Test\n--\nTest";
            $expected = 'Test<br><hr class="content"><br>Test';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testHeading()
        {
            $input = '!!%%Überschrift%%';
            $expected = '<h3 class="content"><em>Überschrift</em></h3>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testBoldItalics()
        {
            $input = '**some %%code%%**';
            $expected = '<strong>some <em>code</em></strong>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testBigSmall()
        {
            $input = '++some --code--++';
            $expected = '<big>some <small>code</small></big>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testSimpleBoldItalics()
        {
            $input = '*bold*text* %some%italics%';
            $expected = '<strong>bold text</strong> <em>some italics</em>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testMissingClose()
        {
            $input = '**missing %%close';
            $expected = $this->wrap($input);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testCloseBeforeOpen()
        {
            $input = 'there is -}no markup{- here';
            $expected = $this->wrap($input);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testIncorrectNesting()
        {
            $input = '** test %% test ** test %%';
            $expected = '** test <em> test ** test </em>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testImage()
        {
            $input = '[img=Stud.IP-Logo]http://www.studip.de/logo.png';
            $expected = '<img src="http://www.studip.de/logo.png" style="" title="Stud.IP-Logo" alt="Stud.IP-Logo">';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testTable()
        {
            $input = "|Name|Matrikelnummer|Studiengang|\n|Max Mustermann|55555|Mathe Diplom|\n";
            $expected = '<table class="content">'
                       .'<tr>'
                       .'<td>Name</td>'
                       .'<td>Matrikelnummer</td>'
                       .'<td>Studiengang</td>'
                       .'</tr>'
                       .'<tr>'
                       .'<td>Max Mustermann</td>'
                       .'<td>55555</td>'
                       .'<td>Mathe Diplom</td>'
                       .'</tr>'
                       .'</table>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testList()
        {
            $input = "- Einführung\n- Hauptteil\n-= Argument 1\n-= Argument 2\n- Schluss\n";
            $expected = '<ul>'
                       .'<li>Einführung</li>'
                       .'<li>Hauptteil<ol>'
                       .'<li>Argument 1</li>'
                       .'<li>Argument 2</li>'
                       .'</ol></li>'
                       .'<li>Schluss</li>'
                       .'</ul>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testIndent()
        {
            $input = "  Ebene 1\n    Ebene 2\n    Ebene 2\n  Ebene 1\n";
            $expected = '<div class="indent">'
                       .'Ebene 1<br>'
                       .'<div class="indent">'
                       .'Ebene 2<br>'
                       .'Ebene 2<br>'
                       .'</div>'
                       .'Ebene 1<br>'
                       .'</div>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input, false));
        }
    
        public function testNop()
        {
            $input = '[nop]**A**[quote]B[/quote]{-C-}[/nop]';
            $expected = '**A**[quote]B[/quote]{-C-}';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testPre()
        {
            $input = '[pre]**A**{-C-}[/pre]';
            $expected = '<pre><strong>A</strong><s>C</s></pre>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testQuote()
        {
            $input = '[quote=__Anonymous__]some text[/quote]';
            $expected = '<blockquote>'
                       .'<div class="author"><u>Anonymous</u> hat geschrieben:</div>some text'
                       .'</blockquote>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testLink()
        {
            $input = '[Testlink]https://www.studip.de/';
            $expected = '<a class="link-extern" href="https://www.studip.de/" target="_blank" rel="noreferrer noopener">Testlink</a>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        public function testMail()
        {
            $input = '[Mail]some.user+tag@example.com';
            $expected = '<a class="link-extern" href="mailto:some.user+tag@example.com">Mail</a>';
            $expected = $this->wrap($expected);
            $this->assertEquals($expected, formatReady($input));
        }
    
        private function wrap($string)
        {
            return sprintf(FORMATTED_CONTENT_WRAPPER, $string);
        }
    }