1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
use Test2::V0;
# Test data uses only minimum arguments for entity constructors
# These were set as required only to aid in automatic detection,
# which makes blind coercion possible
#
my $samples = {
Account => {
acct => 'username',
avatar => 'https://example.tld/image.png',
},
Application => {
website => 'https://website.xyz',
},
Attachment => {
preview_url => 'https://example.tld/image.png',
},
Card => {
description => 'A card',
url => 'https://website.xyz',
},
Context => {
ancestors => [],
descendants => [],
},
Error => {
error => 'An error',
},
Instance => {
uri => 'botsin.space',
},
Mention => {
acct => 'username@instance.xyz',
username => 'tester',
},
Relationship => {
muting => 0,
},
Report => {
action_taken => 0,
},
Results => {
hashtags => [ 'tag '],
},
Tag => {
url => 'https://website.xyz',
}
};
my ($account, $status);
test($_) foreach qw(
Account Instance Application Attachment Card Context
Mention Relationship Report Results Error Tag
);
$samples->{Status} = {
account => $account,
visibility => 'public',
favourites_count => 123,
};
test('Status');
$samples->{Notification} = {
status => $status,
};
test('Notification');
sub test {
my $name = shift;
eval "use Mastodon::Entity::$name";
ok my $e = "Mastodon::Entity::$name"->new($samples->{$name}),
"$name constructor succeeds";
$account = $e if $name eq 'Account';
$status = $e if $name eq 'Status';
isa_ok $e, "Mastodon::Entity::$name";
}
done_testing();
|