assertSame([], $entity->getFilters()); } public function testAddLegacyParamsWithLegacyFilters(): void { $entity = new LeadList(); $entity->setFilters( [ [ 'object' => 'lead', 'glue' => 'and', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'display' => 'John Doe', 'filter' => '4', ], ] ); $this->assertSame( [ [ 'object' => 'lead', 'glue' => 'and', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'display' => 'John Doe', 'filter' => '4', ], ], $entity->getFilters() ); } public function testAddLegacyParamsWithNewFilters(): void { $entity = new LeadList(); $entity->setFilters( [ [ 'object' => 'lead', 'glue' => 'and', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'properties' => [ 'display' => 'John Doe', 'filter' => '4', ], ], [ 'object' => 'lead', 'glue' => 'and', 'field' => 'city', 'type' => 'text', 'operator' => '=', 'properties' => [ 'filter' => 'Prague', ], ], ] ); $this->assertSame( [ [ 'object' => 'lead', 'glue' => 'and', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'properties' => [ 'display' => 'John Doe', 'filter' => '4', ], 'filter' => '4', 'display' => 'John Doe', ], [ 'object' => 'lead', 'glue' => 'and', 'field' => 'city', 'type' => 'text', 'operator' => '=', 'properties' => [ 'filter' => 'Prague', ], 'filter' => 'Prague', 'display' => null, ], ], $entity->getFilters() ); } public function testAddLegacyParamsWithHybridFilters(): void { $entity = new LeadList(); $entity->setFilters( [ [ 'object' => 'lead', 'glue' => 'and', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'filter' => 'outdated_id', 'display' => 'Outdated Name', 'properties' => [ 'display' => 'John Doe', 'filter' => '4', ], ], ] ); $this->assertSame( [ [ 'object' => 'lead', 'glue' => 'and', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'filter' => '4', 'display' => 'John Doe', 'properties' => [ 'display' => 'John Doe', 'filter' => '4', ], ], ], $entity->getFilters() ); } /** * @dataProvider setIsGlobalDataProvider */ public function testSetIsGlobal($value, $expected, array $changes): void { $segment = new LeadList(); $segment->setIsGlobal($value); Assert::assertSame($expected, $segment->getIsGlobal()); Assert::assertSame($changes, $segment->getChanges()); } public static function setIsGlobalDataProvider(): iterable { yield [null, false, ['isGlobal' => [true, false]]]; yield [true, true, []]; yield [false, false, ['isGlobal' => [true, false]]]; yield ['', false, ['isGlobal' => [true, false]]]; yield [0, false, ['isGlobal' => [true, false]]]; yield ['string', true, []]; } /** * @dataProvider setIsPreferenceCenterDataProvider */ public function testSetIsPreferenceCenter($value, $expected, array $changes): void { $segment = new LeadList(); $segment->setIsPreferenceCenter($value); Assert::assertSame($expected, $segment->getIsPreferenceCenter()); Assert::assertSame($changes, $segment->getChanges()); } public static function setIsPreferenceCenterDataProvider(): iterable { yield [null, false, []]; yield [true, true, ['isPreferenceCenter' => [false, true]]]; yield [false, false, []]; yield ['', false, []]; yield [0, false, []]; yield ['string', true, ['isPreferenceCenter' => [false, true]]]; } public function testFirstFilterGlueIsAlwaysAnd(): void { $entity = new LeadList(); $entity->setFilters([ [ 'object' => 'lead', 'glue' => 'or', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'properties' => [ 'display' => 'John Doe', 'filter' => '4', ], ], [ 'object' => 'lead', 'glue' => 'and', 'field' => 'city', 'type' => 'text', 'operator' => '=', 'properties' => [ 'filter' => 'Prague', ], ], ]); $this->assertSame( [ [ 'object' => 'lead', 'glue' => 'and', 'field' => 'owner_id', 'type' => 'lookup_id', 'operator' => '=', 'properties' => [ 'display' => 'John Doe', 'filter' => '4', ], 'filter' => '4', 'display' => 'John Doe', ], [ 'object' => 'lead', 'glue' => 'and', 'field' => 'city', 'type' => 'text', 'operator' => '=', 'properties' => [ 'filter' => 'Prague', ], 'filter' => 'Prague', 'display' => null, ], ], $entity->getFilters(), 'The first filter glue must be "and".'); } }