a tiny mvc framework for php using php-activerecord
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?>