5 use InvalidArgumentException;
21 'slot_content_id' => 33,
22 'content_size' =>
'5',
23 'content_sha1' =>
'someHash',
24 'content_address' =>
'tt:456',
27 'slot_revision_id' =>
'2',
29 'role_name' =>
'myRole',
38 $this->assertTrue( $record->hasAddress() );
39 $this->assertTrue( $record->hasRevision() );
40 $this->assertTrue( $record->isInherited() );
41 $this->assertSame(
'A', $record->getContent()->getNativeData() );
42 $this->assertSame( 5, $record->getSize() );
43 $this->assertSame(
'someHash', $record->getSha1() );
45 $this->assertSame( 2, $record->getRevision() );
46 $this->assertSame( 1, $record->getOrigin() );
47 $this->assertSame(
'tt:456', $record->getAddress() );
48 $this->assertSame( 33, $record->getContentId() );
50 $this->assertSame(
'myRole', $record->getRole() );
55 'content_size' =>
null,
56 'content_sha1' =>
null,
57 'format_name' =>
function () {
60 'slot_revision_id' =>
'2',
64 $content =
function () {
70 $this->assertTrue( $record->hasAddress() );
71 $this->assertTrue( $record->hasRevision() );
72 $this->assertFalse( $record->isInherited() );
73 $this->assertSame(
'A', $record->getContent()->getNativeData() );
74 $this->assertSame( 1, $record->getSize() );
75 $this->assertNotNull( $record->getSha1() );
77 $this->assertSame( 2, $record->getRevision() );
78 $this->assertSame( 2, $record->getRevision() );
79 $this->assertSame(
'tt:456', $record->getAddress() );
80 $this->assertSame( 33, $record->getContentId() );
82 $this->assertSame(
'myRole', $record->getRole() );
88 $this->assertFalse( $record->hasAddress() );
89 $this->assertFalse( $record->hasRevision() );
90 $this->assertFalse( $record->isInherited() );
91 $this->assertSame(
'A', $record->getContent()->getNativeData() );
92 $this->assertSame( 1, $record->getSize() );
93 $this->assertNotNull( $record->getSha1() );
95 $this->assertSame(
'myRole', $record->getRole() );
99 yield
'both null' => [
null, null ];
103 yield
'null content' => [ (
object)[],
null ];
118 $record->getContentId();
125 $record->getAddress();
130 yield
'unsaved' => [ $unsaved ];
134 yield
'inherited' => [ $inherited ];
158 yield [
'',
'phoiac9h4m842xq45sp7s6u21eteeq1' ];
159 yield [
'Lorem ipsum',
'hcr5u40uxr81d3nx89nvwzclfz6r9c5' ];
171 $this->assertSame( $hash, $record->getSha1() );
183 $row = $this->
makeRow( [
'slot_revision_id' => 7,
'slot_origin' => 7 ] );
189 $this->assertSame( $parent->getContentId(), $inherited->getContentId() );
190 $this->assertSame( $parent->getAddress(), $inherited->getAddress() );
191 $this->assertSame( $parent->getContent(), $inherited->getContent() );
192 $this->assertTrue( $inherited->isInherited() );
193 $this->assertFalse( $inherited->hasRevision() );
196 $this->assertFalse( $parent->isInherited() );
197 $this->assertSame( 7, $parent->getRevision() );
203 $inherited->getContentId(),
204 $inherited->getAddress(),
207 $this->assertSame( $parent->getContentId(), $saved->getContentId() );
208 $this->assertSame( $parent->getAddress(), $saved->getAddress() );
209 $this->assertSame( $parent->getContent(), $saved->getContent() );
210 $this->assertTrue( $saved->isInherited() );
211 $this->assertTrue( $saved->hasRevision() );
212 $this->assertSame( 10, $saved->getRevision() );
215 $this->assertSame( 7, $parent->getRevision() );
216 $this->assertFalse( $inherited->hasRevision() );
226 $this->assertFalse( $saved->isInherited() );
227 $this->assertTrue( $saved->hasRevision() );
228 $this->assertTrue( $saved->hasAddress() );
229 $this->assertSame(
'theNewAddress', $saved->getAddress() );
230 $this->assertSame( 20, $saved->getContentId() );
231 $this->assertSame(
'A', $saved->getContent()->getNativeData() );
232 $this->assertSame( 10, $saved->getRevision() );
233 $this->assertSame( 10, $saved->getOrigin() );
236 $this->assertFalse( $unsaved->hasAddress() );
237 $this->assertFalse( $unsaved->hasRevision() );
243 'content_address' =>
'address:1',
245 'slot_revision_id' => 1,
249 yield
'mismatching address' => [ 1, 10,
'address:BAD', $freshSlot ];
250 yield
'mismatching revision' => [ 5, 10,
'address:1', $freshSlot ];
251 yield
'mismatching content ID' => [ 1, 17,
'address:1', $freshSlot ];
253 $inheritedRow = $this->
makeRow( [
254 'content_id' =>
null,
255 'content_address' =>
null,
257 'slot_revision_id' => 1,
261 yield
'inherited, but no address' => [ 1, 10,
'address:2', $inheritedSlot ];
280 yield
'bad revision id' => [
'xyzzy', 5,
'address', $unsaved ];
281 yield
'bad content id' => [ 7,
'xyzzy',
'address', $unsaved ];
282 yield
'bad content address' => [ 7, 5, 77, $unsaved ];