pluf2

pluf2 Git Source Tree


Root/apps/todos/src/Todo/Tests/TestTodo.php

<?php
/* -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
# ***** BEGIN LICENSE BLOCK *****
# This file is part of Plume Framework, a simple PHP Application Framework.
# Copyright (C) 2001-2006 Loic d'Anterroches and contributors.
#
# Plume Framework is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Plume Framework is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
# ***** END LICENSE BLOCK ***** */

Pluf::loadFunction('Pluf_HTTP_URL_urlForView');

/**
 * Unit testing of this small application.
 *
 * The first series of tests is just to test the creation/deletion of
 * lists and items.
 *
 * The second series of tests is to test the views by doing queries
 * against them.
 *
 * That way you can see the way one can test the "backend" and the
 * "frontend".
 */
class Todo_Tests_TestTodo extends UnitTestCase 
{
    public $client = null;
    public $lists = array();

    public function __construct() 
    {
        parent::__construct('Test of the Todo application.');
    }

    /**
     * Create a client.
     */
    public function setUp()
    {
        $this->client = new Pluf_Test_Client(Pluf::f('todo_urls'));
    }

    /**
     * Delete the client and lists.
     *
     * Delete all the list which may be left. When the lists are
     * deleted, the items in those list are automatically deleted too.
     */
    public function tearDown()
    {
        $this->client = null;
        foreach ($this->lists as $list) {
            $list->delete();
        }
    }

    public function testCreateList()
    {
        $list = new Todo_List();
        $list->name = 'Test list';
        $this->assertEqual(true, $list->create());
        $this->lists[] = $list; // to have it deleted in tearDown
        $id = $list->id;
        $nlist = new Todo_List($id);
        $this->assertEqual($nlist->id, $id);
    }

    public function testCreateItem()
    {
        $list = new Todo_List();
        $list->name = 'Test list';
        $this->assertEqual(true, $list->create());
        $this->lists[] = $list; // to have it deleted in tearDown
        $item = new Todo_Item();
        $item->list = $list;
        $item->item = 'Create unit tests';
        $this->assertEqual(true, $item->create());
        $nlist = $item->get_list();
        $this->assertEqual($nlist->id, $list->id);
        $items = $list->get_todo_item_list();
        $this->assertEqual(1, $items->count());
        $item2 = new Todo_Item();
        $item2->list = $list;
        $item2->item = 'Create more unit tests';
        $item2->create();
        // first list has 2 items.
        $this->assertEqual(2, $list->get_todo_item_list()->count());
        $list2 = new Todo_List();
        $list2->name = 'Test list 2';
        $this->assertEqual(true, $list2->create());
        $this->lists[] = $list2; // to have it deleted in tearDown
        $this->assertEqual(0, $list2->get_todo_item_list()->count());
        // Move the item in the second list.
        $item2->list = $list2;
        $item2->update();
        // One item in each list.
        $this->assertEqual(1, $list2->get_todo_item_list()->count());
        $this->assertEqual(1, $list->get_todo_item_list()->count());
    }

}

Archive Download this file

Branches

Number of commits:
Page rendered in 0.07444s using 11 queries.