mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-16 21:37:59 +08:00
* move common code into server, update tests and makefile remove backend directory, refactor update smoke tests
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
from http import HTTPStatus
|
|
import unittest
|
|
import math
|
|
from test.unit import start_test_server, stop_test_server
|
|
from test import FIXTURES_ROOT
|
|
import test.decode_fbs as decode_fbs
|
|
|
|
import requests
|
|
|
|
VERSION = "v0.2"
|
|
BAD_FILTER = {"filter": {"obs": {"annotation_value": [{"name": "xyz"}]}}}
|
|
|
|
|
|
class WithNaNs(unittest.TestCase):
|
|
"""Test Case for endpoints"""
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.ps, cls.server = start_test_server([f"{FIXTURES_ROOT}/nan.h5ad"])
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
stop_test_server(cls.ps)
|
|
|
|
def setUp(self):
|
|
self.session = requests.Session()
|
|
self.url_base = f"{self.server}/api/{VERSION}/"
|
|
|
|
def test_initialize(self):
|
|
endpoint = "schema"
|
|
url = f"{self.url_base}{endpoint}"
|
|
result = self.session.get(url)
|
|
self.assertEqual(result.status_code, HTTPStatus.OK)
|
|
|
|
def test_data(self):
|
|
endpoint = "data/var"
|
|
url = f"{self.url_base}{endpoint}"
|
|
filter = {"filter": {"var": {"index": [[0, 20]]}}}
|
|
result = self.session.put(url, json=filter)
|
|
self.assertEqual(result.status_code, HTTPStatus.OK)
|
|
self.assertEqual(result.headers["Content-Type"], "application/octet-stream")
|
|
df = decode_fbs.decode_matrix_FBS(result.content)
|
|
self.assertTrue(math.isnan(df["columns"][3][3]))
|
|
|
|
def test_annotation_obs(self):
|
|
endpoint = "annotations/obs"
|
|
url = f"{self.url_base}{endpoint}"
|
|
result = self.session.get(url)
|
|
self.assertEqual(result.status_code, HTTPStatus.OK)
|
|
self.assertEqual(result.headers["Content-Type"], "application/octet-stream")
|
|
df = decode_fbs.decode_matrix_FBS(result.content)
|
|
self.assertTrue(math.isnan(df["columns"][2][0]))
|
|
|
|
def test_annotation_var(self):
|
|
endpoint = "annotations/var"
|
|
url = f"{self.url_base}{endpoint}"
|
|
result = self.session.get(url)
|
|
self.assertEqual(result.status_code, HTTPStatus.OK)
|
|
self.assertEqual(result.headers["Content-Type"], "application/octet-stream")
|
|
df = decode_fbs.decode_matrix_FBS(result.content)
|
|
self.assertTrue(math.isnan(df["columns"][2][0]))
|