/home/arranoyd/magicraft/wp-content/plugins/incsub-support/tests/test-ticket-category.php
<?php
/**
* @group ticket_category
*/
class Support_Ticket_Category extends Incsub_Support_UnitTestCase {
function test_insert_ticket_category() {
// Login a user
$user_id = $this->factory->user->create_object(
$this->factory->user->generate_args()
);
wp_set_current_user( $user_id );
$cat_id = incsub_support_insert_ticket_category( 'A category' );
$cat = incsub_support_get_ticket_category( $cat_id );
$this->assertEquals( $cat->cat_name, 'A category' );
$this->assertEquals( $cat->user_id, get_current_user_id() );
}
function test_update_ticket_category() {
$user_id = $this->factory->user->create_object(
$this->factory->user->generate_args()
);
wp_set_current_user( $user_id );
$user_id_2 = $this->factory->user->create_object(
$this->factory->user->generate_args()
);
$cat_id = incsub_support_insert_ticket_category( 'A category' );
$cat = incsub_support_get_ticket_category( $cat_id );
incsub_support_update_ticket_category( $cat_id, array( 'cat_name' => 'New category name', 'user_id' => $user_id_2 ) );
$cat = incsub_support_get_ticket_category( $cat_id );
$this->assertEquals( $cat->cat_name, 'New category name' );
$this->assertEquals( $cat->user_id, $user_id_2 );
}
function test_delete_ticket_category() {
$cat_id = incsub_support_insert_ticket_category( 'A category' );
incsub_support_delete_ticket_category( $cat_id );
$cat = incsub_support_get_ticket_category( $cat_id );
$this->assertFalse( $cat );
}
function test_set_default_ticket_category() {
$default = incsub_support_get_default_ticket_category();
$cat_id = incsub_support_insert_ticket_category( 'A category' );
incsub_support_set_default_ticket_category( $cat_id );
$cat = incsub_support_get_default_ticket_category( $cat_id );
$this->assertEquals( $cat->cat_name, 'A category' );
}
function test_delete_default_category() {
$first_default_category = incsub_support_get_default_ticket_category();
$cat_id = incsub_support_insert_ticket_category( 'A category' );
incsub_support_set_default_ticket_category( $cat_id );
// We cannot delete the default category
$result = incsub_support_delete_ticket_category( $cat_id );
$this->assertFalse( $result );
}
function test_get_ticket_categories() {
$cat_id_1 = incsub_support_insert_ticket_category( 'A category 1' );
$cat_id_2 = incsub_support_insert_ticket_category( 'A category 2' );
$cat_id_3 = incsub_support_insert_ticket_category( 'A category 3' );
$cats = incsub_support_get_ticket_categories();
$this->assertCount( 4, $cats );
incsub_support_delete_ticket_category( $cat_id_2 );
$cats = incsub_support_get_ticket_categories();
$this->assertCount( 3, $cats );
}
function test_count_tickets_for_category() {
$cat_id = incsub_support_insert_ticket_category( 'A category' );
$cat = incsub_support_get_ticket_category( $cat_id );
$args = array(
'cat_id' => $cat_id,
'title' => 'A ticket',
'message' => 'A ticket message'
);
$ticket_1 = incsub_support_insert_ticket( $args );
$ticket_2 = incsub_support_insert_ticket( $args );
$this->assertEquals( 2, $cat->get_tickets_count() );
$ticket_3 = incsub_support_insert_ticket( $args );
$this->assertEquals( 3, $cat->get_tickets_count() );
$new_cat_id = incsub_support_insert_ticket_category( 'A category 2' );
$args = array( 'cat_id' => $new_cat_id );
incsub_support_update_ticket( $ticket_3, $args );
$this->assertEquals( 2, $cat->get_tickets_count() );
incsub_support_delete_ticket( $ticket_1 );
$this->assertEquals( 1, $cat->get_tickets_count() );
}
function test_reassign_tickets_to_default_category() {
$cat_id = incsub_support_insert_ticket_category( 'A category' );
$cat = incsub_support_get_ticket_category( $cat_id );
$default_category = incsub_support_get_default_ticket_category();
$this->assertEquals( 0, $default_category->get_tickets_count() );
$args = array(
'cat_id' => $cat_id,
'title' => 'A ticket',
'message' => 'A ticket message'
);
$ticket_1 = incsub_support_insert_ticket( $args );
$ticket_2 = incsub_support_insert_ticket( $args );
incsub_support_delete_ticket_category( $cat_id );
$this->assertEquals( 2, $default_category->get_tickets_count() );
}
function test_insert_duplicated_ticket_category() {
$cat_id = incsub_support_insert_ticket_category( 'A category' );
$cat_id = incsub_support_insert_ticket_category( 'A category' );
$this->assertFalse( $cat_id );
}
}