Skip to content

Commit 3ee8fc6

Browse files
committed
refactor: Parametrize json serialization tests
1 parent c54ddb9 commit 3ee8fc6

File tree

10 files changed

+245
-59
lines changed

10 files changed

+245
-59
lines changed

tests/ExamplesTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
use PHPUnit\Framework\TestCase;
4+
use Scriptotek\Marc\AuthorityRecord;
5+
use Scriptotek\Marc\BibliographicRecord;
6+
use Scriptotek\Marc\Fields\Subject;
7+
use Scriptotek\Marc\HoldingsRecord;
8+
use Scriptotek\Marc\Marc21;
9+
use Scriptotek\Marc\Record;
10+
11+
class ExamplesTest extends TestCase
12+
{
13+
/**
14+
* @dataProvider testExampleDataProvider
15+
*/
16+
public function testExample($filename) {
17+
$record = Record::fromFile($filename);
18+
$jsonFilename = substr($filename, 0, strrpos($filename, ".")) . '.json';
19+
if (!file_exists($jsonFilename)) {
20+
file_put_contents($jsonFilename, json_encode($record, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
21+
} else {
22+
$jsonData = file_get_contents($jsonFilename);
23+
$this->assertJsonStringEqualsJsonString($jsonData, json_encode($record));
24+
}
25+
}
26+
27+
public function testExampleDataProvider() {
28+
foreach (glob(__DIR__ . '/data/examples/*.xml') as $filename) {
29+
yield [$filename];
30+
}
31+
}
32+
}

tests/RecordTest.php

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -82,65 +82,6 @@ public function testRecordTypeBiblio()
8282
$this->assertInstanceOf(BibliographicRecord::class, $record);
8383
}
8484

85-
public function testRecordTypeAuthority()
86-
{
87-
$record = Record::fromFile(__DIR__ . '/data/authority-bibsys.xml');
88-
89-
$this->assertInstanceOf(Record::class, $record);
90-
$this->assertInstanceOf(AuthorityRecord::class, $record);
91-
}
92-
93-
public function testRecordTypeHoldings()
94-
{
95-
$record = Record::fromFile(__DIR__ . '/data/holdings.xml');
96-
97-
$this->assertInstanceOf(Record::class, $record);
98-
$this->assertInstanceOf(HoldingsRecord::class, $record);
99-
100-
$this->assertEquals('1030310', $record->location->sublocation);
101-
$this->assertEquals('k00473', $record->location->shelvinglocation);
102-
$this->assertEquals('Plv 157', $record->location->callcode);
103-
}
104-
105-
public function testHoldingsToJson()
106-
{
107-
$record = Record::fromFile(__DIR__ . '/data/holdings.xml');
108-
109-
$this->assertEquals([
110-
'type' => MARC21::HOLDINGS,
111-
'id' => 'h2051843-47bibsys_ubo',
112-
'location' => [
113-
'sublocation' => '1030310',
114-
'shelvinglocation' => 'k00473',
115-
'callcode' => 'Plv 157',
116-
],
117-
], $record->jsonSerialize());
118-
}
119-
120-
public function testBibliographicToJson()
121-
{
122-
$record = Record::fromFile(__DIR__ . '/data/bibliographic.xml');
123-
124-
$this->assertEquals([
125-
'type' => MARC21::BIBLIOGRAPHIC,
126-
'id' => '999401461934702201',
127-
'title' => 'The eightfold way',
128-
'subjects' => [
129-
[
130-
'type' => Subject::TOPICAL_TERM,
131-
'vocabulary' => 'lcsh',
132-
'term' => 'Eightfold way (Nuclear physics) : Addresses, essays, lectures',
133-
],
134-
[
135-
'type' => Subject::TOPICAL_TERM,
136-
'vocabulary' => 'lcsh',
137-
'term' => 'Nuclear reactions : Addresses, essays, lectures',
138-
],
139-
],
140-
'isbns' => [],
141-
], $record->jsonSerialize());
142-
}
143-
14485
public function testRecordTypeDescriptiveCatalogingForm()
14586
{
14687
$source = '<?xml version="1.0" encoding="UTF-8" ?>

tests/data/examples/authority.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"id": "90081146"
3+
}
File renamed without changes.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"id": "999401461934702201",
3+
"isbns": [],
4+
"title": "The eightfold way",
5+
"subjects": [
6+
{
7+
"type": "650",
8+
"vocabulary": "lcsh",
9+
"term": "Eightfold way (Nuclear physics) : Addresses, essays, lectures"
10+
},
11+
{
12+
"type": "650",
13+
"vocabulary": "lcsh",
14+
"term": "Nuclear reactions : Addresses, essays, lectures"
15+
}
16+
]
17+
}
File renamed without changes.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{
2+
"id": "999217148824702204",
3+
"isbns": [
4+
"0471616389"
5+
],
6+
"title": "Acousto-optic devices : principles, design, and applications",
7+
"subjects": [
8+
{
9+
"type": "650",
10+
"vocabulary": "lcsh",
11+
"term": "Acoustooptical devices"
12+
},
13+
{
14+
"type": "650",
15+
"vocabulary": "noubomn",
16+
"term": "Komponenter"
17+
},
18+
{
19+
"type": "650",
20+
"vocabulary": "noubomn",
21+
"term": "Akustikk",
22+
"id": "(NO-TrBIB)REAL013572"
23+
},
24+
{
25+
"type": "650",
26+
"vocabulary": "tekord",
27+
"term": "Optikk"
28+
},
29+
{
30+
"type": "650",
31+
"vocabulary": "tekord",
32+
"term": "Akustikk"
33+
},
34+
{
35+
"type": "650",
36+
"vocabulary": "tekord",
37+
"term": "Optiske instrumenter"
38+
},
39+
"akustooptiske",
40+
"effekter",
41+
"komponenter"
42+
]
43+
}
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<collection xmlns="http://www.loc.gov/MARC21/slim">
3+
<record>
4+
<leader>01167cam a2200373 c 4500</leader>
5+
<controlfield tag="001">999217148824702204</controlfield>
6+
<controlfield tag="005">20171003030038.0</controlfield>
7+
<controlfield tag="007">ta</controlfield>
8+
<controlfield tag="008">150604s1992 xx#|||||||||||000|u|eng|d</controlfield>
9+
<datafield tag="020" ind1=" " ind2=" ">
10+
<subfield code="a">0471616389</subfield>
11+
</datafield>
12+
<datafield tag="035" ind1=" " ind2=" ">
13+
<subfield code="a">921714882-47bibsys_network</subfield>
14+
</datafield>
15+
<datafield tag="035" ind1=" " ind2=" ">
16+
<subfield code="a">(NO-TrBIB)921714882</subfield>
17+
</datafield>
18+
<datafield tag="035" ind1=" " ind2=" ">
19+
<subfield code="a">(EXLNZ-47BIBSYS_NETWORK)999217148824702201</subfield>
20+
</datafield>
21+
<datafield tag="040" ind1=" " ind2=" ">
22+
<subfield code="a">NO-TrBIB</subfield>
23+
<subfield code="b">nob</subfield>
24+
<subfield code="e">katreg</subfield>
25+
</datafield>
26+
<datafield tag="080" ind1=" " ind2=" ">
27+
<subfield code="a">535</subfield>
28+
</datafield>
29+
<datafield tag="080" ind1=" " ind2=" ">
30+
<subfield code="a">681.7</subfield>
31+
</datafield>
32+
<datafield tag="080" ind1=" " ind2=" ">
33+
<subfield code="a">534</subfield>
34+
</datafield>
35+
<datafield tag="084" ind1=" " ind2=" ">
36+
<subfield code="a">b4170</subfield>
37+
<subfield code="q">NoOU</subfield>
38+
<subfield code="2">inspec</subfield>
39+
</datafield>
40+
<datafield tag="084" ind1=" " ind2=" ">
41+
<subfield code="a">a7820h</subfield>
42+
<subfield code="q">NoOU</subfield>
43+
<subfield code="2">inspec</subfield>
44+
</datafield>
45+
<datafield tag="084" ind1=" " ind2=" ">
46+
<subfield code="a">a4280</subfield>
47+
<subfield code="q">NoOU</subfield>
48+
<subfield code="2">inspec</subfield>
49+
</datafield>
50+
<datafield tag="097" ind1=" " ind2=" ">
51+
<subfield code="a">2.6xuj</subfield>
52+
<subfield code="9">LOCAL</subfield>
53+
</datafield>
54+
<datafield tag="097" ind1=" " ind2=" ">
55+
<subfield code="a">a4280</subfield>
56+
<subfield code="9">LOCAL</subfield>
57+
</datafield>
58+
<datafield tag="097" ind1=" " ind2=" ">
59+
<subfield code="a">a7820h</subfield>
60+
<subfield code="9">LOCAL</subfield>
61+
</datafield>
62+
<datafield tag="097" ind1=" " ind2=" ">
63+
<subfield code="a">b4170</subfield>
64+
<subfield code="9">LOCAL</subfield>
65+
</datafield>
66+
<datafield tag="100" ind1="1" ind2=" ">
67+
<subfield code="a">Xu, Jieping</subfield>
68+
<subfield code="0">(NO-TrBIB)90625942</subfield>
69+
</datafield>
70+
<datafield tag="245" ind1="1" ind2="0">
71+
<subfield code="a">Acousto-optic devices :</subfield>
72+
<subfield code="b">principles, design, and applications</subfield>
73+
<subfield code="c">Jieping Xu, Robert Stroud</subfield>
74+
</datafield>
75+
<datafield tag="260" ind1=" " ind2=" ">
76+
<subfield code="a">New York</subfield>
77+
<subfield code="b">Wiley</subfield>
78+
<subfield code="c">c1992</subfield>
79+
</datafield>
80+
<datafield tag="300" ind1=" " ind2=" ">
81+
<subfield code="a">xvii, 652 s.</subfield>
82+
<subfield code="b">ill.</subfield>
83+
</datafield>
84+
<datafield tag="490" ind1="0" ind2=" ">
85+
<subfield code="a">Wiley series in pure and applied optics</subfield>
86+
</datafield>
87+
<datafield tag="500" ind1=" " ind2=" ">
88+
<subfield code="a">&quot;A Wiley-Interscience publication&quot;</subfield>
89+
</datafield>
90+
<datafield tag="650" ind1=" " ind2="0">
91+
<subfield code="a">Acoustooptical devices</subfield>
92+
</datafield>
93+
<datafield tag="650" ind1=" " ind2="7">
94+
<subfield code="a">Komponenter</subfield>
95+
<subfield code="2">noubomn</subfield>
96+
</datafield>
97+
<datafield tag="650" ind1=" " ind2="7">
98+
<subfield code="a">Akustikk</subfield>
99+
<subfield code="2">noubomn</subfield>
100+
<subfield code="0">(NO-TrBIB)REAL013572</subfield>
101+
</datafield>
102+
<datafield tag="650" ind1=" " ind2="7">
103+
<subfield code="a">Optikk</subfield>
104+
<subfield code="2">tekord</subfield>
105+
</datafield>
106+
<datafield tag="650" ind1=" " ind2="7">
107+
<subfield code="a">Akustikk</subfield>
108+
<subfield code="2">tekord</subfield>
109+
</datafield>
110+
<datafield tag="650" ind1=" " ind2="7">
111+
<subfield code="a">Optiske instrumenter</subfield>
112+
<subfield code="2">tekord</subfield>
113+
</datafield>
114+
<datafield tag="653" ind1=" " ind2=" ">
115+
<subfield code="a">akustooptiske</subfield>
116+
<subfield code="a">effekter</subfield>
117+
<subfield code="a">komponenter</subfield>
118+
</datafield>
119+
<datafield tag="700" ind1="1" ind2=" ">
120+
<subfield code="a">Stroud, Robert</subfield>
121+
<subfield code="0">(NO-TrBIB)90625943</subfield>
122+
</datafield>
123+
<datafield tag="901" ind1=" " ind2=" ">
124+
<subfield code="a">80</subfield>
125+
</datafield>
126+
<datafield tag="AVA" ind1=" " ind2=" ">
127+
<subfield code="0">999217148824702204</subfield>
128+
<subfield code="8">22113844840002204</subfield>
129+
<subfield code="a">47BIBSYS_UBO</subfield>
130+
<subfield code="b">1030310</subfield>
131+
<subfield code="c">UREAL Fys.</subfield>
132+
<subfield code="d">2.6 XUJ</subfield>
133+
<subfield code="e">available</subfield>
134+
<subfield code="f">1</subfield>
135+
<subfield code="g">0</subfield>
136+
<subfield code="j">k00440</subfield>
137+
<subfield code="k">8</subfield>
138+
<subfield code="p">1</subfield>
139+
<subfield code="q">UiO Realfagsbiblioteket</subfield>
140+
</datafield>
141+
</record>
142+
</collection>

tests/data/examples/holdings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"id": "h2051843-47bibsys_ubo",
3+
"location": {
4+
"sublocation": "1030310",
5+
"shelvinglocation": "k00473",
6+
"callcode": "Plv 157"
7+
}
8+
}
File renamed without changes.

0 commit comments

Comments
 (0)