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));
 }