19 declare(strict_types=1);
34 $association = $this->getMockBuilder(Association::class)->disableOriginalConstructor()->getMock();
36 $this->assertInstanceOf(Definition::class, $instance);
41 $this->expectException(InvalidArgumentException::class);
49 $field = $this->getMockBuilder(Field::class)->disableOriginalConstructor()->getMock();
50 $field->method(
'tableName')->willReturn($tableName);
52 $association = $this->getMockBuilder(Association::class)->disableOriginalConstructor()->getMock();
53 $association->method(
'field')->willReturn($field);
57 $this->assertEquals($tableName, $instance->tableName());
62 $association = $this->getMockBuilder(Association::class)->disableOriginalConstructor()->getMock();
65 $this->assertEquals([$association], $instance->associations());
70 $association = $this->getMockBuilder(Association::class)->disableOriginalConstructor()->getMock();
73 $this->assertEquals([], $instance->ignoreValues());
78 $ignoredValues = [
'lorem',
'ipsum'];
80 $association = $this->getMockBuilder(Association::class)->disableOriginalConstructor()->getMock();
82 $ignore = $this->getMockBuilder(Ignore::class)->disableOriginalConstructor()->getMock();
83 $ignore->method(
'values')->willReturn($ignoredValues);
85 $instance =
new Definition([$association], $ignore);
87 $this->assertEquals($ignoredValues, $instance->ignoreValues());
93 $field = $this->getMockBuilder(Field::class)->disableOriginalConstructor()->getMock();
94 $field->method(
'tableName')->willReturn($tableName);
96 $association = $this->getMockBuilder(Association::class)->disableOriginalConstructor()->getMock();
97 $association->method(
'referenceField')->willReturn($field);
101 $this->assertEquals($tableName, $instance->referenceTableName());
107 new Field(
'table_one',
'field_one'),
108 new Field(
'table_two',
'field_two')
112 new Field(
'table_three',
'field_one'),
113 new Field(
'table_four',
'field_two')
116 $this->expectException(InvalidArgumentException::class);
117 $this->expectExceptionMessage(
'All fields must have the same table');
118 $instance =
new Definition([$association_one, $association_two]);
125 new Field(
'table_one',
'field_one'),
126 new Field(
'table_two',
'field_two')
129 $association_two =
'funny string';
131 $this->expectException(InvalidArgumentException::class);
132 $this->expectExceptionMessage(
'Associations must be of type ILIAS\components\Database\Integrity\Association.');
133 $instance =
new Definition([$association_one, $association_two]);
testIgnoreValuesWithValues()
testDefaultIgnoreValues()
testZeroAssociationsWillFail()