use strict;
use warnings;
use Test::More tests => 8;
use lib 't/lib';
use MyTestHelpers;
use_ok('Rose::DBx::Object::Indexed');
use_ok('Rose::DBx::Object::Indexed::Indexer::KSx');
SKIP: {
eval { require SWISH::Prog::KSx };
if ($@) {
skip "SWISH::Prog::KSx required for KSx Indexer tests", 6;
}
# create a temp db
ok( my $db = MyTestHelpers->new_db(), "new RDB object" );
{
package KSIndexer;
@KSIndexer::ISA = qw( Rose::DBx::Object::Indexed::Indexer::KSx );
sub init_invindex {'t/test.index'}
sub init_indexer_class {'SWISH::Prog::KSx::Indexer'}
}
END {
# clean up after ourselves
unless ( $ENV{PERL_DEBUG} ) {
Path::Class::dir( 't', 'test.index' )->rmtree;
}
}
# monkeypatch our main indexed class to allow it to be indexed.
sub MyTest::Product::index_eligible {1}
sub MyTest::Product::init_indexer_class {'KSIndexer'}
# create some data
ok( my $product = MyTest::Product->new( name => 'Sled', db => $db ),
"new product" );
ok( $product->vendor( name => 'Acme' ), "set vendor" );
ok( $product->prices(
{ price => 1.23, region => 'US' },
{ price => 4.56, region => 'UK' }
),
"set prices"
);
ok( $product->colors( { name => 'red' }, { name => 'green' } ),
"set colors" );
ok( $product->save, "write to index and db" );
} # end SKIP