public function testRegistry() { if (!class_exists("PHPPE\\Registry")) { $this->markTestSkipped(); } //registry in files \PHPPE\DS::close(); \PHPPE\Registry::del("key"); $this->assertEquals("default", \PHPPE\Registry::get("key", "default"), "Registry default"); $this->assertTrue(\PHPPE\Registry::set("key", "value"), "Registry set"); $this->assertEquals("value", \PHPPE\Registry::get("key", "default"), "Registry get"); //registry in database $ds = new \PHPPE\DS("sqlite::memory:"); \PHPPE\Registry::del("key"); $this->assertEquals("default", \PHPPE\Registry::get("key", "default"), "Registry db default"); $this->assertTrue(\PHPPE\Registry::set("key", "value"), "Registry db set"); $this->assertEquals("value", \PHPPE\Registry::get("key", "default"), "Registry db get"); }
public function testHelpers() { \PHPPE\Core::$core->nocache = true; \PHPPE\Core::$core->meta["test"] = "testing"; \PHPPE\Core::$core->link["apple-touch-icon"] = "testing"; \PHPPE\View::init([]); $dir = dirname(__DIR__); \PHPPE\View::setPath($dir); \PHPPE\View::assign("dir", $dir); \PHPPE\View::css("test.css"); \PHPPE\View::css("test2.css"); \PHPPE\View::css(url("css", "test.css")); $this->assertNotEmpty(\PHPPE\View::css(), "CSS"); \PHPPE\View::jslib("test.js", "testjs();"); \PHPPE\View::jslib("test2.js", "testjs();"); \PHPPE\View::jslib(url("js", "test.js"), "testjs();"); $this->assertNotEmpty(\PHPPE\View::jslib(), "JSLib"); \PHPPE\View::js("some()", "thing();"); \PHPPE\View::js("some2()", "thing();", true); \PHPPE\View::menu("a", "b"); \PHPPE\View::menu("c", ["d" => "e"]); $this->assertNotEmpty(\PHPPE\View::menu(), "Menu"); $o = \PHPPE\Core::$core->output; \PHPPE\Core::$core->output = "ncurses"; $o = trim(\PHPPE\View::e('D', "message", "module")); $this->assertEquals("module-D: message" . chr(27) . "[0m", $o, "error string #1"); \PHPPE\Core::$core->output = "html"; $this->assertEquals("<span style='background:#F00000;color:#FEA0A0;padding:3px;'>E-module: ["message"]</span>", trim(\PHPPE\View::e('E', ["message"], "module")), "error string #2"); \PHPPE\Core::$core->output = $o; $this->assertEquals("aaa\n<!include test2>\nbbb\n", \PHPPE\View::get("test1"), "Raw template file"); \PHPPE\DS::close(); $ds = new \PHPPE\DS("sqlite::memory:"); \PHPPE\DS::exec("UPDATE views SET css='[\"a.css\"]' WHERE id='simple'"); $this->assertNotEmpty(\PHPPE\View::get("simple"), "Raw template db"); \PHPPE\DS::exec("UPDATE views SET css='' WHERE id='simple'"); }
public function testDiag() { \PHPPE\DS::close(); $ds = new \PHPPE\DS(); $this->assertNull($ds->diag(), "Diag no ds"); \PHPPE\DS::db("sqlite::memory:"); ob_start(); $ds->diag(); $this->assertEmpty(ob_get_clean(), "Diag no update"); if (file_put_contents("vendor/phppe/Developer/sql/upd_test.sql", "select 1;")) { ob_start(); $ds->diag(); $this->assertNotEmpty(ob_get_clean(), "Diag update"); $this->assertFileNotExists("vendor/phppe/Developer/sql/upd_test.sql", "Diag file"); } }
public function testDB() { if (!\PHPPE\ClassMap::has("PHPPE\\DB")) { $this->markTestSkipped(); } $this->assertEquals("%some%thing%", \PHPPE\DB::like("some thing"), "like"); $this->assertEquals("SELECT * FROM users", \PHPPE\DB::select("users"), "Simple select"); $this->assertEquals("SELECT id,name FROM users", \PHPPE\DB::select("users")->fields(["id", "name"]), "Select with fields"); $this->assertEquals("SELECT * FROM users WHERE id=?", \PHPPE\DB::select("users")->where("id=?"), "Select with where #1"); $this->assertEquals("SELECT * FROM users WHERE (id=? AND name=?)", \PHPPE\DB::select("users")->where(["id=?", "name=?"]), "Select with where #2"); $this->assertEquals("SELECT * FROM users WHERE (id = 'my id')", \PHPPE\DB::select("users")->where([["id", "=", "my id"]]), "Select with where #3"); $this->assertEquals("SELECT * FROM users WHERE (id LIKE '%my%id%')", \PHPPE\DB::select("users")->where([["id", "like", "my id"]]), "Select with where #4"); $this->assertEquals("SELECT * FROM users WHERE (id LIKE '%my%id%' OR name LIKE '%my%name%') AND 1=1", \PHPPE\DB::select("users")->where([["id", "like", "my id"], ["name", "like", "my name"]], "or")->where("1=1"), "Select with where #5"); $this->assertEquals("SELECT * FROM users u, user_posts p WHERE u.id=p.id", \PHPPE\DB::select("users", "u")->table("user_posts", "p")->where("u.id=p.id"), "Select with where #6"); $wasExc = false; try { \PHPPE\DB::update("users")->where("id=id", "NOT"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "bad where exception"); $this->assertEquals("SELECT * FROM users HAVING id=?", \PHPPE\DB::select("users")->having("id=?"), "Select with having"); $this->assertEquals("SELECT * FROM users LIMIT 10", \PHPPE\DB::select("users")->limit(10), "Select with limit #1"); $wasExc = false; try { \PHPPE\DB::select("users")->offset(5)->sql(); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "Select with limit #2"); $this->assertEquals("SELECT * FROM users LIMIT 10 OFFSET 5", \PHPPE\DB::select("users")->limit(10)->offset(5), "Select with limit #3"); $this->assertEquals("SELECT * FROM users GROUP BY name", \PHPPE\DB::select("users")->groupBy("name"), "Select with group by #1"); $this->assertEquals("SELECT * FROM users GROUP BY name,id", \PHPPE\DB::select("users")->groupBy(["name", "id"]), "Select with group by #2"); $this->assertEquals("SELECT * FROM users ORDER BY id", \PHPPE\DB::select("users")->orderBy("id"), "Select with order by #1"); $this->assertEquals("SELECT * FROM users ORDER BY id", \PHPPE\DB::select("users")->orderBy(["id"]), "Select with order by #2"); $wasExc = false; try { \PHPPE\DB::update("users")->sql(); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "update no fields exception"); $this->assertNotFalse(strpos(\PHPPE\DB::update("users"), "No fields specified"), "update no field string"); $this->assertEquals("UPDATE users SET id=?,name=?", \PHPPE\DB::update("users")->fields(['id', 'name']), "update with fields"); $this->assertEquals("DELETE FROM users", \PHPPE\DB::delete("users"), "delete table"); $this->assertEquals("DELETE a FROM users a", \PHPPE\DB::delete("users", "a")->sql(), "delete alias"); $this->assertEquals("DELETE user_posts FROM user_posts LEFT JOIN users ON user_posts.userId=users.id WHERE (users.id IS NULL)", \PHPPE\DB::delete("user_posts")->join("LEFT", "users", "user_posts.userId=users.id")->where([["users.id", "IS NULL"]]), "delete where"); $this->assertEquals("INSERT INTO users (id,name) VALUES (?,?)", \PHPPE\DB::insert("users")->fields('id,name'), "insert"); $wasExc = false; try { \PHPPE\DB::select("users")->join("SIMPLE", "user_posts", "id=id"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "bad join exception"); $this->assertEquals("REPLACE INTO users (id,name) VALUES (?,?) WHERE id=''", \PHPPE\DB::replace("users")->fields(['id', 'name'])->where("id=''"), "replace"); $this->assertEquals("TRUNCATE TABLE users", \PHPPE\DB::truncate("users"), "truncate"); $wasExc = false; try { \PHPPE\DB::select("users")->where([["1", "!="]]); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "bad where exception"); $wasExc = false; try { \PHPPE\DB::select("users")->where([["a", "similarto", "b"]]); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "bad where exception"); $wasExc = false; try { \PHPPE\DB::update("")->sql(); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "no table exception"); $wasExc = false; try { \PHPPE\DB::insert("users")->sql(); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "no where exception"); $wasExc = false; try { \PHPPE\DB::replace("users")->fields(["id"])->sql(); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "no where exception"); \PHPPE\DS::close(); $ds = new \PHPPE\DS("sqlite::memory:"); $this->assertNotEmpty(\PHPPE\DB::select("users")->execute(), "execute"); \PHPPE\DB::truncate("users")->execute(); $wasExc = false; try { \PHPPE\DB::insert("users")->with(''); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "no fields exception"); $this->assertEquals(1, \PHPPE\DB::insert("users")->with(['id' => 123, 'name' => 'newcomer', 'email' => '*****@*****.**']), "insert with with"); $wasExc = false; try { \PHPPE\DB::select("users")->where("id=?")->execute(); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "no argument exception"); $ds = new \PHPPE\DS("sqlite::memory:"); $this->assertNotEmpty(\PHPPE\DB::select("users")->execute([], 1), "execute on ds"); }
public function testContent() { Core::$core->nocache = true; include_once __DIR__ . "/../libs/FailFilter.php"; DS::close(); DS::db("sqlite::memory:"); DS::exec("insert into pages (id,name,template,data,dds,filter) values ('test','Test','testview','{\"body\":\"testbody\"}','{\"testdds\":[\"1\",\"\",\"\"]}','fail');"); DS::exec("insert into views (id,ctrl) values ('testview', 'echo(\"OK\");');"); $url = Core::$core->url; $title = Core::$core->title; $contentApp = new Content(); //! no content Core::$core->title = "NONE"; $contentApp = new Content("no/such/content"); $this->assertEquals("NONE", Core::$core->title, "No content"); //! filter $contentApp = new Content("test/"); $this->assertEquals("403", Core::$core->template, "Filtered"); DS::exec("update pages set filter='' where id='test';"); //! is content $contentApp = new Content("test/"); $this->assertEquals("Test", Core::$core->title, "Content"); $contentApp->getDDS($contentApp); $this->assertEquals("testbody", $contentApp->body, "Body"); $this->assertNotEmpty($contentApp->testdds, "DDS"); $old = Core::$core->noctrl; Core::$core->noctrl = false; $contentApp->ctrl = "echo('OK');"; $this->assertEquals("OK", $contentApp->action(), "Content controller #1"); $old = Core::$core->noctrl; Core::$core->noctrl = true; $this->assertNull($contentApp->action(), "Content controller #2"); Core::$core->noctrl = $old; DS::exec("update pages set dds='{\"testdds2\":[\"nosuchcolumn\",\"\",\"\"]}' where id='test';"); $contentApp = new Content("test/"); $contentApp->getDDS($contentApp); $this->assertEmpty(@$contentApp->testdds2, "DDS failed"); Core::$core->title = $title; }
public function testEmail() { if (!\PHPPE\ClassMap::has("PHPPE\\Email")) { $this->markTestSkipped(); } \PHPPE\Core::$core->mailer = null; $email = new \PHPPE\Email(); $emailData = $email->get(); $email2 = new \PHPPE\Email($emailData); $this->assertNotEmpty($email2, "Empty Email dump"); $wasExc = false; try { $email3 = new \PHPPE\Email("something"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "Email creating exception"); $wasExc = false; try { $email->send(); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "No backend exception"); $wasExc = false; try { $email->send("db"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "No message exception"); $email->message("Something"); $wasExc = false; try { $email->send("db"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "No subject exception"); $email->subject("Subject"); \PHPPE\DS::close(); $wasExc = false; try { $email->send("db"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "No recipient exception"); $wasExc = false; try { $email->to("me"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "Bad address exception #1"); $wasExc = false; try { $email->to("me@notld"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "Bad address exception #2"); $email->to("me@localhost"); $email->replyTo("me2@localhost"); $email->cc("me3@localhost"); $email->bcc("me4@localhost"); $wasExc = false; try { $email->send("db"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "No db exception"); $wasExc = false; try { $email->send("phpmailer"); } catch (\Exception $e) { $wasExc = true; } $this->assertTrue($wasExc, "No phpmailer exception"); $this->assertNotEquals(0, preg_match("/Message\\-ID/", $email->send("mime")), "Return mime message"); $email->attachFile("images/phppe.png"); $email->attachFile("images/phppe.png", "image/png"); $email2->attachData("something.txt", "text/plain", "something"); $mime = $email2->message("<html><body>html mail<img src='http://localhost/something.jpg'><img src='images/phppe.png'></body></html>")->subject("Subject")->to("me@localhost")->send("mime"); $this->assertTrue($email2->send("log"), "Log backend"); $email2->send("mail"); $email2->send("sendmail"); $email2->send("smtp://*****:*****@localhost")->subject("Subject")->message("message"); \PHPPE\DS::db("sqlite::memory:"); $wasExc = false; try { $email->send("db"); $email3->send("db"); } catch (\Exception $e) { $wasExc = true; echo $e; } $this->assertFalse($wasExc, "To db queue"); \PHPPE\Core::$core->realmailer = "log"; $email->cronMinute(""); \PHPPE\Core::$core->realmailer = "log"; $email->cronMinute(""); }