table = new Mock_Libraries_Table(); $this->ci_instance($obj); $this->table = $obj->table; } // Setter Methods // -------------------------------------------------------------------- public function test_set_template() { $this->assertFalse($this->table->set_template('not an array')); $template = array( 'a' => 'b' ); $this->table->set_template($template); $this->assertEquals($template, $this->table->template); } public function test_set_empty() { $this->table->set_empty('nada'); $this->assertEquals('nada', $this->table->empty_cells); } public function test_set_caption() { $this->table->set_caption('awesome cap'); $this->assertEquals('awesome cap', $this->table->caption); } /* * @depends testPrepArgs */ public function test_set_heading() { // uses _prep_args internally, so we'll just do a quick // check to verify that func_get_args and prep_args are // being called. $this->table->set_heading('name', 'color', 'size'); $this->assertEquals( array( array('data' => 'name'), array('data' => 'color'), array('data' => 'size') ), $this->table->heading ); } /* * @depends testPrepArgs */ public function test_add_row() { // uses _prep_args internally, so we'll just do a quick // check to verify that func_get_args and prep_args are // being called. $this->table->add_row('my', 'pony', 'sings'); $this->table->add_row('your', 'pony', 'stinks'); $this->table->add_row('my pony', '>', 'your pony'); $this->assertEquals(count($this->table->rows), 3); $this->assertEquals( array( array('data' => 'your'), array('data' => 'pony'), array('data' => 'stinks') ), $this->table->rows[1] ); } // Uility Methods // -------------------------------------------------------------------- public function test_prep_args() { $expected = array( array('data' => 'name'), array('data' => 'color'), array('data' => 'size') ); // test what would be discreet args, // basically means a single array as the calling method // will use func_get_args() $reflectionOfTable = new ReflectionClass($this->table); $method = $reflectionOfTable->getMethod('_prep_args'); $method->setAccessible(true); $this->assertEquals( $expected, $method->invokeArgs( $this->table, array(array('name', 'color', 'size'), 'discreet') ) ); // test what would be a single array argument. Again, nested // due to func_get_args on calling methods $this->assertEquals( $expected, $method->invokeArgs( $this->table, array(array('name', 'color', 'size'), 'array') ) ); // with cell attributes // need to add that new argument row to our expected outcome $expected[] = array('data' => 'weight', 'class' => 'awesome'); $this->assertEquals( $expected, $method->invokeArgs( $this->table, array(array('name', 'color', 'size', array('data' => 'weight', 'class' => 'awesome')), 'attributes') ) ); } public function test_default_template_keys() { $reflectionOfTable = new ReflectionClass($this->table); $method = $reflectionOfTable->getMethod('_default_template'); $method->setAccessible(true); $deft_template = $method->invoke($this->table); $keys = array( 'table_open', 'thead_open', 'thead_close', 'heading_row_start', 'heading_row_end', 'heading_cell_start', 'heading_cell_end', 'tbody_open', 'tbody_close', 'row_start', 'row_end', 'cell_start', 'cell_end', 'row_alt_start', 'row_alt_end', 'cell_alt_start', 'cell_alt_end', 'table_close' ); foreach ($keys as $key) { $this->assertArrayHasKey($key, $deft_template); } } public function test_compile_template() { $reflectionOfTable = new ReflectionClass($this->table); $method = $reflectionOfTable->getMethod('_compile_template'); $method->setAccessible(true); $this->assertFalse($this->table->set_template('invalid_junk')); // non default key $this->table->set_template(array('nonsense' => 'foo')); $method->invoke($this->table); $this->assertArrayHasKey('nonsense', $this->table->template); $this->assertEquals('foo', $this->table->template['nonsense']); // override default $this->table->set_template(array('table_close' => '')); $method->invoke($this->table); $this->assertArrayHasKey('table_close', $this->table->template); $this->assertEquals('', $this->table->template['table_close']); } public function test_make_columns() { // Test bogus parameters $this->assertFalse($this->table->make_columns('invalid_junk')); $this->assertFalse($this->table->make_columns(array())); $this->assertFalse($this->table->make_columns(array('one', 'two'), '2.5')); // Now on to the actual column creation $five_values = array( 'Laura', 'Red', '15', 'Katie', 'Blue' ); // No column count - no changes to the array $this->assertEquals( $five_values, $this->table->make_columns($five_values) ); // Column count of 3 leaves us with one   $this->assertEquals( array( array('Laura', 'Red', '15'), array('Katie', 'Blue', ' ') ), $this->table->make_columns($five_values, 3) ); } public function test_clear() { $this->table->set_heading('Name', 'Color', 'Size'); // Make columns changes auto_heading $rows = $this->table->make_columns(array( 'Laura', 'Red', '15', 'Katie', 'Blue' ), 3); foreach ($rows as $row) { $this->table->add_row($row); } $this->assertFalse($this->table->auto_heading); $this->assertEquals(count($this->table->heading), 3); $this->assertEquals(count($this->table->rows), 2); $this->table->clear(); $this->assertTrue($this->table->auto_heading); $this->assertEmpty($this->table->heading); $this->assertEmpty($this->table->rows); } public function test_set_from_array() { $reflectionOfTable = new ReflectionClass($this->table); $method = $reflectionOfTable->getMethod('_set_from_array'); $method->setAccessible(true); $this->assertFalse($method->invokeArgs($this->table, array('bogus'))); $this->assertFalse($method->invoke($this->table, array())); $data = array( array('name', 'color', 'number'), array('Laura', 'Red', '22'), array('Katie', 'Blue') ); $method->invokeArgs($this->table, array($data, FALSE)); $this->assertEmpty($this->table->heading); $this->table->clear(); $expected_heading = array( array('data' => 'name'), array('data' => 'color'), array('data' => 'number') ); $expected_second = array( array('data' => 'Katie'), array('data' => 'Blue'), ); $method->invokeArgs($this->table, array($data)); $this->assertEquals(count($this->table->rows), 2); $this->assertEquals( $expected_heading, $this->table->heading ); $this->assertEquals( $expected_second, $this->table->rows[1] ); } function test_set_from_object() { $reflectionOfTable = new ReflectionClass($this->table); $method = $reflectionOfTable->getMethod('_set_from_object'); $method->setAccessible(true); // Make a stub of query instance $query = new CI_TestCase(); $query->list_fields = function(){ return array('name', 'email'); }; $query->result_array = function(){ return array( array('name' => 'John Doe', 'email' => 'john@doe.com'), array('name' => 'Foo Bar', 'email' => 'foo@bar.com'), ); }; $query->num_rows = function(){ return 2; }; $expected_heading = array( array('data' => 'name'), array('data' => 'email') ); $expected_second = array( 'name' => array('data' => 'Foo Bar'), 'email' => array('data' => 'foo@bar.com'), ); $method->invokeArgs($this->table, array($query)); $this->assertEquals( $expected_heading, $this->table->heading ); $this->assertEquals( $expected_second, $this->table->rows[1] ); } // Test main generate method // -------------------------------------------------------------------- }