/**
  * Test implementation of interface for work with custom attributes.
  */
 public function testCustomAttributes()
 {
     $this->assertEquals([], $this->model->getCustomAttributes(), "Empty array is expected as a result of getCustomAttributes() when custom attributes are not set.");
     $this->assertEquals(null, $this->model->getCustomAttribute('not_existing_custom_attribute'), "Null is expected as a result of getCustomAttribute(\$code) when custom attribute is not set.");
     $attributesAsArray = ['attribute1' => true, 'attribute2' => 'Attribute Value', 'attribute3' => 333];
     $this->addCustomAttributesToModel($attributesAsArray, $this->model);
     $this->assertEquals([], $this->model->getCustomAttributes(), 'Custom attributes retrieved from the model using getCustomAttributes() are invalid.');
 }
 public function testCustomAttributesWithNonEmptyCustomAttributes()
 {
     $customAttributeCode = 'attribute_code';
     $customAttributeValue = 'attribute_value';
     $this->model->expects($this->any())->method('getCustomAttributesCodes')->willReturn([$customAttributeCode]);
     $this->assertEquals([], $this->model->getCustomAttributes(), "Empty array is expected as a result of getCustomAttributes() when custom attributes are not set.");
     $this->attributeValueFactoryMock->expects($this->once())->method('create')->willReturn($this->customAttribute);
     $this->customAttribute->setAttributeCode($customAttributeCode)->setValue($customAttributeValue);
     $this->model->setData($customAttributeCode, $customAttributeValue);
     $this->assertEquals([$this->customAttribute], $this->model->getCustomAttributes(), "One custom attribute expected");
     $this->assertNotNull($this->model->getCustomAttribute($customAttributeCode), 'customer attribute expected');
     $this->assertEquals($customAttributeValue, $this->model->getCustomAttribute($customAttributeCode)->getValue(), "Custom attribute value is incorrect");
     //unset the data
     $this->model->unsetData($customAttributeCode);
     $this->assertEquals([], $this->model->getCustomAttributes(), "Empty array is expected as a result of getCustomAttributes() when custom attributes are not set.");
 }