コード例 #1
0
ファイル: tests.py プロジェクト: cristianlp/bullet-train-api
 def test_should_remove_identityfeature_when_delete(self):
     # Given
     client = self.set_up()
     organisation = Organisation.objects.get(name="test org")
     project = Project.objects.get(name="test project",
                                   organisation=organisation)
     feature_one = Feature(name='feature1', project=project)
     feature_one.save()
     feature_two = Feature(name='feature2', project=project)
     feature_two.save()
     environment = Environment.objects.get(name="test env")
     identity = Identity(identifier="test_identity",
                         environment=environment)
     identity.save()
     environment = Environment.objects.get(name="test env")
     identity_feature_one = FeatureState(feature=feature_one,
                                         identity=identity,
                                         enabled=False,
                                         environment=environment)
     identity_feature_one.save()
     identity_feature_two = FeatureState(feature=feature_two,
                                         identity=identity,
                                         enabled=True,
                                         environment=environment)
     identity_feature_two.save()
     # When
     client.delete(self.feature_states_detail_url %
                   (identity.environment.api_key, identity.identifier,
                    identity_feature_one.id),
                   content_type='application/json')
     # Then
     identity_features = FeatureState.objects.filter(identity=identity)
     self.assertEquals(identity_features.count(), 1)
     Helper.clean_up()
コード例 #2
0
ファイル: tests.py プロジェクト: cristianlp/bullet-train-api
 def test_should_change_enabled_state_when_put(self):
     # Given
     client = self.set_up()
     organisation = Organisation.objects.get(name="test org")
     project = Project.objects.get(name="test project",
                                   organisation=organisation)
     feature = Feature(name='feature1', project=project)
     feature.save()
     environment = Environment.objects.get(name="test env")
     identity = Identity(identifier="test_identity",
                         environment=environment)
     identity.save()
     feature_state = FeatureState(feature=feature,
                                  identity=identity,
                                  enabled=False,
                                  environment=environment)
     feature_state.save()
     # When
     response = client.put(self.feature_states_detail_url %
                           (identity.environment.api_key,
                            identity.identifier, feature_state.id),
                           data=self.put_template % True,
                           content_type='application/json')
     feature_state.refresh_from_db()
     # Then
     self.assertEquals(response.status_code, status.HTTP_200_OK)
     self.assertEquals(feature_state.enabled, True)
     Helper.clean_up()
コード例 #3
0
ファイル: tests.py プロジェクト: cristianlp/bullet-train-api
 def generate_database_models(identifier='user1'):
     organisation = Organisation(name='ssg')
     organisation.save()
     project = Project(name='project1', organisation=organisation)
     project.save()
     environment = Environment(name='environment1', project=project)
     environment.save()
     feature = Feature(name="feature1", project=project)
     feature.save()
     identity = Identity(identifier=identifier, environment=environment)
     identity.save()
     return identity, project
コード例 #4
0
ファイル: tests.py プロジェクト: cristianlp/bullet-train-api
    def test_should_return_identities_for_an_environment(self):
        client = self.set_up()

        # Given
        identifierOne = 'user1'
        identifierTwo = 'user2'
        organisation = Organisation(name='ssg')
        organisation.save()
        project = Project(name='project1', organisation=organisation)
        project.save()
        environment = Environment(name='environment1', project=project)
        environment.save()
        identityOne = Identity(identifier=identifierOne,
                               environment=environment)
        identityOne.save()
        identityTwo = Identity(identifier=identifierTwo,
                               environment=environment)
        identityTwo.save()
        # When
        response = client.get('/api/v1/environments/%s/identities/' %
                              environment.api_key)
        # Then
        self.assertEquals(response.data['results'][0]['identifier'],
                          identifierOne)
        self.assertEquals(response.data['results'][1]['identifier'],
                          identifierTwo)
コード例 #5
0
    def test_percentage_values_should_be_evenly_distributed(self):
        """
        This test checks if the percentage value returned by the method on SegmentRule returns evenly distributed
        values.

        Note that since it's technically random, it's not guaranteed to pass every time, however, it should pass
        99/100 times. It will likely be more accurate by increasing the test_sample value and / or decreasing
        the num_test_buckets value.
        """
        test_sample = 10000  # number of identities to create to test with
        num_test_buckets = 10  # split the sample into 'buckets' to check that the values are evenly distributed
        test_bucket_size = int(test_sample / num_test_buckets)
        error_factor = 0.1

        # Given
        segment = Segment.objects.create(name='Test Segment',
                                         project=self.project)
        identities = []
        for i in range(test_sample):
            identities.append(
                Identity(environment=self.environment, identifier=str(i)))
        Identity.objects.bulk_create(identities)

        # When
        values = [
            segment.get_identity_percentage_value(identity)
            for identity in Identity.objects.all()
        ]
        values.sort()

        # Then
        for j in range(num_test_buckets):
            bucket_start = j * test_bucket_size
            bucket_end = (j + 1) * test_bucket_size
            bucket_value_limit = min(
                (j + 1) / num_test_buckets + error_factor *
                ((j + 1) / num_test_buckets), 1)

            assert all([
                value <= bucket_value_limit
                for value in values[bucket_start:bucket_end]
            ])