Skip to content

Commit ed3dbc4

Browse files
committed
Refactor: Move Bib magic to Model
1 parent f2085b6 commit ed3dbc4

File tree

5 files changed

+181
-183
lines changed

5 files changed

+181
-183
lines changed

spec/Bibs/BibSpec.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ public function it_is_lazy(AlmaClient $client)
3333
$this->shouldHaveType(Bib::class);
3434
}
3535

36-
public function it_loads_bib_data_when_needed(AlmaClient $client)
36+
public function it_fetches_record_data_when_needed(AlmaClient $client)
3737
{
3838
$this->expectRequest($client);
3939

40+
$this->created_by->shouldBe('import');
4041
$this->created_date->shouldBe('2015-11-05Z');
4142
}
4243

spec/data/bib_response.xml

Lines changed: 163 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -1,158 +1,163 @@
1-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bib><mms_id>990114012304702204</mms_id><holdings link="https://api-na.hosted.exlibrisgroup.com/almaws/v1/bibs/990114012304702204/holdings"/><created_by>import</created_by><created_date>2015-02-10Z</created_date><record>
2-
3-
<leader>01726cam a2200553 u 4500</leader>
4-
<controlfield tag="001">990114012304702201</controlfield>
5-
<controlfield tag="005">20080331083717.0</controlfield>
6-
<controlfield tag="007">ta</controlfield>
7-
<controlfield tag="008">080331s2001 xx#|||||| |000|u|eng|d</controlfield>
8-
<datafield ind1=" " ind2=" " tag="020">
9-
<subfield code="a">0471391069</subfield>
10-
<subfield code="q">ib.</subfield>
11-
</datafield>
12-
<datafield ind1=" " ind2=" " tag="035">
13-
<subfield code="a">011401230-47bibsys_ubo</subfield>
14-
</datafield>
15-
<datafield ind1=" " ind2=" " tag="035">
16-
<subfield code="a">(NO-TrBIB)011401230</subfield>
17-
</datafield>
18-
<datafield ind1=" " ind2=" " tag="040">
19-
<subfield code="a">NO-TrBIB</subfield>
20-
<subfield code="b">nob</subfield>
21-
<subfield code="e">katreg</subfield>
22-
</datafield>
23-
<datafield ind1=" " ind2=" " tag="080">
24-
<subfield code="a">535.6</subfield>
25-
</datafield>
26-
<datafield ind1=" " ind2=" " tag="080">
27-
<subfield code="a">541.14</subfield>
28-
</datafield>
29-
<datafield ind1="0" ind2="4" tag="082">
30-
<subfield code="a">535.6</subfield>
31-
</datafield>
32-
<datafield ind1="0" ind2="4" tag="082">
33-
<subfield code="a">535.6</subfield>
34-
<subfield code="q">NoBeU</subfield>
35-
</datafield>
36-
<datafield ind1=" " ind2=" " tag="084">
37-
<subfield code="a">a8732q</subfield>
38-
<subfield code="2">inspec</subfield>
39-
</datafield>
40-
<datafield ind1=" " ind2=" " tag="084">
41-
<subfield code="a">a8732n</subfield>
42-
<subfield code="2">inspec</subfield>
43-
</datafield>
44-
<datafield ind1=" " ind2=" " tag="084">
45-
<subfield code="a">a6170d</subfield>
46-
<subfield code="2">inspec</subfield>
47-
</datafield>
48-
<datafield ind1=" " ind2=" " tag="084">
49-
<subfield code="a">a0760d</subfield>
50-
<subfield code="2">inspec</subfield>
51-
</datafield>
52-
<datafield ind1=" " ind2=" " tag="097">
53-
<subfield code="a">0.6nas</subfield>
54-
<subfield code="9">LOCAL</subfield>
55-
</datafield>
56-
<datafield ind1=" " ind2=" " tag="097">
57-
<subfield code="a">a0760d</subfield>
58-
<subfield code="9">LOCAL</subfield>
59-
</datafield>
60-
<datafield ind1=" " ind2=" " tag="097">
61-
<subfield code="a">a6170d</subfield>
62-
<subfield code="9">LOCAL</subfield>
63-
</datafield>
64-
<datafield ind1=" " ind2=" " tag="097">
65-
<subfield code="a">a8732n</subfield>
66-
<subfield code="9">LOCAL</subfield>
67-
</datafield>
68-
<datafield ind1=" " ind2=" " tag="097">
69-
<subfield code="a">a8732q</subfield>
70-
<subfield code="9">LOCAL</subfield>
71-
</datafield>
72-
<datafield ind1="1" ind2=" " tag="100">
73-
<subfield code="a">Nassau, Kurt</subfield>
74-
<subfield code="0">(NO-TrBIB)x90229287</subfield>
75-
</datafield>
76-
<datafield ind1="1" ind2="0" tag="245">
77-
<subfield code="a">The physics and chemistry of color :</subfield>
78-
<subfield code="b">the fifteen causes of color</subfield>
79-
<subfield code="c">Kurt Nassau</subfield>
80-
</datafield>
81-
<datafield ind1=" " ind2=" " tag="250">
82-
<subfield code="a">2nd ed.</subfield>
83-
</datafield>
84-
<datafield ind1=" " ind2=" " tag="260">
85-
<subfield code="a">New York</subfield>
86-
<subfield code="b">Wiley</subfield>
87-
<subfield code="c">c2001</subfield>
88-
</datafield>
89-
<datafield ind1=" " ind2=" " tag="300">
90-
<subfield code="a">XX, 481 s., pl.</subfield>
91-
<subfield code="b">ill.</subfield>
92-
</datafield>
93-
<datafield ind1="1" ind2=" " tag="490">
94-
<subfield code="a">Wiley series in pure and applied optics</subfield>
95-
</datafield>
96-
<datafield ind1=" " ind2="7" tag="650">
97-
<subfield code="a">Fysikalsk kjemi</subfield>
98-
<subfield code="2">noubomn</subfield>
99-
</datafield>
100-
<datafield ind1=" " ind2="7" tag="650">
101-
<subfield code="a">Kjemi</subfield>
102-
<subfield code="2">noubomn</subfield>
103-
</datafield>
104-
<datafield ind1=" " ind2="7" tag="650">
105-
<subfield code="a">Fotokjemi</subfield>
106-
<subfield code="2">noubomn</subfield>
107-
</datafield>
108-
<datafield ind1=" " ind2="7" tag="650">
109-
<subfield code="a">Farger</subfield>
110-
<subfield code="2">noubomn</subfield>
111-
</datafield>
112-
<datafield ind1=" " ind2="7" tag="650">
113-
<subfield code="a">Fargelære</subfield>
114-
<subfield code="2">noubomn</subfield>
115-
</datafield>
116-
<datafield ind1=" " ind2="7" tag="650">
117-
<subfield code="a">Fysikk</subfield>
118-
<subfield code="2">noubomn</subfield>
119-
</datafield>
120-
<datafield ind1=" " ind2=" " tag="653">
121-
<subfield code="a">farger</subfield>
122-
</datafield>
123-
<datafield ind1=" " ind2=" " tag="653">
124-
<subfield code="a">fargelære</subfield>
125-
</datafield>
126-
<datafield ind1=" " ind2=" " tag="653">
127-
<subfield code="a">fysikk</subfield>
128-
</datafield>
129-
<datafield ind1=" " ind2=" " tag="653">
130-
<subfield code="a">fysikalsk</subfield>
131-
</datafield>
132-
<datafield ind1=" " ind2=" " tag="653">
133-
<subfield code="a">kjemi</subfield>
134-
</datafield>
135-
<datafield ind1=" " ind2=" " tag="653">
136-
<subfield code="a">fotokjemi</subfield>
137-
</datafield>
138-
<datafield ind1=" " ind2="0" tag="830">
139-
<subfield code="a">Wiley series in pure and applied optics</subfield>
140-
</datafield>
141-
<datafield ind1="4" ind2="2" tag="856">
142-
<subfield code="3">Beskrivelse fra forlaget (kort)</subfield>
143-
<subfield code="u">http://content.bibsys.no/content/?type=descr_publ_brief&amp;isbn=0471391069</subfield>
144-
</datafield>
145-
<datafield ind1="4" ind2="2" tag="856">
146-
<subfield code="3">Beskrivelse fra forlaget (lang)</subfield>
147-
<subfield code="u">http://content.bibsys.no/content/?type=descr_publ_full&amp;isbn=0471391069</subfield>
148-
</datafield>
149-
<datafield ind1="4" ind2="2" tag="856">
150-
<subfield code="3">Omslagsbilde</subfield>
151-
<subfield code="u">http://innhold.bibsys.no/bilde/forside/?size=mini&amp;id=0471391069.JPG</subfield>
152-
<subfield code="q">image/jpeg</subfield>
153-
</datafield>
154-
<datafield ind1=" " ind2=" " tag="901">
155-
<subfield code="a">kat2</subfield>
156-
</datafield>
157-
158-
</record></bib>
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2+
<bib>
3+
<mms_id>990114012304702204</mms_id>
4+
<holdings link="https://api-na.hosted.exlibrisgroup.com/almaws/v1/bibs/990114012304702204/holdings"/>
5+
<created_by>import</created_by>
6+
<created_date>2015-02-10Z</created_date>
7+
<record>
8+
<leader>01726cam a2200553 u 4500</leader>
9+
<controlfield tag="001">990114012304702201</controlfield>
10+
<controlfield tag="005">20080331083717.0</controlfield>
11+
<controlfield tag="007">ta</controlfield>
12+
<controlfield tag="008">080331s2001 xx#|||||| |000|u|eng|d</controlfield>
13+
<datafield ind1=" " ind2=" " tag="020">
14+
<subfield code="a">0471391069</subfield>
15+
<subfield code="q">ib.</subfield>
16+
</datafield>
17+
<datafield ind1=" " ind2=" " tag="035">
18+
<subfield code="a">011401230-47bibsys_ubo</subfield>
19+
</datafield>
20+
<datafield ind1=" " ind2=" " tag="035">
21+
<subfield code="a">(NO-TrBIB)011401230</subfield>
22+
</datafield>
23+
<datafield ind1=" " ind2=" " tag="040">
24+
<subfield code="a">NO-TrBIB</subfield>
25+
<subfield code="b">nob</subfield>
26+
<subfield code="e">katreg</subfield>
27+
</datafield>
28+
<datafield ind1=" " ind2=" " tag="080">
29+
<subfield code="a">535.6</subfield>
30+
</datafield>
31+
<datafield ind1=" " ind2=" " tag="080">
32+
<subfield code="a">541.14</subfield>
33+
</datafield>
34+
<datafield ind1="0" ind2="4" tag="082">
35+
<subfield code="a">535.6</subfield>
36+
</datafield>
37+
<datafield ind1="0" ind2="4" tag="082">
38+
<subfield code="a">535.6</subfield>
39+
<subfield code="q">NoBeU</subfield>
40+
</datafield>
41+
<datafield ind1=" " ind2=" " tag="084">
42+
<subfield code="a">a8732q</subfield>
43+
<subfield code="2">inspec</subfield>
44+
</datafield>
45+
<datafield ind1=" " ind2=" " tag="084">
46+
<subfield code="a">a8732n</subfield>
47+
<subfield code="2">inspec</subfield>
48+
</datafield>
49+
<datafield ind1=" " ind2=" " tag="084">
50+
<subfield code="a">a6170d</subfield>
51+
<subfield code="2">inspec</subfield>
52+
</datafield>
53+
<datafield ind1=" " ind2=" " tag="084">
54+
<subfield code="a">a0760d</subfield>
55+
<subfield code="2">inspec</subfield>
56+
</datafield>
57+
<datafield ind1=" " ind2=" " tag="097">
58+
<subfield code="a">0.6nas</subfield>
59+
<subfield code="9">LOCAL</subfield>
60+
</datafield>
61+
<datafield ind1=" " ind2=" " tag="097">
62+
<subfield code="a">a0760d</subfield>
63+
<subfield code="9">LOCAL</subfield>
64+
</datafield>
65+
<datafield ind1=" " ind2=" " tag="097">
66+
<subfield code="a">a6170d</subfield>
67+
<subfield code="9">LOCAL</subfield>
68+
</datafield>
69+
<datafield ind1=" " ind2=" " tag="097">
70+
<subfield code="a">a8732n</subfield>
71+
<subfield code="9">LOCAL</subfield>
72+
</datafield>
73+
<datafield ind1=" " ind2=" " tag="097">
74+
<subfield code="a">a8732q</subfield>
75+
<subfield code="9">LOCAL</subfield>
76+
</datafield>
77+
<datafield ind1="1" ind2=" " tag="100">
78+
<subfield code="a">Nassau, Kurt</subfield>
79+
<subfield code="0">(NO-TrBIB)x90229287</subfield>
80+
</datafield>
81+
<datafield ind1="1" ind2="0" tag="245">
82+
<subfield code="a">The physics and chemistry of color :</subfield>
83+
<subfield code="b">the fifteen causes of color</subfield>
84+
<subfield code="c">Kurt Nassau</subfield>
85+
</datafield>
86+
<datafield ind1=" " ind2=" " tag="250">
87+
<subfield code="a">2nd ed.</subfield>
88+
</datafield>
89+
<datafield ind1=" " ind2=" " tag="260">
90+
<subfield code="a">New York</subfield>
91+
<subfield code="b">Wiley</subfield>
92+
<subfield code="c">c2001</subfield>
93+
</datafield>
94+
<datafield ind1=" " ind2=" " tag="300">
95+
<subfield code="a">XX, 481 s., pl.</subfield>
96+
<subfield code="b">ill.</subfield>
97+
</datafield>
98+
<datafield ind1="1" ind2=" " tag="490">
99+
<subfield code="a">Wiley series in pure and applied optics</subfield>
100+
</datafield>
101+
<datafield ind1=" " ind2="7" tag="650">
102+
<subfield code="a">Fysikalsk kjemi</subfield>
103+
<subfield code="2">noubomn</subfield>
104+
</datafield>
105+
<datafield ind1=" " ind2="7" tag="650">
106+
<subfield code="a">Kjemi</subfield>
107+
<subfield code="2">noubomn</subfield>
108+
</datafield>
109+
<datafield ind1=" " ind2="7" tag="650">
110+
<subfield code="a">Fotokjemi</subfield>
111+
<subfield code="2">noubomn</subfield>
112+
</datafield>
113+
<datafield ind1=" " ind2="7" tag="650">
114+
<subfield code="a">Farger</subfield>
115+
<subfield code="2">noubomn</subfield>
116+
</datafield>
117+
<datafield ind1=" " ind2="7" tag="650">
118+
<subfield code="a">Fargelære</subfield>
119+
<subfield code="2">noubomn</subfield>
120+
</datafield>
121+
<datafield ind1=" " ind2="7" tag="650">
122+
<subfield code="a">Fysikk</subfield>
123+
<subfield code="2">noubomn</subfield>
124+
</datafield>
125+
<datafield ind1=" " ind2=" " tag="653">
126+
<subfield code="a">farger</subfield>
127+
</datafield>
128+
<datafield ind1=" " ind2=" " tag="653">
129+
<subfield code="a">fargelære</subfield>
130+
</datafield>
131+
<datafield ind1=" " ind2=" " tag="653">
132+
<subfield code="a">fysikk</subfield>
133+
</datafield>
134+
<datafield ind1=" " ind2=" " tag="653">
135+
<subfield code="a">fysikalsk</subfield>
136+
</datafield>
137+
<datafield ind1=" " ind2=" " tag="653">
138+
<subfield code="a">kjemi</subfield>
139+
</datafield>
140+
<datafield ind1=" " ind2=" " tag="653">
141+
<subfield code="a">fotokjemi</subfield>
142+
</datafield>
143+
<datafield ind1=" " ind2="0" tag="830">
144+
<subfield code="a">Wiley series in pure and applied optics</subfield>
145+
</datafield>
146+
<datafield ind1="4" ind2="2" tag="856">
147+
<subfield code="3">Beskrivelse fra forlaget (kort)</subfield>
148+
<subfield code="u">http://content.bibsys.no/content/?type=descr_publ_brief&amp;isbn=0471391069</subfield>
149+
</datafield>
150+
<datafield ind1="4" ind2="2" tag="856">
151+
<subfield code="3">Beskrivelse fra forlaget (lang)</subfield>
152+
<subfield code="u">http://content.bibsys.no/content/?type=descr_publ_full&amp;isbn=0471391069</subfield>
153+
</datafield>
154+
<datafield ind1="4" ind2="2" tag="856">
155+
<subfield code="3">Omslagsbilde</subfield>
156+
<subfield code="u">http://innhold.bibsys.no/bilde/forside/?size=mini&amp;id=0471391069.JPG</subfield>
157+
<subfield code="q">image/jpeg</subfield>
158+
</datafield>
159+
<datafield ind1=" " ind2=" " tag="901">
160+
<subfield code="a">kat2</subfield>
161+
</datafield>
162+
</record>
163+
</bib>

