diff --git a/src/Rest/Helpers/Channel/EditPermissionsBuilder.php b/src/Rest/Helpers/Channel/EditPermissionsBuilder.php index cd8ddf4..d49f908 100644 --- a/src/Rest/Helpers/Channel/EditPermissionsBuilder.php +++ b/src/Rest/Helpers/Channel/EditPermissionsBuilder.php @@ -37,7 +37,7 @@ public function getOverwriteId(): ?string public function setAllow(Bitwise $allow): self { - $this->data['allow'] = $allow->getBitSet(); + $this->data['allow'] = (string) $allow->get(); return $this; } @@ -45,13 +45,13 @@ public function setAllow(Bitwise $allow): self public function getAllow(): ?Bitwise { return isset($this->data['allow']) - ? Bitwise::fromBitSet($this->data['allow']) + ? new Bitwise((int) $this->data['allow']) : null; } public function setDeny(Bitwise $deny): self { - $this->data['deny'] = $deny->getBitSet(); + $this->data['deny'] = (string) $deny->get(); return $this; } @@ -59,7 +59,7 @@ public function setDeny(Bitwise $deny): self public function getDeny(): ?Bitwise { return isset($this->data['deny']) - ? Bitwise::fromBitSet($this->data['deny']) + ? new Bitwise((int) $this->data['deny']) : null; } diff --git a/src/Rest/Helpers/Command/CommandBuilder.php b/src/Rest/Helpers/Command/CommandBuilder.php index 31f9665..72915f9 100644 --- a/src/Rest/Helpers/Command/CommandBuilder.php +++ b/src/Rest/Helpers/Command/CommandBuilder.php @@ -134,7 +134,7 @@ public function getOptions(): ?array */ public function setDefaultMemberPermissions(Bitwise $permissions): self { - $this->data['default_member_permissions'] = $permissions->getBitSet(); + $this->data['default_member_permissions'] = (string) $permissions->get(); return $this; } @@ -145,7 +145,7 @@ public function setDefaultMemberPermissions(Bitwise $permissions): self public function getDefaultMemberPermissions(): ?Bitwise { return isset($this->data['default_member_permissions']) - ? Bitwise::fromBitSet($this->data['default_member_permissions']) + ? new Bitwise((int) $this->data['default_member_permissions']) : null; } diff --git a/tests/Rest/Helpers/Channel/EditPermissionsBuilderTest.php b/tests/Rest/Helpers/Channel/EditPermissionsBuilderTest.php index 62feaf4..752d847 100644 --- a/tests/Rest/Helpers/Channel/EditPermissionsBuilderTest.php +++ b/tests/Rest/Helpers/Channel/EditPermissionsBuilderTest.php @@ -39,7 +39,7 @@ public function testSetAllow(): void $this->assertNull($builder->getAllow()); - $bitwise = new Bitwise( + $bitwise = Bitwise::from( 1 << 1, 1 << 2, 1 << 3 @@ -48,6 +48,7 @@ public function testSetAllow(): void $builder->setAllow($bitwise); $this->assertEquals($bitwise->get(), $builder->getAllow()->get()); + $this->assertSame('14', $builder->get()['allow']); } public function testSetDeny(): void @@ -56,7 +57,7 @@ public function testSetDeny(): void $this->assertNull($builder->getDeny()); - $bitwise = new Bitwise( + $bitwise = Bitwise::from( 1 << 1, 1 << 2, 1 << 3 @@ -65,5 +66,11 @@ public function testSetDeny(): void $builder->setDeny($bitwise); $this->assertEquals($bitwise->get(), $builder->getDeny()->get()); + + /* + * A decimal bit field, as Discord reads it; the binary representation + * would be read back as a different set of permissions. + */ + $this->assertSame('14', $builder->get()['deny']); } } diff --git a/tests/Rest/Helpers/Command/CommandBuilderTest.php b/tests/Rest/Helpers/Command/CommandBuilderTest.php index 9554d9d..bd1a07d 100644 --- a/tests/Rest/Helpers/Command/CommandBuilderTest.php +++ b/tests/Rest/Helpers/Command/CommandBuilderTest.php @@ -92,7 +92,13 @@ public function testSetDefaultMemberPermissions(): void $commandBuilder->setDefaultMemberPermissions($permissions); $this->assertEquals($permissions->get(), $commandBuilder->getDefaultMemberPermissions()->get()); - $this->assertEquals($permissions->getBitSet(), $commandBuilder->get()['default_member_permissions']); + + /* + * Discord reads this as a decimal bit field. Sending the binary + * representation would be read back as an entirely different, and + * much larger, set of permissions. + */ + $this->assertSame('6', $commandBuilder->get()['default_member_permissions']); } public function testSetDmPermission(): void