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