- #!/usr/bin/env perl
-
- use strict;
- use warnings;
-
- use lib 'lib';
-
- use Data::Dumper;
- use Test::More tests => 34;
- use App::WRT;
-
- chdir 'example/blog';
-
- my $es = App::WRT::EntryStore->new('archives');
-
- # listing out of all source files:
-
- my (@all_source_files) = $es->all();
- note("got " . scalar @all_source_files . " source files.");
- ok(
- scalar @all_source_files > 0,
- "got some nonzero set of source files from all()"
- );
-
- # checking an entry exists:
-
- ok(
- $es->is_extant('2014'),
- '2014 exists'
- );
-
- # checking entries are renderable or not:
-
- ok(
- $es->is_renderable('2014'),
- '2014 is renderable'
- );
-
- ok(
- $es->is_renderable('i_do_not_exist'),
- 'a nonexistent entry path is theoretically renderable'
- );
-
- # listing entries like 2014/1/1 for an individual day:
-
- my (@all_day_entries) = $es->all_days();
- ok(
- scalar @all_day_entries == 3,
- 'got 3 day entries from example archive, as expected'
- );
-
- # listing entries like 2014/1 for a month:
-
- my (@all_month_entries) = $es->all_months();
- ok(
- scalar @all_month_entries == 4,
- 'got 4 month entries from example archive, as expected'
- );
-
- # listing entries like 2014 for a year:
-
- my (@all_year_entries) = $es->all_years();
- ok(
- scalar @all_year_entries == 4,
- 'got 4 year entries from example archive, as expected'
- );
-
- # listing days contained by a month or year:
-
- my (@days_for_jan) = $es->days_for('2014/1');
- my @expected_days_for_jan = ('2014/1/1', '2014/1/2');
- is_deeply(
- \@days_for_jan,
- \@expected_days_for_jan,
- 'got expected days for january 2014'
- );
-
- my (@days_for_1952) = $es->days_for('1952');
- my @expected_days_for_1952 = ('1952/2/13');
- is_deeply(
- \@days_for_1952,
- \@expected_days_for_1952,
- 'got expected days for 1952'
- );
-
- # listing months contained by a year:
-
- my (@months_for_2013) = $es->months_for('2013');
- my @expected_months_for_2013 = ('2013/1', '2013/2');
- is_deeply(
- \@months_for_2013,
- \@expected_months_for_2013,
- 'got expected months for 2013'
- );
-
- # next / previous
-
- ok(
- $es->next('2014/1/1') eq '2014/1/2',
- 'got a next day for 2014/1/1'
- );
-
- ok(
- $es->previous('2014/1/2') eq '2014/1/1',
- 'got a prev day for 2014/1/2'
- );
-
- # property finding by entry / entry finding by property
-
- ok(
- ($es->by_prop('tag.something'))[0] eq '2014/1/2',
- 'found 2014/1/2 for tag.something.prop'
- );
-
- ok(
- $es->has_prop('2014/1/2', 'tag.something'),
- '2014/1/2 has tag.something.prop'
- );
-
- # diag(Dumper($es->by_prop('something')));
- # diag(scalar($es->by_prop('something')));
- ok(
- scalar($es->by_prop('something')) == 0,
- 'did not find any entries for something.prop'
- );
-
- ok(
- 'tag.something' eq ($es->props_for('2014/1/2'))[0],
- 'found tag.something for 2014/1/2'
- );
-
- my @all_props = $es->all_props();
- ok(
- scalar(@all_props) == 6,
- 'found 6 properties for example repo'
- ) or diag(join ', ', @all_props);
-
- # property values:
-
- my $foo_prop = $es->prop_value('prop_value_test', 'foo');
- chomp($foo_prop);
- note('Property: ' . $foo_prop);
- is(
- 'bar',
- $foo_prop,
- 'got expected property value for prop_value_test'
- );
-
- ok(
- ! defined $es->prop_value('title_test', 'no-such-prop'),
- 'nonexistent property is undefined'
- );
-
- # finding parents of entries:
-
- my $date_parent = $es->parent('2014/1/2');
- ok(
- $date_parent eq '2014/1',
- 'found correct parent for 2014/1/2'
- ) or diag($date_parent);
-
- my $icon_parent = $es->parent('icon_test');
- ok(
- ! defined $icon_parent,
- 'found no parent for icon_test'
- ) or diag($icon_parent);
-
- eval {
- $es->parent('i_do_not_exist');
- };
- ok(
- $@,
- "croaked on trying to find parent of a nonexistent entry"
- );
-
- # finding children of entries, sub-entries
-
- my @children = $es->children('2013');
- ok(
- @children == 4,
- "got 4 children for 2013"
- ) or diag(join ', ', @children);
-
- my @children_2012 = $es->children('2012');
- ok(
- @children_2012 == 0,
- "got no children for 2012"
- ) or diag(join ', ', @children_2012);
-
- my @children_basenames = $es->children_basenames('2013');
- ok(
- (! grep { m/\// } @children_basenames),
- "children_basenames() output doesn't include slashes"
- ) or diag(join ', ', @children_basenames);
-
- my (@sub_entries) = $es->get_sub_entries('icon_test');
- my (@expected_sub_entries) = ('dir', 'textfile');
- is_deeply(
- \@sub_entries,
- \@expected_sub_entries,
- 'expected 2 alphabetically sorted sub-entries for icon_test'
- ) or diag(join ', ', @sub_entries);
-
- # checking whether entries are directories, flatfiles, etc.
-
- ok(
- $es->is_dir('2014'),
- '2014 is a directory, as expected'
- );
-
- ok(
- ! $es->is_dir('2014/1/1/test_entry'),
- '2014/1/1/test_entry is not a directory, as expected'
- );
-
- ok(
- $es->is_file('2014/1/1/test_entry'),
- '2014/1/1/test_entry is a flatfile, as expected'
- );
-
- # checking whether an entry is a directory with an index:
-
- ok(
- $es->has_index('2014/1/1'),
- '2014/1/1 has an index file'
- );
-
- ok(
- ! $es->has_index('icon_test/textfile'),
- 'icon_test/textfile does not have an index'
- );
-
- # basename of an entry:
-
- ok(
- $es->basename('1969/2/1') eq '1',
- 'got an expected basename for a day'
- );
-
- ok(
- $es->basename('1969/2') eq '2',
- 'got an expected basename for a month'
- );
-
- ok(
- $es->basename('1969') eq '1969',
- 'got an expected basename for a year'
- );
-
- # diag(Dumper($es->{entry_properties}));
- # diag(Dumper($es->{property_entries}));
|