public function testSaveUpdateMerge()
 {
     $synonymGroupModel = $this->getMock('Magento\\Search\\Model\\SynonymGroup', [], [], '', false);
     $synonymGroupModel->expects($this->once())->method('load')->with(1);
     $synonymGroupModel->expects($this->exactly(2))->method('getSynonymGroup')->willReturn('a,b,c');
     $synonymGroupModel->expects($this->once())->method('getGroupId')->willReturn(1);
     $existingSynonymGroupModel = $this->getMock('Magento\\Search\\Model\\SynonymGroup', [], [], '', false);
     $existingSynonymGroupModel->expects($this->once())->method('load')->with(2);
     $existingSynonymGroupModel->expects($this->once())->method('delete');
     $existingSynonymGroupModel->expects($this->once())->method('getSynonymGroup')->willReturn('d,e,f');
     $synonymGroupModel->expects($this->once())->method('setStoreId');
     $synonymGroupModel->expects($this->once())->method('setWebsiteId');
     // merged result
     $synonymGroupModel->expects($this->once())->method('setSynonymGroup')->with('d,e,f,a,z');
     $this->factory->expects($this->at(0))->method('create')->willReturn($synonymGroupModel);
     $this->factory->expects($this->at(1))->method('create')->willReturn($existingSynonymGroupModel);
     $this->resourceModel->expects($this->once())->method('getByScope')->willReturn([['group_id' => 1, 'synonyms' => 'a,b,c'], ['group_id' => 2, 'synonyms' => 'd,e,f']]);
     $this->resourceModel->expects($this->once())->method('save')->with($synonymGroupModel);
     $data = $this->getMockForAbstractClass('Magento\\Search\\Api\\Data\\SynonymGroupInterface', [], '', false);
     $data->expects($this->once())->method('getGroupId')->willReturn(1);
     $data->expects($this->exactly(2))->method('getStoreId');
     $data->expects($this->exactly(2))->method('getWebsiteId');
     $data->expects($this->exactly(3))->method('getSynonymGroup')->willReturn('a,d,z');
     $this->object->save($data);
 }
 public function testDelete()
 {
     /** @var \Magento\Search\Api\Data\SynonymGroupInterface $synonymGroup */
     $synonymGroup = $this->objectManager->create('Magento\\Search\\Api\\Data\\SynonymGroupInterface');
     $synonymGroup->setSynonymGroup('test1,test2,test3');
     $this->model->save($synonymGroup);
     $id = $synonymGroup->getGroupId();
     /** @var \Magento\Search\Model\SynonymGroup $synonymGroupModel */
     $synonymGroupModel = $this->objectManager->create('Magento\\Search\\Model\\SynonymGroup');
     $synonymGroupModel->load($id);
     $this->model->delete($synonymGroupModel);
     $synonymGroupModel = $this->objectManager->create('Magento\\Search\\Model\\SynonymGroup');
     $synonymGroupModel->load($id);
     $this->assertNull($synonymGroupModel->getSynonymGroup());
 }