Ejemplo n.º 1
0
def test_evaluate_second_variation_no_target_match():
    feature = copy(minimal_feature)
    hash_value = int(hashlib.sha1('feature.key.abc.xyz'.encode('utf-8')).hexdigest()[:15], 16) / float(
        0xFFFFFFFFFFFFFFF)
    feature['variations'] = [
        {
            u'value': True,
            u'weight': floor(hash_value) - 1,
            u'targets': [
                {
                    u'attribute': u'bizzle',
                    u'op': u'in',
                    u'values': [u'defg']
                }
            ]
        },
        {
            u'value': False,
            u'weight': 100 - (floor(hash_value) - 1),
            u'targets': [
                {
                    u'attribute': u'bazzle',
                    u'op': u'in',
                    u'values': [u'zyx']
                },
                {
                    u'attribute': u'bizzle',
                    u'op': u'in',
                    u'values': [u'defg']
                }
            ]
        }
    ]
    assert util._evaluate(feature, user) == False
Ejemplo n.º 2
0
def test_evaluate_first_variation_both_targets_match_user_key_match_no_user_target():
    feature = copy(minimal_feature)
    feature['variations'] = [
        {
            u'value': True,
            u'weight': 0,
            u'targets': [
                {
                    u'attribute': u'key',
                    u'op': u'in',
                    u'values': ['xyz']
                },
            ]
        },
        {
            u'value': False,
            u'weight': 100,
            u'targets': [
                {
                    u'attribute': u'bazzle',
                    u'op': u'in',
                    u'values': [u'zyx']
                },
                {
                    u'attribute': u'bizzle',
                    u'op': u'in',
                    u'values': [u'def']
                }
            ]
        }
    ]
    assert util._evaluate(feature, user) == True
Ejemplo n.º 3
0
def test_evaluate_second_variation_target_match():
    feature = copy(minimal_feature)
    feature['variations'] = [
        {
            u'value': True,
            u'weight': 0,
            u'targets': [
                {
                    u'attribute': u'bizzle',
                    u'op': u'in',
                    u'values': [u'defg']
                }
            ]
        },
        {
            u'value': False,
            u'weight': 100,
            u'targets': [
                {
                    u'attribute': u'bazzle',
                    u'op': u'in',
                    u'values': [u'zyx']
                },
                {
                    u'attribute': u'bizzle',
                    u'op': u'in',
                    u'values': [u'def']
                }
            ]
        }
    ]
    assert util._evaluate(feature, user) == False
Ejemplo n.º 4
0
def test_evaluate_second_variation_no_target_match():
    feature = copy(minimal_feature)
    hash_value = int(
        hashlib.sha1('feature.key.abc.xyz'.encode('utf-8')).hexdigest()[:15],
        16) / float(0xFFFFFFFFFFFFFFF)
    feature['variations'] = [{
        u'value':
        True,
        u'weight':
        floor(hash_value) - 1,
        u'targets': [{
            u'attribute': u'bizzle',
            u'op': u'in',
            u'values': [u'defg']
        }]
    }, {
        u'value':
        False,
        u'weight':
        100 - (floor(hash_value) - 1),
        u'targets': [{
            u'attribute': u'bazzle',
            u'op': u'in',
            u'values': [u'zyx']
        }, {
            u'attribute': u'bizzle',
            u'op': u'in',
            u'values': [u'defg']
        }]
    }]
    assert util._evaluate(feature, user) == False
Ejemplo n.º 5
0
def test_evaluate_second_variation_target_match():
    feature = copy(minimal_feature)
    feature['variations'] = [{
        u'value':
        True,
        u'weight':
        0,
        u'targets': [{
            u'attribute': u'bizzle',
            u'op': u'in',
            u'values': [u'defg']
        }]
    }, {
        u'value':
        False,
        u'weight':
        100,
        u'targets': [{
            u'attribute': u'bazzle',
            u'op': u'in',
            u'values': [u'zyx']
        }, {
            u'attribute': u'bizzle',
            u'op': u'in',
            u'values': [u'def']
        }]
    }]
    assert util._evaluate(feature, user) == False
Ejemplo n.º 6
0
def test_evaluate_first_variation_both_targets_match_user_key_match_no_user_target(
):
    feature = copy(minimal_feature)
    feature['variations'] = [{
        u'value':
        True,
        u'weight':
        0,
        u'targets': [
            {
                u'attribute': u'key',
                u'op': u'in',
                u'values': ['xyz']
            },
        ]
    }, {
        u'value':
        False,
        u'weight':
        100,
        u'targets': [{
            u'attribute': u'bazzle',
            u'op': u'in',
            u'values': [u'zyx']
        }, {
            u'attribute': u'bizzle',
            u'op': u'in',
            u'values': [u'def']
        }]
    }]
    assert util._evaluate(feature, user) == True
Ejemplo n.º 7
0
 def cb(feature):
     if feature is None:
         val = default
     else:
         val = _evaluate(feature, user)
         if val is None:
             val = default
     self._send({"kind": "feature", "key": key, "user": user, "value": val})
     return val
Ejemplo n.º 8
0
 def cb(feature):
     if feature is None:
         val = default
     else:
         val = _evaluate(feature, user)
         if val is None:
             val = default
     self._send({
         'kind': 'feature',
         'key': key,
         'user': user,
         'value': val
     })
     return val
Ejemplo n.º 9
0
def test_evaluate_feature_off():
    feature = copy(minimal_feature)
    feature['on'] = False
    assert util._evaluate(feature, user) == None
Ejemplo n.º 10
0
def test_evaluate_feature_off():
    feature = copy(minimal_feature)
    feature['on'] = False
    assert util._evaluate(feature, user) == None