FaZeBookSocialNetwork / www / public / test.php
test.php
Raw
<?php

require_once(__DIR__ . '/../lib/RedBeanPHP/rb.php');

spl_autoload_register(function($class) {
    $file = '../src/' . str_replace('\\','/', $class) . '.php';
    if(file_exists($file)) { require_once($file); }
});

/* In lieu of unit tests. */

use FaZeBook\Data;
use FaZeBook\LikeType;
use FaZeBook\PostType;

function xassert($bool) {
    if(!$bool) { throw new Exception("Assertion failed"); }
}

function millitime() { return round(microtime(true) * 1000); }

$start = millitime();

$data = Data::getTestingInstance();

// Test user deletion
$user = $data->addUser("a", "b", "q@q", "q");
$data->deleteUser($user);
xassert(is_null($data->getUserByEmail("q@q")));

// Test user creation and modification
$user = $data->addUser("a", "b", "q@q", "q");
$user = $data->getUserByEmail("q@q");
xassert(is_null($user->getPhoneNumber()));
$user->setBirthday(new \DateTimeImmutable("2000-01-01"));
xassert($user->getBirthday()->format("Y-m-d") === "2000-01-01");
xassert($user->getPoliticalDirection() === 0);
$user->setPoliticalDirection(42);
xassert($user->getPoliticalDirection() === 42);
xassert(is_null($user->getAvatarUrl()));
$user->setAvatarUrl("https://i.imgur.com/8AHziKn.jpg");
xassert($user->getAvatarUrl() === "https://i.imgur.com/8AHziKn.jpg");

// Test post creation
$post = $data->addPost($user, $user, false, PostType::TEXT, "hi999");
xassert($post->getAuthor()->getId() == $user->getId());
$found = false;
foreach($data->listPagePosts($user, true) as $post) {
    if($post->getContent() === "hi999") { $found = true; }
}
xassert($found);

// Test friendships
$user2 = $data->addUser("a", "b", "x@x", "q");

xassert(!$data->isFriend($user, $user2));
$data->setFriend($user, $user2);
xassert($data->isFriend($user, $user2));

// Test likes
xassert($data->getLike($user, $user2) === null);
$data->setLike($user, $user2, LikeType::LIKE);
xassert($data->getLike($user, $user2) === LikeType::LIKE);
xassert($data->getLike($user2, $user) === null);
$data->setLike($user, $user2, LikeType::DISLIKE);
$data->deleteLike($user2, $user);
xassert($data->getLike($user, $user2) === LikeType::DISLIKE);
$data->deleteLike($user, $user2);
xassert($data->getLike($user, $user2) === null);

// Test messages
$message = $data->addMessage($user, $user2, "hi");
xassert($message->getSender()->getId() == $user->getId());
xassert($message->getContent() === "hi");
$message->setContent("test");
xassert($message->getContent() === "test");
xassert(!is_null($message->getTime()));
xassert(!$message->isRead());
$message->markRead();
xassert($message->isRead());

// Test activity
xassert(sizeof($data->listActivity(1)) === 0);
$activity = $data->addActivity("foo");
xassert($activity->getEvent() === "foo");
xassert(array_values($data->listActivity(1))[0]->getEvent() === "foo");

$end = millitime();
?>
✔ All tests passed (<?= $end - $start; ?> ms)