public function testClassWithMorePropertiesFilteredByFieldsFromArray() { $instance = new ClassWithMoreProperties(); $instance->a = "foo1"; $instance->b = "foo2"; $instance->c = "foo3"; $instance->d = "foo4"; $instance->e = "foo5"; $this->assertEquals(["a" => "foo1", "b" => "foo2", "c" => "foo3", "d" => "foo4", "e" => "foo5", "f" => null, "g" => []], ClassWithMorePropertiesMeta::toArray($instance)); $this->assertEquals(["a" => "foo1"], ClassWithMorePropertiesMeta::toArray($instance, null, Fields::fromArray(["a" => true]))); $this->assertEquals(["b" => "foo2", "c" => "foo3", "d" => "foo4"], ClassWithMorePropertiesMeta::toArray($instance, null, Fields::fromArray(["b" => true, "c" => true, "d" => true]))); $instance2 = new ClassWithMoreProperties(); $instance2->a = "foo6"; $instance->f = $instance2; $this->assertEquals(["e" => "foo5", "f" => ["a" => "foo6", "b" => null]], ClassWithMorePropertiesMeta::toArray($instance, null, Fields::fromArray(["e" => true, "f" => ["a" => true, "b" => true]]))); $instance3 = new ClassWithMoreProperties(); $instance3->a = "foo7"; $instance->g = [$instance2, $instance3]; $this->assertEquals(["g" => [["a" => "foo6"], ["a" => "foo7"]]], ClassWithMorePropertiesMeta::toArray($instance, null, Fields::fromArray(["g" => ["a" => true]]))); }
public function testClassWithMorePropertiesFilteredFromArray() { $instance = new ClassWithMoreProperties(); $instance->a = "foo1"; $instance->b = "foo2"; $instance->c = "foo3"; $instance->d = "foo4"; $instance->e = "foo5"; $this->assertEquals('{"a":"foo1","b":"foo2","c":"foo3","d":"foo4","e":"foo5"}', ClassWithMorePropertiesMeta::toJson($instance)); $this->assertEquals('{"a":"foo1"}', ClassWithMorePropertiesMeta::toJson($instance, null, Fields::fromArray(["a" => true]))); $this->assertEquals('{"b":"foo2","c":"foo3","d":"foo4"}', ClassWithMorePropertiesMeta::toJson($instance, null, Fields::fromArray(["b" => true, "c" => true, "d" => true]))); $instance2 = new ClassWithMoreProperties(); $instance2->a = "foo6"; $instance->f = $instance2; $this->assertEquals('{"e":"foo5","f":{"a":"foo6","b":null}}', ClassWithMorePropertiesMeta::toJson($instance, null, Fields::fromArray(["e" => true, "f" => ["a" => true, "b" => true]]))); $instance3 = new ClassWithMoreProperties(); $instance3->a = "foo7"; $instance->g = [$instance2, $instance3]; $this->assertEquals('{"g":[{"a":"foo6"},{"a":"foo7"}]}', ClassWithMorePropertiesMeta::toJson($instance, null, Fields::fromArray(["g" => ["a" => true]]))); }