Scalr\Tests\Model\AbstractEntityTest::testUpdate PHP Method

testUpdate() public method

public testUpdate ( array $fieldValues, string $result, string $exeption = null )
$fieldValues array arguments for the update method
$result string The Result
$exeption string optional
    public function testUpdate($fieldValues, $result, $exeption = null)
    {
        $common = self::TEST_UPDATE_COMMON;
        $db = $this->getMockBuilder(ConnectionPool::class)->disableOriginalConstructor()->setMethods(['Execute'])->getMock();
        /* @var $entity Entity1 */
        $entity = $this->getMockBuilder(Entity1::class)->setMethods(['db', '_getReflectionClass'])->getMock();
        $entity->expects($this->any())->method('db')->will($this->returnValue($db));
        $entity->expects($this->any())->method('_getReflectionClass')->will($this->returnValue(new ReflectionClass(Entity1::class)));
        if (empty($fieldValues)) {
            $db->expects($this->never())->method('Execute');
        } elseif (!$exeption) {
            $template = "UPDATE `prices` SET " . $result[0] . " " . "WHERE `prices`.`price_id` = ? AND `prices`.`instance_type` = ? AND `prices`.`os` = ? LIMIT 1";
            $db->expects($this->once())->method('Execute')->with($this->equalTo($template), $this->equalTo($result[1]));
        }
        if ($exeption != self::ERROR_MSG_PK_NOT_INITIALIZED) {
            $entity->priceId = $common[0];
        }
        $entity->instanceType = $common[1];
        $entity->os = $common[2];
        $entity->cost = self::TEST_UPDATE_DEFAULT_COST;
        try {
            $exceptionMessage = null;
            $entity->update($fieldValues);
        } catch (ModelException $e) {
            $exceptionMessage = $e->getMessage();
        }
        if ($exeption) {
            $this->assertTrue(isset($exceptionMessage));
            $this->assertContains($exeption, $exceptionMessage);
        } else {
            foreach ($fieldValues as $fieldName => $value) {
                if (is_numeric($fieldName)) {
                    $this->assertEquals('cost', $value);
                    $this->assertEquals(self::TEST_UPDATE_DEFAULT_COST, $entity->{$value});
                    continue;
                }
                $this->assertEquals($entity->{$fieldName}, $value);
            }
        }
    }