예제 #1
0
 public function test_adding_multiple_fields_to_a_resource()
 {
     $resource = new Resource('my__0', 'myCoolResource', 'my_cool_table', 'my_cool_id');
     $field = new Field($resource, 'myCoolField', 'my_cool_field', Field::TYPE_STRING);
     $otherField = new Field($resource, 'myOtherCoolField', 'my_other_cool_field', Field::TYPE_STRING);
     $resource->addFieldsArray(array($field, $otherField));
     $this->assertEquals(2, $resource->countFields());
 }
 public function test_multiple_fields_mapping_generated_query()
 {
     $resource = new Resource('my__0', 'myCoolResource', 'my_cool_table', 'my_cool_id');
     $fields = array(new Field($resource, 'myCoolField', 'my_cool_field', Field::TYPE_STRING), new Field($resource, 'myMoreCoolField', 'my_more_cool_field', Field::TYPE_STRING));
     $resource->addFieldsArray($fields);
     $generatedSql = $this->dbalQueryBuilder->buildQuery($resource);
     $expectedSql = 'select my__0.my_cool_id as my__0_my_cool_id, my__0.my_cool_field as my__0_myCoolField, my__0.my_more_cool_field as my__0_myMoreCoolField from my_cool_table my__0';
     $this->assertEquals($expectedSql, $generatedSql);
 }
    public function test_that_a_resource_with_one_related_many_to_one_is_mapped()
    {
        $input = <<<EOT
resource:
    alias: 'myResource'
    table: 'myTable'
    primary-key: 'my_id'

    fields:
        -
            name: 'myName'
            alias: 'myAlias'

    relationships:
        -
            type: 'many-to-one'
            join-column: 'idMyTable'

            resource:
                alias: 'myOtherResource'
                table: 'myOtherTable'
                primary-key: 'my_other_id'

                fields:
                    -
                        name: 'myOtherField'
                        alias: 'myOtherAlias'
EOT;
        /** @var \FlyRRM\Mapping\Resource $rootResource */
        $rootResource = $this->parseInput($input);
        $relationships = $rootResource->getRelationships();
        $this->assertEquals(1, sizeof($relationships));
        /** @var \FlyRRM\Mapping\Relationship $firstRelationship */
        $firstRelationship = $relationships[0];
        $expectedMainResource = new Resource('myT_0', 'myResource', 'myTable', 'my_id');
        $expectedMainResourceFields = array(new Field($expectedMainResource, 'myAlias', 'myName', Field::TYPE_STRING));
        $expectedMainResource->addFieldsArray($expectedMainResourceFields);
        $expectedReferencedResource = new Resource('myO_1', 'myOtherResource', 'myOtherTable', 'my_other_id');
        $expectedReferencedResourceFields = array(new Field($expectedReferencedResource, 'myOtherAlias', 'myOtherField', Field::TYPE_STRING));
        $expectedReferencedResource->addFieldsArray($expectedReferencedResourceFields);
        $expectedRelationship = new Relationship($expectedMainResource, $expectedReferencedResource, 'many-to-one', 'idMyTable');
        $expectedMainResource->addRelationship($expectedRelationship);
        $this->assertEquals($expectedRelationship, $firstRelationship);
    }