File: 03_modify.t

package info (click to toggle)
libcatmandu-fedoracommons-perl 0.5-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 568 kB
  • sloc: perl: 2,523; xml: 78; makefile: 7
file content (112 lines) | stat: -rw-r--r-- 5,231 bytes parent folder | download
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
use Test::More tests=>72;
use Data::Dumper;
use Catmandu::FedoraCommons;

my $host = $ENV{FEDORA_HOST} || "";
my $port = $ENV{FEDORA_PORT} || "";
my $user = $ENV{FEDORA_USER} || "";
my $pwd  = $ENV{FEDORA_PWD} || "";

SKIP: {
    skip "No Fedora server environment settings found (FEDORA_HOST,"
	 . "FEDORA_PORT,FEDORA_USER,FEDORA_PWD).", 
	72 if (! $host || ! $port || ! $user || ! $pwd);
	
    my $x = Catmandu::FedoraCommons->new("http://$host:$port/fedora",$user,$pwd);

    ok($res = $x->addDatastream(pid => 'demo:29', dsID => 'TEST' , file => 'README', mimeType => 'text/plain'), 'addDatastream(file)');
    ok($res->is_ok, 'is_ok');
    ok($obj = $res->parse_content, 'parse_content');
    ok($obj->{dsID} eq 'TEST','got a new dsID'); 
    ok($obj->{profile}->{dsMIME} eq 'text/plain','text/plain type');

    ok($res = $x->addDatastream(pid => 'demo:29', dsID => 'TEST2' , url => 'http://www.google.com', mimeType => 'text/html' , controlGroup => 'R'), 'addDatastream(url)');
    ok($res->is_ok, 'is_ok');
    ok($obj = $res->parse_content, 'parse_content');
    ok($obj->{dsID} eq 'TEST2','got a new dsID'); 
    ok($obj->{profile}->{dsControlGroup} eq 'R','got R as control group');

    ok($res = $x->addDatastream(pid => 'demo:29', dsID => 'TEST3' , file => 't/marc.xml', mimeType => 'text/xml' , controlGroup => 'X'), 'addDatastream(xml)');
    ok($res->is_ok, 'is_ok');
    ok($obj = $res->parse_content, 'parse_content');
    ok($obj->{dsID} eq 'TEST3','got a new dsID'); 
    ok($obj->{profile}->{dsControlGroup} eq 'X','got X as control group');

    ok($res = $x->purgeDatastream(pid => 'demo:29', dsID => 'TEST'),'purge TEST');
    ok($res = $x->purgeDatastream(pid => 'demo:29', dsID => 'TEST2'),'purge TEST2');
    ok($res = $x->purgeDatastream(pid => 'demo:29', dsID => 'TEST3'),'purge TEST3');

    ok($res = $x->addRelationship(pid => 'demo:29' , relation => [ 'info:fedora/demo:29' , 'http://my.org/name' , 'Peter']),'add relationship');
    ok($res->is_ok, 'is_ok');
    ok($res->parse_content, 'parse_content');

    ok($res = $x->getRelationships(pid => 'demo:29', relation => [ undef , 'http://my.org/name']),'get relationship');
    ok($res->is_ok,'is_ok');
    ok($model = $res->parse_content,'parse_content');
    ok(exists $model->as_hashref->{'info:fedora/demo:29'},'check model');

    ok($res = $x->purgeRelationship(pid => 'demo:29' , relation => [ 'info:fedora/demo:29' , 'http://my.org/name' , 'Peter']),'purge relationship');

    ok($res = $x->export(pid => 'demo:29'),'export');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content,'parse_content');

    ok($res = $x->getDatastream(pid => 'demo:29', dsID => 'DC'),'getDatastream');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');
    is($obj->{profile}->{dsFormatURI},'http://www.openarchives.org/OAI/2.0/oai_dc/','check model');

    ok($res = $x->getDatastreamHistory(pid => 'demo:29', dsID => 'DC'),'getDatastreamHistory');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');
    ok(@{$obj->{profile}} == 1,'check model');

    ok($res = $x->getNextPID('changeme'),'getNextPID');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');
    ok(@{$obj} == 1,'check model');

    ok($res = $x->getObjectXML(pid => 'demo:29'),'getObjectXML');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content,'parse_content');

    ok($res = $x->ingest(pid => 'demo:40', file => 't/obj_demo_40.zip', format => 'info:fedora/fedora-system:ATOMZip-1.1'),'ingest demo:40');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->purgeObject(pid => 'demo:40'),'purge demo:40');

    $res = $x->addDatastream(pid => 'demo:29', dsID => 'TEST' , file => 'README' , mimeType => 'text/plain');

    ok($res = $x->modifyDatastream(pid => 'demo:29', dsID => 'TEST' , file => 't/marc.xml', mimeType => 'text/xml'),'modifyDatastream');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->purgeDatastream(pid => 'demo:29', dsID => 'TEST'),'purgeDatastream');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->modifyObject(pid => 'demo:29' , state => 'I'),'modifyObject');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->modifyObject(pid => 'demo:29' , state => 'A'),'modifyObject');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->setDatastreamState(pid => 'demo:29' , dsID => 'url' , dsState => 'A'),'setDatastreamState');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->setDatastreamVersionable(pid => 'demo:29' , dsID => 'url' , versionable => 'false'),'setDatastreamVersionable');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->validate(pid => 'demo:29'),'validate');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');

    ok($res = $x->upload(file => 't/marc.xml'),'upload');
    ok($res->is_ok,'is_ok');
    ok($obj = $res->parse_content, 'parse_content');
}