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()