public function testAddFeatures() { $operator = new LessThan(42); $conditions = new ArrayList([new OperatorCondition('value', $operator)]); $manager = new FeatureManager(); $manager->addFeature(new Feature('feature1', $conditions))->addFeature(new Feature('feature2', $conditions)); $context1 = new Context(['value' => 42]); $context2 = new Context(['value' => 21]); $this->assertFalse($manager->isActive('feature1', $context1)); $this->assertTrue($manager->isActive('feature2', $context2)); }
public function testLoadFromYaml() { $yaml = <<<YML features: - name: some-feature conditions: - name: operator-condition key: user_id operator: name: greater-than value: 41 status: conditionally-active - name: some-feature2 conditions: - name: operator-condition key: user_id operator: name: greater-than value: 42 status: conditionally-active YML; $serializer = new Serializer(); $features = $serializer->deserialize(Yaml::parse($yaml)['features']); $manager = new FeatureManager($features); $context = new Context(); $context->set('user_id', 42); $this->assertTrue($manager->isActive('some-feature', $context)); }
public function testLoadFromYaml() { $language = new ExpressionLanguage(); $expression = new ExpressionCondition('user["active"] and product["price"] / 100 >= 0.2', $language); $manager = new FeatureManager(); $manager->addFeature(new Feature('feature1', new ArrayList([$expression]))); $context = new Context(); $context->set('user', ['active' => true]); $context->set('product', ['price' => 30]); $this->assertTrue($manager->isActive('feature1', $context)); }