X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fgabordemooij%2Fredbean%2Ftesting%2FRedUNIT%2FBase%2FIndexes.php;fp=vendor%2Fgabordemooij%2Fredbean%2Ftesting%2FRedUNIT%2FBase%2FIndexes.php;h=b2e7c55940536b857d9e1d2f3aa8578bbb89eba7;hp=0000000000000000000000000000000000000000;hb=eba34333e3c89f208d2f72fa91351ad019a71583;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae diff --git a/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Indexes.php b/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Indexes.php new file mode 100644 index 000000000..b2e7c5594 --- /dev/null +++ b/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Indexes.php @@ -0,0 +1,136 @@ +ownPageList[] = $page; + R::store( $book ); + $indexes = getIndexes( 'page' ); + asrt( in_array( 'index_foreignkey_page_book', $indexes ), TRUE ); + } + + /** + * Tests indexes on parent beans. + * + * @return void + */ + public function testIndexCreationParentBean() + { + R::nuke(); + $book = R::dispense( 'book' ); + $page = R::dispense( 'page' ); + $page->book = $book; + R::store( $page ); + $indexes = getIndexes( 'page' ); + asrt( in_array( 'index_foreignkey_page_book', $indexes ), TRUE ); + } + + /** + * Tests indexes on link tables. + * + * @return void + */ + public function testIndexCreationMany2Many() + { + R::nuke(); + $book = R::dispense( 'book' ); + $category = R::dispense( 'category' ); + $book->sharedCategoryList[] = $category; + R::store( $book ); + $indexes = getIndexes( 'book_category' ); + asrt( in_array( 'index_foreignkey_book_category_book', $indexes ), TRUE ); + asrt( in_array( 'index_foreignkey_book_category_category', $indexes ), TRUE ); + R::nuke(); + R::nuke(); + $book = R::dispense( 'book' ); + $category = R::dispense( 'category' ); + $category->sharedBookList[] = $book; + R::store( $category ); + $indexes = getIndexes( 'book_category' ); + asrt( in_array( 'index_foreignkey_book_category_book', $indexes ), TRUE ); + asrt( in_array( 'index_foreignkey_book_category_category', $indexes ), TRUE ); + } + + /** + * Tests indexes on aliases. + * + * @return void + */ + public function testIndexCreationAlias() + { + R::nuke(); + $book = R::dispense( 'book' ); + $author = R::dispense( 'author' ); + $book->coAuthor = $author; + R::store( $book ); + $indexes = getIndexes( 'book' ); + asrt( in_array( 'index_foreignkey_book_co_author', $indexes ), TRUE ); + R::nuke(); + $project = R::dispense( 'project' ); + $person = R::dispense( 'person' ); + $person->alias( 'teacher' )->ownProject[] = $project; + $person2 = R::dispense( 'person' ); + $person2->alias( 'student' )->ownProject[] = $project; + R::store( $person ); + $indexes = getIndexes( 'project' ); + asrt( in_array( 'index_foreignkey_project_teacher', $indexes ), TRUE ); + R::store( $person2 ); + $indexes = getIndexes( 'project' ); + asrt( in_array( 'index_foreignkey_project_student', $indexes ), TRUE ); + } + + /** + * Tests index fails. + * + * @return void + */ + public function testIndexCreationFail() + { + R::nuke(); + $book = R::dispense( 'book' ); + $book->author_id = 'a'; + R::store( $book ); + $indexes = getIndexes( 'book' ); + //should just work fine + asrt( in_array( 'index_foreignkey_book_author', $indexes ), TRUE ); + //these should just pass, no indexes but no errors as well + R::getWriter()->addIndex( 'book', 'bla', 'nonexist' ); + pass(); + R::getWriter()->addIndex( 'book', '@#$', 'nonexist' ); + pass(); + R::getWriter()->addIndex( 'nonexist', 'bla', 'nonexist' ); + pass(); + $indexesAfter = getIndexes( 'book' ); + asrt( count( $indexesAfter ), count( $indexes ) ); + } +}