function testViewNotEditable()
 {
     $this->doLoginBasic();
     $this->goToNotebookPageView(1104);
     $this->checkBasicAsserts();
     // NOTE: most of the messy details of this are checked in the notebook_page object tests of renderAsView - see app_infrastructure_tests/TestOfNotebookPage.class.php
     // this just makes sure that the plant lable is actually showing up and that the appropriate edit buttons are there
     $ap1 = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => 5001], $this->DB);
     // page heading text
     $this->assertText($ap1->renderAsShortText());
     // NO 'edit' control
     $this->assertNoLink(util_lang('edit'));
     // NO 'add field' control
     $this->assertNoLink(util_lang('add_notebook_page_field'));
     // no 'add specimen' control
     $this->assertNoLink(util_lang('add_specimen'));
     $this->assertNoText('IMPLEMENTED');
 }
 function testViewNotEditable()
 {
     $this->doLoginBasic();
     $this->goToNotebookView(1004);
     $this->checkBasicAsserts();
     $n = Notebook::getOneFromDb(['notebook_id' => 1004], $this->DB);
     //        util_prePrintR($n);
     $ap1 = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => 5001], $this->DB);
     // page heading text
     $this->assertText(ucfirst(util_lang('notebook')));
     $this->assertText($n->name);
     $this->assertText($n->notes);
     // NO 'edit' control
     $this->assertNoLink(util_lang('edit'));
     // number of notebook pages
     $this->assertEltByIdHasAttrOfValue('list-of-notebook-pages', 'data-notebook-page-count', '1');
     $this->assertEltByIdHasAttrOfValue('notebook-page-item-1', 'data-notebook_page_id', '1104');
     $this->assertLink($ap1->renderAsShortText());
     // NO 'add page' control
     $this->assertNoLink(util_lang('add_notebook_page'));
 }
 public function getLinked()
 {
     if ($this->link_to_type == 'authoritative_plant') {
         return Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => $this->link_to_id], $this->dbConnection);
     }
     if ($this->link_to_type == 'notebook_page') {
         return Notebook_Page::getOneFromDb(['notebook_page_id' => $this->link_to_id], $this->dbConnection);
     }
     return 0;
 }
    ////        if ($_REQUEST['parent_metadata_structure_id'] && is_numeric($_REQUEST['parent_metadata_structure_id'])) {
    ////            $parent = Metadata_Structure::getOneFromDb(['metadata_structure_id'=>$_REQUEST['parent_metadata_structure_id']],$DB);
    ////            if ($parent->matchesDb) {
    ////                $mds->parent_metadata_structure_id = $parent->metadata_structure_id;
    ////            }
    ////        }
    //        echo "TODO: create action support";
    $ap = Authoritative_Plant::createNewAuthoritativePlant($DB);
    $action == 'edit';
    //        exit;
} else {
    if (isset($_REQUEST['authoritative_plant_id'])) {
        if ($_REQUEST['authoritative_plant_id'] == 'NEW') {
            $ap = Authoritative_Plant::createNewAuthoritativePlant($DB);
        } elseif (is_numeric($_REQUEST['authoritative_plant_id'])) {
            $ap = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => $_REQUEST['authoritative_plant_id']], $DB);
            if (!$ap->matchesDb) {
                util_redirectToAppPage('app_code/authoritative_plant.php?action=list', 'failure', util_lang('no_authoritative_plant_found'));
            }
        } else {
            util_redirectToAppPage('app_code/authoritative_plant.php?action=list', 'failure', util_lang('no_authoritative_plant_found'));
        }
    } else {
        // no authoritative_plant_id in request
        if ($action != 'list') {
            // list actions can have no id - all other actions need an id
            util_redirectToAppPage('app_code/authoritative_plant.php?action=list', 'failure', util_lang('no_authoritative_plant_specified'));
        }
        $ap = Authoritative_Plant::createNewAuthoritativePlant($DB);
    }
}
 function testCanActOnTarget()
 {
     $n1 = Notebook::getOneFromDb(['notebook_id' => 1001], $this->DB);
     // owned by 101
     $n2 = Notebook::getOneFromDb(['notebook_id' => 1003], $this->DB);
     // owned by 102
     $n3 = Notebook::getOneFromDb(['notebook_id' => 1004], $this->DB);
     // owned by 110
     $np1 = Notebook_Page::getOneFromDb(['notebook_page_id' => 1101], $this->DB);
     // part of notebook 101
     $s1 = Specimen::getOneFromDb(['specimen_id' => 8001], $this->DB);
     // owned by 110
     $s2 = Specimen::getOneFromDb(['specimen_id' => 8002], $this->DB);
     // owned by 101
     $mds = Metadata_Structure::getOneFromDb(['metadata_structure_id' => 6004], $this->DB);
     $mdts = Metadata_Term_Set::getOneFromDb(['metadata_term_set_id' => 6101], $this->DB);
     $mdtv = Metadata_Term_Value::getOneFromDb(['metadata_term_value_id' => 6211], $this->DB);
     $ap = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => 5001], $this->DB);
     $actions_list = Action::getAllFromDb([], $this->DB);
     $actions = [];
     foreach ($actions_list as $act_elt) {
         $actions[$act_elt->name] = $act_elt;
     }
     // basic, field user
     $u = User::getOneFromDb(['user_id' => 101], $this->DB);
     $this->assertTrue($u->canActOnTarget($actions['view'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['view'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['view'], $np1));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $np1));
     $this->assertTrue($u->canActOnTarget($actions['create'], $np1));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $np1));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $np1));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $np1));
     $this->assertTrue($u->canActOnTarget($actions['view'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['create'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['view'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['create'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $s2));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['create'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['create'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['create'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['view'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['create'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $ap));
     // basic user on arbitrary object
     $this->assertTrue($u->canActOnTarget($actions['view'], new Authoritative_Plant(['DB' => $this->DB])));
     // system admin
     $u->flag_is_system_admin = true;
     $this->assertTrue($u->canActOnTarget($actions['view'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['view'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['view'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['create'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['view'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['create'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['create'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['create'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['create'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['view'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['create'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $ap));
     // public user
     $u = User::getOneFromDb(['user_id' => 109], $this->DB);
     $this->assertFalse($u->canActOnTarget($actions['view'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['create'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $n1));
     $this->assertFalse($u->canActOnTarget($actions['view'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['create'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $n2));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['create'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $n3));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['view'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['create'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $s1));
     $this->assertFalse($u->canActOnTarget($actions['view'], $s2));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $s2));
     $this->assertFalse($u->canActOnTarget($actions['create'], $s2));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $s2));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $s2));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['create'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $mds));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['create'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $mdts));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['create'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $mdtv));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['view'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['edit'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['create'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['delete'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['publish'], $ap));
     $this->assertFalse($u->canActOnTarget($actions['verify'], $ap));
     // manager
     $u = User::getOneFromDb(['user_id' => 110], $this->DB);
     // manager user
     $this->assertTrue($u->canActOnTarget($actions['view'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $n1));
     $this->assertTrue($u->canActOnTarget($actions['view'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $n2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['create'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $n3));
     $this->assertTrue($u->canActOnTarget($actions['view'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['create'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $s1));
     $this->assertTrue($u->canActOnTarget($actions['view'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['create'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $s2));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['create'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $mds));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['create'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $mdts));
     $this->assertTrue($u->canActOnTarget($actions['view'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['create'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $mdtv));
     $this->assertTrue($u->canActOnTarget($actions['view'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['edit'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['create'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['delete'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['publish'], $ap));
     $this->assertTrue($u->canActOnTarget($actions['verify'], $ap));
 }
 function testLoadSpecimens()
 {
     $ap = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => 5001], $this->DB);
     $this->assertEqual(0, count($ap->specimens));
     $ap->loadSpecimens();
     $this->assertEqual(1, count($ap->specimens));
     $this->assertEqual(8001, $ap->specimens[0]->specimen_id);
 }
 function testViewNotLoggedIn()
 {
     //        $this->doLoginBasic();
     $ap = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => 5001], $this->DB);
     $this->goToView($ap->authoritative_plant_id);
     $this->checkBasicAsserts();
     //        $this->showContent();
     // page heading
     $this->assertLink(util_lang('authoritative_plant'));
     // NO 'edit' control
     $this->assertNoLink(util_lang('edit'));
     // MORE!!!!
     // NOTE: assuming that if one relevant piece of info shows up then they're all there - detailed testing is handled in the class test suite renderAsViewTest
     //        $this->todo("check for auth plant info");
     $this->assertText('AP_A_order');
     //        $this->todo("check for extras info");
     $this->assertText("AP_A common a american chestnut");
     //        $this->todo("check for notebook pages");
     $this->assertLink('in notebook testnotebook4');
 }
 public function getAuthoritativePlant()
 {
     if ($this->notebook_page_id == 'NEW') {
         return '';
     }
     return Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => $this->authoritative_plant_id], $this->dbConnection);
 }
 function testRenderAsListItem_NonEditor()
 {
     $np = Notebook_Page::getOneFromDb(['notebook_page_id' => 1104], $this->DB);
     global $USER;
     $USER = User::getOneFromDb(['username' => TESTINGUSER], $this->DB);
     $plant = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => 5001], $this->DB);
     $rendered = $np->renderAsListItem();
     $canonical = '<li data-notebook_page_id="1104" data-created_at="' . $np->created_at . '" data-updated_at="' . $np->updated_at . '" data-notebook_id="1004" data-authoritative_plant_id="5001" data-notes="first page of testnotebook4, owned by user 110" data-flag_workflow_published="0" data-flag_workflow_validated="0" data-flag_delete="0"><a href="' . APP_ROOT_PATH . '/app_code/notebook_page.php?action=view&notebook_page_id=1104">' . htmlentities($plant->renderAsShortText()) . '</a></li>';
     //            echo "<pre>\n".htmlentities($canonical)."\n".htmlentities($rendered)."\n</pre>";
     $this->assertEqual($canonical, $rendered);
 }
 function testCreationOfNewPlant()
 {
     $this->doLoginAdmin();
     $this->get('http://localhost/digitalfieldnotebooks/app_code/authoritative_plant.php?action=create');
     $this->checkBasicAsserts();
     $this->assertTrue($this->setField('authoritative_plant-genus_NEW', 'uniquenewgenus'));
     $this->assertTrue($this->setField('authoritative_plant-species_NEW', 'uniquenewspecies'));
     $this->assertTrue($this->setField('flag_active', true));
     ///////////////////////////////
     //// submit the form
     $this->click('<i class="icon-ok-sign icon-white"></i> ' . util_lang('update', 'properize'));
     $new_ap = Authoritative_Plant::getOneFromDb(['species' => 'uniquenewspecies'], $this->DB);
     $this->assertTrue($new_ap->matchesDb);
     $this->assertTrue($new_ap->flag_active);
 }
 public function getAuthoritativePlant()
 {
     return Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => $this->authoritative_plant_id, 'flag_delete' => FALSE], $this->dbConnection);
 }
 function testRenderSpecimenListBlock()
 {
     $ap = Authoritative_Plant::getOneFromDb(['authoritative_plant_id' => 5001], $this->DB);
     $ap->cacheSpecimens();
     $canonical = '';
     $canonical .= '  <h4>' . ucfirst(util_lang('specimens')) . "</h4>\n" . '  <ul class="specimens">' . "\n";
     $canonical .= '    <li><a href="#" id="add_new_specimen_button" class="btn">' . util_lang('add_specimen') . '</a></li>' . "\n";
     if ($ap->specimens) {
         foreach ($ap->specimens as $specimen) {
             $canonical .= '    <li id="list_item-specimen_' . $specimen->specimen_id . '">' . $specimen->renderAsEditEmbed() . "</li>\n";
         }
     } else {
         $canonical .= '<li>' . util_lang('no_metadata', 'ucfirst') . '</li>' . "\n";
     }
     $canonical .= "  </ul>\n";
     $rendered = Specimen::renderSpecimenListBlock($ap->specimens);
     $this->assertEqual($canonical, $rendered);
     $this->assertNoPattern('/IMPLEMENTED/', $rendered);
 }
 public function getTargets()
 {
     switch ($this->target_type) {
         case 'global_notebook':
             return Notebook::getAllFromDb([], $this->dbConnection);
             break;
         case 'global_metadata':
             return Metadata_Structure::getAllFromDb([], $this->dbConnection);
             break;
         case 'global_plant':
             return Authoritative_Plant::getAllFromDb([], $this->dbConnection);
             break;
         case 'global_specimen':
             return Specimen::getAllFromDb([], $this->dbConnection);
             break;
         case 'notebook':
             return array(Notebook::getOneFromDb(['notebook_id' => $this->target_id], $this->dbConnection));
             break;
         case 'metadata_structure':
             return array(Metadata_Structure::getOneFromDb(['metadata_structure_id' => $this->target_id], $this->dbConnection));
             break;
         case 'plant':
             return array(Authoritative_Plant::getOneFromDb(['authoritative_id' => $this->target_id], $this->dbConnection));
             break;
         case 'specimen':
             return array(Specimen::getOneFromDb(['specimen_id' => $this->target_id], $this->dbConnection));
             break;
         default:
             return array();
     }
 }