a tiny mvc framework for php using php-activerecord
at master 156 lines 4.1 kB view raw
1<?php 2 3require(__DIR__ . "/../lib/halfmoon.php"); 4 5class OptionsHashTest extends PHPUnit_Framework_TestCase { 6 public function testVerifyMethod() { 7 $options = array( 8 array( 9 "only" => array("destroy", "update"), 10 "method" => "post", 11 "redirect_to" => "/admin/assets/" 12 ), 13 array( 14 "only" => "index", 15 "method" => "get", 16 ), 17 ); 18 19 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 20 "destroy", $options); 21 $this->assertEquals( 22 array(array("method" => "post", "redirect_to" => "/admin/assets/")), 23 $ret 24 ); 25 26 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 27 "blah", $options); 28 $this->assertEquals(array(), $ret); 29 30 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 31 "index", $options); 32 $this->assertEquals(array(array("method" => "get")), $ret); 33 } 34 35 public function testLayout() { 36 $options = array( 37 "ajax" => array("only" => "/^stub_/"), 38 ); 39 40 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 41 "stub_blah", $options); 42 $this->assertEquals(array("ajax"), $ret); 43 44 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 45 "index", $options); 46 $this->assertEquals(array(), $ret); 47 48 49 $options = array( 50 "normal" => array("except" => "/^stub_/"), 51 ); 52 53 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 54 "stub_blah", $options); 55 $this->assertEquals(array(), $ret); 56 57 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 58 "index", $options); 59 $this->assertEquals(array("normal"), $ret); 60 61 62 $options = array( 63 "false" => array("only" => array("stub", "blah")), 64 ); 65 66 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 67 "stub", $options); 68 $this->assertEquals(array("false"), $ret); 69 70 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 71 "stub2", $options); 72 $this->assertEquals(array(), $ret); 73 } 74 75 public function testSingle() { 76 $options = array("some_filter"); 77 78 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 79 "some_action", $options); 80 $this->assertEquals(array("some_filter"), $ret); 81 82 83 $options = "somethingelse"; 84 85 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 86 "index", $options); 87 $this->assertEquals(array("somethingelse"), $ret); 88 } 89 90 public function testFilters() { 91 $options = "some_other_filter"; 92 93 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 94 "some_action", $options); 95 $this->assertEquals(array("some_other_filter"), $ret); 96 97 $options = array( 98 "some_filter", 99 "some_other_filter", 100 "but_not_this_filter" => array("only" => array("/^bl.h$/", "flot")), 101 "and_this_filter" => array("except" => "blah"), 102 ); 103 104 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 105 "some_action", $options); 106 $this->assertEquals(array("some_filter", "some_other_filter", 107 "and_this_filter"), $ret); 108 109 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 110 "blah", $options); 111 $this->assertEquals(array("some_filter", "some_other_filter", 112 "but_not_this_filter"), $ret); 113 114 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 115 "flot", $options); 116 $this->assertEquals(array("some_filter", "some_other_filter", 117 "but_not_this_filter", "and_this_filter"), $ret); 118 } 119 120 public function testSessions() { 121 $options = array( 122 "on" => array("only" => array("login")), 123 ); 124 125 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 126 "login", $options); 127 $this->assertEquals(array("on"), $ret); 128 129 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 130 "index", $options); 131 $this->assertEquals(array(), $ret); 132 133 134 $options = array( 135 "off", 136 "on" => array("only" => array("login")), 137 ); 138 139 $ret = \HalfMoon\Utils::options_for_key_from_options_hash( 140 "index", $options); 141 $this->assertEquals(array("off"), $ret); 142 } 143 144 /* this is used in protect_from_forgery and the like */ 145 public function testBooleanOption() { 146 $options = array("only" => array("login")); 147 148 $ret = \HalfMoon\Utils::option_applies_for_key("login", $options); 149 $this->assertTrue($ret); 150 151 $ret = \HalfMoon\Utils::option_applies_for_key("blah", $options); 152 $this->assertFalse($ret); 153 } 154} 155 156?>