def test_get_list(self):
        SourceFactory.create_batch(5)
        self.assertEqual(Source.objects.count(), 5)

        response = self.client.get(f'{self.list_endpoint}')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()
        self.assertEqual(5, data['count'])
        self.assertEqual(5, len(data['results']))
        self.assertJsonSchema(self.list_sources_schema, data)
    def test_create_initial_signal_invalid_source(self, validate_address):
        signal_count = Signal.objects.count()

        SourceFactory.create_batch(5)

        initial_data = copy.deepcopy(self.initial_data_base)
        initial_data['source'] = 'this-source-does-not-exists-so-the-create-should-fail'

        with self.settings(FEATURE_FLAGS={'API_VALIDATE_SOURCE_AGAINST_SOURCE_MODEL': True}):
            response = self.client.post(self.list_endpoint, initial_data, format='json')

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(Signal.objects.count(), signal_count)
    def test_create_initial_signal_invalid_source(self, validate_address):
        signal_count = Signal.objects.count()

        SourceFactory.create_batch(5)

        initial_data = copy.deepcopy(self.initial_data_base)
        initial_data[
            'source'] = 'this-source-does-not-exists-so-the-create-should-fail'

        response = self.client.post(self.list_endpoint,
                                    initial_data,
                                    format='json')

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(Signal.objects.count(), signal_count)
    def test_create_child_signal_transform_source(self, validate_address):
        parent_signal = SignalFactory.create()
        signal_count = Signal.objects.count()

        source, *_ = SourceFactory.create_batch(4)
        SourceFactory.create(
            name=settings.API_TRANSFORM_SOURCE_OF_CHILD_SIGNAL_TO)

        initial_data = copy.deepcopy(self.initial_data_base)
        initial_data['source'] = source.name
        initial_data['parent'] = parent_signal.pk

        with self.settings(FEATURE_FLAGS={
                'API_TRANSFORM_SOURCE_IF_A_SIGNAL_IS_A_CHILD': True
        }):
            response = self.client.post(self.list_endpoint,
                                        initial_data,
                                        format='json')

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(Signal.objects.count(), signal_count + 1)

        response_data = response.json()
        self.assertNotEqual(response_data['source'], source.name)
        self.assertEqual(response_data['source'],
                         settings.API_TRANSFORM_SOURCE_OF_CHILD_SIGNAL_TO)

        signal = Signal.objects.get(pk=response_data['id'])
        self.assertNotEqual(signal.source, source.name)
        self.assertEqual(signal.source,
                         settings.API_TRANSFORM_SOURCE_OF_CHILD_SIGNAL_TO)
예제 #5
0
    def setUp(self):
        super().setUp()
        self.client.force_authenticate(user=self.sia_read_write_user)

        self.sources = SourceFactory.create_batch(5)

        self.list_sources_schema = self.load_json_schema(
            os.path.join(THIS_DIR, 'json_schema',
                         'get_signals_v1_private_sources.json'))
    def test_get_list_can_be_selected_filter(self):
        # setup
        can_be_selected_sources = SourceFactory.create_batch(
            3, can_be_selected=True, is_active=True)
        can_not_be_selected_sources = SourceFactory.create_batch(
            2, can_be_selected=False, is_active=True)

        self.assertEqual(Source.objects.count(), 5)
        self.assertEqual(
            Source.objects.filter(can_be_selected=True).count(), 3)
        self.assertEqual(
            Source.objects.filter(can_be_selected=False).count(), 2)

        # can_be_selected = true
        response = self.client.get(
            f'{self.list_endpoint}?can_be_selected=true')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()
        self.assertJsonSchema(self.list_sources_schema, data)

        self.assertEqual(3, data['count'])
        self.assertEqual(3, len(data['results']))

        source_ids = [source.id for source in can_be_selected_sources]
        result_ids = [result['id'] for result in data['results']]

        self.assertEqual(set(source_ids), set(result_ids))

        # can_be_selected = false
        response = self.client.get(
            f'{self.list_endpoint}?can_be_selected=false')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()
        self.assertJsonSchema(self.list_sources_schema, data)

        self.assertEqual(2, data['count'])
        self.assertEqual(2, len(data['results']))

        source_ids = [source.id for source in can_not_be_selected_sources]
        result_ids = [result['id'] for result in data['results']]

        self.assertEqual(set(source_ids), set(result_ids))
    def test_get_list_is_active_filter(self):
        # setup
        active_sources = SourceFactory.create_batch(3)
        inactive_sources = SourceFactory.create_batch(2, is_active=False)
        self.assertEqual(Source.objects.count(), 5)
        self.assertEqual(Source.objects.filter(is_active=True).count(), 3)
        self.assertEqual(Source.objects.filter(is_active=False).count(), 2)

        # is_active = true
        response = self.client.get(f'{self.list_endpoint}?is_active=true')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()
        self.assertJsonSchema(self.list_sources_schema, data)

        self.assertEqual(3, data['count'])
        self.assertEqual(3, len(data['results']))

        active_source_ids = [
            active_source.id for active_source in active_sources
        ]
        result_ids = [result['id'] for result in data['results']]

        self.assertEqual(set(active_source_ids), set(result_ids))

        # is_active = false
        response = self.client.get(f'{self.list_endpoint}?is_active=false')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()
        self.assertJsonSchema(self.list_sources_schema, data)

        self.assertEqual(2, data['count'])
        self.assertEqual(2, len(data['results']))

        inactive_source_ids = [
            inactive_source.id for inactive_source in inactive_sources
        ]
        result_ids = [result['id'] for result in data['results']]

        self.assertEqual(set(inactive_source_ids), set(result_ids))
    def test_create_initial_signal_valid_source(self, validate_address):
        signal_count = Signal.objects.count()

        source, *_ = SourceFactory.create_batch(5)

        initial_data = copy.deepcopy(self.initial_data_base)
        initial_data['source'] = source.name

        with self.settings(FEATURE_FLAGS={'API_VALIDATE_SOURCE_AGAINST_SOURCE_MODEL': True}):
            response = self.client.post(self.list_endpoint, initial_data, format='json')

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(Signal.objects.count(), signal_count + 1)

        response_data = response.json()
        self.assertEqual(response_data['source'], source.name)

        signal = Signal.objects.get(pk=response_data['id'])
        self.assertEqual(signal.source, source.name)
    def test_create_initial_signal_valid_source(self, validate_address):
        signal_count = Signal.objects.count()

        source, *_ = SourceFactory.create_batch(5)

        initial_data = copy.deepcopy(self.initial_data_base)
        initial_data['source'] = source.name

        response = self.client.post(self.list_endpoint,
                                    initial_data,
                                    format='json')

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(Signal.objects.count(), signal_count + 1)

        response_data = response.json()
        self.assertEqual(response_data['source'], source.name)

        signal = Signal.objects.get(pk=response_data['id'])
        self.assertEqual(signal.source, source.name)