Mongolid\DataMapper\SchemaMapperTest::testShouldMapAnArrayValueToAnotherSchemaSchema PHP Method

testShouldMapAnArrayValueToAnotherSchemaSchema() public method

    public function testShouldMapAnArrayValueToAnotherSchemaSchema()
    {
        // Arrange
        $schema = m::mock(Schema::class);
        $mySchema = m::mock(Schema::class);
        $schemaMapper = new SchemaMapper($schema);
        $value = ['foo' => 'bar'];
        $test = $this;
        // Act
        Ioc::instance('Xd\\MySchema', $mySchema);
        // Register MySchema in Ioc
        // When instantiating the SchemaMapper with the specified $param as dependency
        Ioc::bind(SchemaMapper::class, function ($container, $params) use($value, $mySchema, $test) {
            // Check if mySchema has been injected correctly
            $test->assertSame($mySchema, $params[0]);
            // Instantiate a SchemaMapper with mySchema
            $anotherSchemaMapper = m::mock(SchemaMapper::class, [$params[0]]);
            // Set expectation to receiva a map call
            $anotherSchemaMapper->shouldReceive('map')->once()->with($value)->andReturn(['foo' => 'PARSED']);
            return $anotherSchemaMapper;
        });
        //Assert
        $this->assertEquals([['foo' => 'PARSED']], $this->callProtected($schemaMapper, 'mapToSchema', [$value, 'Xd\\MySchema']));
    }