#!/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 => 14; } 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 $topic_res = $schema->resultset('Topic'); my $post_on = time(); my $create = { topic_id => 1, forum_id => 1, title => 'test title', closed => 0, author_id => 1, last_updator_id => 1, }; # test create topic $cache->remove('topic|topic_id=1'); $topic_res->create_topic($create); $create->{topic_id} = 5; $create->{last_update_date} = time() + 2; $topic_res->create_topic($create); $create->{topic_id} = 3; $create->{last_update_date} = time() + 5; $topic_res->create_topic($create); my $starred = $schema->resultset('Star')->count( { user_id => 1, object_type => 'topic', object_id => 1, } ); is( $starred, 1, 'has Star record' ); # test get my $topic = $topic_res->get(1); is( $topic->{forum_id}, 1, 'get forum_id OK' ); is( $topic->{title}, 'test title', 'get title OK' ); is( $topic->{author_id}, 1, 'get author_id OK' ); cmp_ok( $topic->{post_on}, '>=', $post_on, 'topic.post_on >= $post_on' ); cmp_ok( $topic->{post_on}, '<=', time(), 'topic.post_on <= now' ); # test update_topic $topic_res->update_topic( 1, { title => 'test title2', author_id => 2 } ); $topic = $topic_res->get(1); is( $topic->{title}, 'test title2', 'get title OK after update_topic' ); is( $topic->{author_id}, 2, 'get author_id OK after update_topic' ); # be Sure forum is there before remove topic $schema->resultset('Forum')->create( { forum_id => 1, forum_code => 'test1111', name => 'FoorumTest', description => 'desc', forum_type => 'classical', policy => 'public', total_members => 1, total_topics => 7, total_replies => 1, } ); # test get_topic_id_list $cache->remove('topic|get_topic_id_list|forum_id=1'); my @ids = $topic_res->get_topic_id_list(1); is_deeply( \@ids, [ 3, 5, 1 ], 'get_topic_id_list OK' ); # test remove $topic_res->remove( 1, { operator_id => 2, log_text => 'delete for test', } ); $starred = $schema->resultset('Star')->count( { user_id => 1, object_type => 'topic', object_id => 1, } ); is( $starred, 0, 'no Star record after remove' ); $topic = $topic_res->get(1); is( $topic, undef, 'topic is undef after remove' ); my $log_action = $schema->resultset('LogAction')->search( { action => 'delete', object_type => 'topic', object_id => 1, } )->first; isnt( $log_action, undef, 'has LogAction record' ); is( $log_action->user_id, 2, 'operator_id OK' ); is( $log_action->text, 'delete for test', 'LogAction reason OK' ); END { # Keep Database the same from original rollback_db(); } 1;