src/Bibs/Bib.php

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ protected function onData($data)
162162
*/
163163
protected function isInitialized($data)
164164
{
165-
return $data->has('record');
165+
return is_a($data, QuiteSimpleXMLElement::class) && $data->has('record');
166166
}
167167

168168
/**
@@ -174,24 +174,4 @@ protected function urlBase()
174174
{
175175
return "/bibs/{$this->mms_id}";
176176
}
177-
178-
/**
179-
* Magic!
180-
*
181-
* @param string $key
182-
*
183-
* @return mixed
184-
*/
185-
public function __get($key)
186-
{
187-
// If there's a getter method, call it.
188-
if ($key == 'record') {
189-
return $this->getRecord();
190-
}
191-
192-
$this->init();
193-
194-
// If the property is defined in our data object, return it.
195-
return $this->data->text($key);
196-
}
197177
}

src/Model/LazyResource.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Scriptotek\Alma\Model;
44

5+
use Danmichaelo\QuiteSimpleXMLElement\QuiteSimpleXMLElement;
56
use Scriptotek\Alma\Exception\ResourceNotFound;
67

78
/**
@@ -60,7 +61,7 @@ abstract protected function isInitialized($data);
6061
/**
6162
* Load data onto this object. Chainable method.
6263
*
63-
* @param \stdClass $data
64+
* @param \stdClass|QuiteSimpleXMLElement $data
6465
*
6566
* @return $this
6667
*/

0 commit comments

Comments
 (0)