diff options
Diffstat (limited to 't/miscsearch.t')
-rw-r--r-- | t/miscsearch.t | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/t/miscsearch.t b/t/miscsearch.t new file mode 100644 index 00000000..ec837153 --- /dev/null +++ b/t/miscsearch.t @@ -0,0 +1,48 @@ +#!perl -w +# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org> +# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> +use strict; +use v5.10.1; +use Test::More; +use PublicInbox::TestCommon; +require_mods(qw(Xapian DBD::SQLite)); +use_ok 'PublicInbox::MiscSearch'; +use_ok 'PublicInbox::MiscIdx'; + +my ($tmp, $for_destroy) = tmpdir(); +my $eidx = { xpfx => "$tmp/eidx", -no_fsync => 1 }; # mock ExtSearchIdx +my $v1 = create_inbox 'hope', address => [ 'nope@example.com' ], + indexlevel => 'basic', -no_gc => 1, sub { + my ($im, $ibx) = @_; + open my $fh, '>', "$ibx->{inboxdir}/description" or BAIL_OUT "open: $!"; + print $fh "Everything sucks this year\n" or BAIL_OUT "print $!"; + close $fh or BAIL_OUT "close $!"; +}; +my $midx = PublicInbox::MiscIdx->new($eidx); +$midx->index_ibx($v1); +$midx->commit_txn; +undef $v1; + +my $ms = PublicInbox::MiscSearch->new("$tmp/eidx/misc"); +my $mset = $ms->mset('"everything sucks today"'); +is(scalar($mset->items), 0, 'no match on description phrase'); + +$mset = $ms->mset('"everything sucks this year"'); +is(scalar($mset->items), 1, 'match phrase on description'); + +$mset = $ms->mset('everything sucks'); +is(scalar($mset->items), 1, 'match words in description'); + +$mset = $ms->mset('nope@example.com'); +is(scalar($mset->items), 1, 'match full address'); + +$mset = $ms->mset('nope'); +is(scalar($mset->items), 1, 'match partial address'); + +$mset = $ms->mset('hope'); +is(scalar($mset->items), 1, 'match name'); +my $mi = ($mset->items)[0]; +my $doc = $mi->get_document; +is($doc->get_data, '{}', 'stored empty data'); + +done_testing; |