testdocument.php

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 137 行

PHP
137
字号
<?php
require_once (dirname(__FILE__) . '/../test.php');
require_once (KT_DIR . '/ktapi/ktapi.inc.php');
class APIDocumentHelper {
    function createRandomFile($content = 'this is some text') {
        $temp = tempnam(dirname(__FILE__), 'myfile');
        $fp = fopen($temp, 'wt');
        fwrite($fp, $content);
        fclose($fp);
        return $temp;
    }
}
class APIDocumentTestCase extends KTUnitTestCase {
    /**
     * @var KTAPI
     */
    var $ktapi;
    /**
     * @var KTAPI_Folder
     */
    var $root;
    var $session;
    function setUp() {
        $this->ktapi = new KTAPI();
        $this->session = $this->ktapi->start_system_session();
        $this->root = $this->ktapi->get_root_folder();
        $this->assertTrue(is_a($this->root, 'KTAPI_Folder'));
    }
    function tearDown() {
        $this->session->logout();
    }
    function testAddDocument() {
        $randomFile = APIDocumentHelper::createRandomFile();
        $this->assertTrue(is_file($randomFile));
        $document = $this->root->add_document('testtitle.txt', 'testname.txt', 'Default', $randomFile);
        $this->assertNotError($document);
        if(PEAR::isError($document)) return;
        $this->assertTrue(is_a($document, 'KTAPI_Document'));
        @unlink($randomFile);
        $documentid = $document->get_documentid();
        // get document
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertTrue(is_a($document, 'KTAPI_Document'));
        $this->assertEqual($document->get_title(), 'testtitle.txt');
        $document->delete('because we can');
        // check if document still exists
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertTrue(is_a($document, 'KTAPI_Document'));
        $this->assertTrue($document->is_deleted());
        $document->expunge();
        // check if document still exists
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertFalse(is_a($document, 'KTAPI_Document'));
    }
    function testCheckinDocument() {
        $randomFile = APIDocumentHelper::createRandomFile();
        $this->assertTrue(is_file($randomFile));
        $document = $this->root->add_document('testtitle.txt', 'testname.txt', 'Default', $randomFile);
        $this->assertNotError($document);
        if(PEAR::isError($document)) return;
        $this->assertTrue(is_a($document, 'KTAPI_Document'));
        @unlink($randomFile);
        $documentid = $document->get_documentid();
        // document should be checked in
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertFalse($document->is_checked_out());
        $document->checkout('because');
        // document should now be checked out
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertTrue($document->is_checked_out());
        $document->undo_checkout('because we want to undo it');
        // document should be checked in
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertFalse($document->is_checked_out());
        $document->checkout('because');
        // document should now be checked out
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertTrue($document->is_checked_out());
        // create another random file
        $randomFile = APIDocumentHelper::createRandomFile('updating the previous content');
        $this->assertTrue(is_file($randomFile));
        $document->checkin('testname.txt', 'updating', $randomFile);
        @unlink($randomFile);
        // document should be checked in
        $document = $this->ktapi->get_document_by_id($documentid);
        $this->assertFalse($document->is_checked_out());
        $document->delete('because we can');
        $document->expunge();
    }
    function testAddingDuplicateTitle() {
        $randomFile = APIDocumentHelper::createRandomFile();
        $this->assertTrue(is_file($randomFile));
        $document = $this->root->add_document('testtitle.txt', 'testname.txt', 'Default', $randomFile);
        $this->assertNotError($document);
        if(PEAR::isError($document)) return;
        $this->assertEntity($document, 'KTAPI_Document');
        $this->assertFalse(is_file($randomFile));
        $documentid = $document->get_documentid();
        // file would have been cleaned up because of the add_document
        $randomFile = APIDocumentHelper::createRandomFile();
        $this->assertTrue(is_file($randomFile));
        // filenames must be the same as above
        $document2 = $this->root->add_document('testtitle.txt', 'testname2.txt', 'Default', $randomFile);
        $this->assertFalse(is_a($document2, 'KTAPI_Document'));
        @unlink($randomFile);
        $document->delete('because we can');
        $document->expunge();
        if (is_a($document2, 'KTAPI_Document')) {
            $document2->delete('because we can');
            $document2->expunge();
        }
    }
    function testAddingDuplicateFile() {
        $randomFile = APIDocumentHelper::createRandomFile();
        $this->assertTrue(is_file($randomFile));
        $document = $this->root->add_document('testtitle.txt', 'testname.txt', 'Default', $randomFile);
        $this->assertNotError($document);
        if(PEAR::isError($document)) return;
        $this->assertTrue(is_a($document, 'KTAPI_Document'));
        $this->assertFalse(is_file($randomFile));
        $documentid = $document->get_documentid();
        $randomFile = APIDocumentHelper::createRandomFile();
        $this->assertTrue(is_file($randomFile));
        // filenames must be the same as above
        $document2 = $this->root->add_document('testtitle2.txt', 'testname.txt', 'Default', $randomFile);
        $this->assertFalse(is_a($document2, 'KTAPI_Document'));
        @unlink($randomFile);
        $document->delete('because we can');
        $document->expunge();
        if (is_a($document2, 'KTAPI_Document')) {
            $document2->delete('because we can');
            $document2->expunge();
        }
    }
}
?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?