From da4f4ecae377befdda6c20db190315c9afcd74ee Mon Sep 17 00:00:00 2001 From: Connor Smyth Date: Thu, 3 Oct 2024 12:46:44 -0400 Subject: [PATCH 1/3] Adding tests for LDContextBuilder --- tests/LDContextBuilderTest.php | 358 +++++++++++++++++++++++++++++++++ 1 file changed, 358 insertions(+) create mode 100644 tests/LDContextBuilderTest.php diff --git a/tests/LDContextBuilderTest.php b/tests/LDContextBuilderTest.php new file mode 100644 index 00000000..964d5704 --- /dev/null +++ b/tests/LDContextBuilderTest.php @@ -0,0 +1,358 @@ +builder = new LDContextBuilder('some-context-key'); + } + + public function testBuild(): void + { + $context = $this->builder->build(); + + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + null, + null, + null, + null + ), + $context + ); + } + + public function testKey(): void + { + $builder = $this->builder->key('some-key'); + + $this->assertEquals($this->builder, $builder); + + $context = $this->builder->build(); + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-key', + null, + false, + null, + null, + null, + null + ), + $context + ); + } + + public function testKind(): void + { + $builder = $this->builder->kind('some-kind'); + + $this->assertEquals($this->builder, $builder); + + $context = $this->builder->build(); + $this->assertEquals( + new LDContext( + 'some-kind', + 'some-context-key', + null, + false, + null, + null, + null, + null + ), + $context + ); + } + + public function testName(): void + { + $builder = $this->builder->name('some-name'); + + $this->assertEquals($this->builder, $builder); + + $context = $this->builder->build(); + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + 'some-name', + false, + null, + null, + null, + null + ), + $context + ); + + $builder = $builder->name(null); + + $context = $builder->build(); + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + null, + null, + null, + null + ), + $context + ); + } + + public function testAnonymous(): void + { + $builder = $this->builder->anonymous(true); + + $this->assertEquals($this->builder, $builder); + + $context = $this->builder->build(); + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + true, + null, + null, + null, + null + ), + $context + ); + } + + public function testSet(): void + { + $builder = $this->builder->set('attribute-name', 'value'); + + $this->assertEquals($this->builder, $builder); + + $context = $this->builder->build(); + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + ['attribute-name' => 'value'], + null, + null, + null + ), + $context + ); + } + + /** + * @dataProvider trySetDataProvider + */ + public function testTrySet($expectedIsSet, $attributeName, $value, $expectedLdContext): void + { + $isSet = $this->builder->trySet($attributeName, $value); + + $this->assertEquals($expectedIsSet, $isSet); + + $context = $this->builder->build(); + $this->assertEquals( + $expectedLdContext, + $context + ); + } + + public function testPrivate(): void + { + $builder = $this->builder->private( + 'string-attribute-ref', + AttributeReference::fromPath('refPath'), + AttributeReference::fromLiteral('attributeName') + ); + $this->assertEquals($this->builder, $builder); + + $context = $this->builder->build(); + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + null, + [ + AttributeReference::fromPath('string-attribute-ref'), + AttributeReference::fromPath('refPath'), + AttributeReference::fromLiteral('attributeName') + ], + null, + null + ), + $context + ); + } + + public function testPrivateEmptyAttributeRefs(): void + { + $builder = $this->builder->private(); + $this->assertEquals($this->builder, $builder); + + $context = $this->builder->build(); + $this->assertEquals( + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + null, + null, + null, + null + ), + $context + ); + } + + public static function trySetDataProvider(): array + { + return [ + 'key string' => [ + true, + 'key', + 'value', + new LDContext( + LDContext::DEFAULT_KIND, + 'value', + null, + false, + null, + null, + null, + null + ) + ], + 'key not string' => [ + false, + 'key', + 12345, + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + null, + null, + null, + null + ) + ], + 'kind string' => [ + true, + 'kind', + 'value', + new LDContext( + 'value', + 'some-context-key', + null, + false, + null, + null, + null, + null + ) + ], + 'kind not string' => [ + false, + 'kind', + 12345, + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + null, + null, + null, + null + ) + ], + 'anonymous bool' => [ + true, + 'anonymous', + true, + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + true, + null, + null, + null, + null + ) + ], + 'anonymous not bool' => [ + false, + 'anonymous', + 12345, + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + null, + null, + null, + null + ) + ], + 'attributes value not null' => [ + true, + 'attribute-name', + 'value', + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + ['attribute-name' => 'value'], + null, + null, + null + ) + ], + 'attributes name value' => [ + true, + 'attribute-name', + null, + new LDContext( + LDContext::DEFAULT_KIND, + 'some-context-key', + null, + false, + [], + null, + null, + null + ) + ], + ]; + } +} From 76d7d5b9e002e3ea2599ccce1724b8fc337fc9d8 Mon Sep 17 00:00:00 2001 From: Connor Smyth Date: Mon, 7 Oct 2024 12:47:45 -0400 Subject: [PATCH 2/3] Update based on PR comments --- tests/LDContextTest.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/LDContextTest.php b/tests/LDContextTest.php index 40186459..5e9950be 100644 --- a/tests/LDContextTest.php +++ b/tests/LDContextTest.php @@ -140,6 +140,12 @@ public function testBuilderSetBuiltInAttributeByNameTypeChecking() self::assertFalse($b->trySet('anonymous', null)); self::assertFalse($b->trySet('anonymous', 3)); self::assertTrue($b->build()->isAnonymous()); + + $b->set('custom-attribute', null); + $b->set('custom-attribute', 3); + self::assertTrue($b->trySet('custom-attribute', null)); + self::assertTrue($b->trySet('custom-attribute', 3)); + self::assertEquals(['custom-attribute'], $b->build()->getCustomAttributeNames()); } public function testGetBuiltInAttributeByName() @@ -172,6 +178,17 @@ public function testPrivateAttributes() ); } + public function testPrivateEmptyAttributes() + { + self::assertNull(LDContext::create('a')->getPrivateAttributes()); + + $c = LDContext::builder('a')->private()->build(); + self::assertEquals( + null, + $c->getPrivateAttributes() + ); + } + public function testCreateMulti() { $c1 = LDContext::create('a', 'kind1'); From 2603d9703df3874adda94c6d82f7fc39e4c9e37d Mon Sep 17 00:00:00 2001 From: Connor Smyth Date: Mon, 7 Oct 2024 12:48:55 -0400 Subject: [PATCH 3/3] Remove unnecessary --- tests/LDContextBuilderTest.php | 358 --------------------------------- 1 file changed, 358 deletions(-) delete mode 100644 tests/LDContextBuilderTest.php diff --git a/tests/LDContextBuilderTest.php b/tests/LDContextBuilderTest.php deleted file mode 100644 index 964d5704..00000000 --- a/tests/LDContextBuilderTest.php +++ /dev/null @@ -1,358 +0,0 @@ -builder = new LDContextBuilder('some-context-key'); - } - - public function testBuild(): void - { - $context = $this->builder->build(); - - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - null, - null, - null, - null - ), - $context - ); - } - - public function testKey(): void - { - $builder = $this->builder->key('some-key'); - - $this->assertEquals($this->builder, $builder); - - $context = $this->builder->build(); - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-key', - null, - false, - null, - null, - null, - null - ), - $context - ); - } - - public function testKind(): void - { - $builder = $this->builder->kind('some-kind'); - - $this->assertEquals($this->builder, $builder); - - $context = $this->builder->build(); - $this->assertEquals( - new LDContext( - 'some-kind', - 'some-context-key', - null, - false, - null, - null, - null, - null - ), - $context - ); - } - - public function testName(): void - { - $builder = $this->builder->name('some-name'); - - $this->assertEquals($this->builder, $builder); - - $context = $this->builder->build(); - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - 'some-name', - false, - null, - null, - null, - null - ), - $context - ); - - $builder = $builder->name(null); - - $context = $builder->build(); - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - null, - null, - null, - null - ), - $context - ); - } - - public function testAnonymous(): void - { - $builder = $this->builder->anonymous(true); - - $this->assertEquals($this->builder, $builder); - - $context = $this->builder->build(); - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - true, - null, - null, - null, - null - ), - $context - ); - } - - public function testSet(): void - { - $builder = $this->builder->set('attribute-name', 'value'); - - $this->assertEquals($this->builder, $builder); - - $context = $this->builder->build(); - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - ['attribute-name' => 'value'], - null, - null, - null - ), - $context - ); - } - - /** - * @dataProvider trySetDataProvider - */ - public function testTrySet($expectedIsSet, $attributeName, $value, $expectedLdContext): void - { - $isSet = $this->builder->trySet($attributeName, $value); - - $this->assertEquals($expectedIsSet, $isSet); - - $context = $this->builder->build(); - $this->assertEquals( - $expectedLdContext, - $context - ); - } - - public function testPrivate(): void - { - $builder = $this->builder->private( - 'string-attribute-ref', - AttributeReference::fromPath('refPath'), - AttributeReference::fromLiteral('attributeName') - ); - $this->assertEquals($this->builder, $builder); - - $context = $this->builder->build(); - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - null, - [ - AttributeReference::fromPath('string-attribute-ref'), - AttributeReference::fromPath('refPath'), - AttributeReference::fromLiteral('attributeName') - ], - null, - null - ), - $context - ); - } - - public function testPrivateEmptyAttributeRefs(): void - { - $builder = $this->builder->private(); - $this->assertEquals($this->builder, $builder); - - $context = $this->builder->build(); - $this->assertEquals( - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - null, - null, - null, - null - ), - $context - ); - } - - public static function trySetDataProvider(): array - { - return [ - 'key string' => [ - true, - 'key', - 'value', - new LDContext( - LDContext::DEFAULT_KIND, - 'value', - null, - false, - null, - null, - null, - null - ) - ], - 'key not string' => [ - false, - 'key', - 12345, - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - null, - null, - null, - null - ) - ], - 'kind string' => [ - true, - 'kind', - 'value', - new LDContext( - 'value', - 'some-context-key', - null, - false, - null, - null, - null, - null - ) - ], - 'kind not string' => [ - false, - 'kind', - 12345, - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - null, - null, - null, - null - ) - ], - 'anonymous bool' => [ - true, - 'anonymous', - true, - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - true, - null, - null, - null, - null - ) - ], - 'anonymous not bool' => [ - false, - 'anonymous', - 12345, - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - null, - null, - null, - null - ) - ], - 'attributes value not null' => [ - true, - 'attribute-name', - 'value', - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - ['attribute-name' => 'value'], - null, - null, - null - ) - ], - 'attributes name value' => [ - true, - 'attribute-name', - null, - new LDContext( - LDContext::DEFAULT_KIND, - 'some-context-key', - null, - false, - [], - null, - null, - null - ) - ], - ]; - } -}