#!/usr/bin/perl use strict; use warnings; use Test::More; BEGIN { eval { require DBD::SQLite } or plan skip_all => 'DBD::SQLite is required for this test'; $ENV{TEST_FOORUM} = 1; plan tests => 18; } use FindBin; use File::Spec; use lib File::Spec->catdir( $FindBin::Bin, '..', 'lib' ); use Foorum::SUtils qw/schema/; use Foorum::XUtils qw/cache/; use Foorum::TestUtils qw/rollback_db/; use Foorum::Utils qw/encodeHTML/; my $schema = schema(); my $cache = cache(); my $forum_res = $schema->resultset('Forum'); # create a new forum $forum_res->create( { forum_id => 1, forum_code => 'test1111', name => 'FoorumTest', description => 'desc', forum_type => 'classical', policy => 'public', total_members => 1 } ); $schema->resultset('ForumSettings')->create( { forum_id => 1, type => 'can_post_threads', value => 'N', } ); $schema->resultset('ForumSettings')->create( { forum_id => 1, type => 'create_time', value => '123456', } ); $cache->remove('forum|forum_id=1'); # test get my $forum = $forum_res->get(1); # by forum_id; my $forum2 = $forum_res->get('test1111'); is_deeply( $forum, $forum2, 'get by forum_id and forum_code is the same' ); is( $forum->{forum_type}, 'classical', 'forum_type OK' ); is( $forum->{policy}, 'public', 'policy OK' ); is( $forum->{name}, 'FoorumTest', 'name OK' ); is( $forum->{forum_url}, '/forum/test1111', 'forum_url OK' ); # test forum_settings is( $forum->{settings}->{can_post_threads}, 'N', 'settings can_post_threads OK' ); is( $forum->{settings}->{create_time}, undef, 'by default, we do NOT get create_time forum settings' ); # test update $forum_res->update_forum( 1, { name => 'FoorumTest2', forum_code => 'test2222' } ); $forum = $forum_res->get(1); # by forum_id; $forum2 = $forum_res->get('test2222'); is_deeply( $forum, $forum2, 'get by forum_id and forum_code is the same after update_forum' ); is( $forum->{name}, 'FoorumTest2', 'name OK after update_forum' ); is( $forum->{forum_url}, '/forum/test2222', 'forum_url OK after update_forum' ); # test remove $forum_res->remove_forum(1); my $count = $forum_res->count( { forum_id => 1 } ); is( $count, 0, 'remove OK' ); # test validate_forum_code my $st = $forum_res->validate_forum_code('5char'); is( $st, 'LENGTH', '5char breaks' ); $st = $forum_res->validate_forum_code('22charsabcdefghijklmno'); is( $st, 'LENGTH', '22chars breaks' ); $st = $forum_res->validate_forum_code('a cdddef'); is( $st, 'HAS_BLANK', 'HAS_BLANK' ); $st = $forum_res->validate_forum_code('a$b@dge'); is( $st, 'REGEX', 'REGEX' ); $st = $forum_res->validate_forum_code('1234567'); is( $st, 'REGEX', 'all num breaks' ); $schema->resultset('FilterWord')->create( { word => 'faylandlam', type => 'forum_code_reserved' } ); $cache->remove('filter_word|type=forum_code_reserved'); $st = $forum_res->validate_forum_code('FaylandLam'); is( $st, 'HAS_RESERVED', 'HAS_RESERVED' ); my $v_forum_code = 'faylandforever'; $forum_res->create( { forum_id => 123, forum_code => $v_forum_code, name => 'FoorumTest', description => 'desc', forum_type => 'classical', policy => 'public', total_members => 1 } ); $st = $forum_res->validate_forum_code($v_forum_code); is( $st, 'DBIC_UNIQUE', 'DBIC_UNIQUE' ); END { # Keep Database the same from original rollback_db(); } 1;