Example #1
0
 def setUp(self):
     self._wtTestFixture = WormtableTestFixture()
     self._wtTestFixture.setUp()
     self.setUpServer(backend.Backend(self._wtTestFixture.dataDir,
                                      variants.WormtableVariantSet))
Example #2
0
 def setUp(self):
     self._wtTestFixture = WormtableTestFixture()
     self._wtTestFixture.setUp()
     self.setUpServer(backend.Backend(self._wtTestFixture.dataDir,
                                      variants.WormtableVariantSet))
Example #3
0
class EndToEndWormtableTest(unittest.TestCase):
    def setUpServer(self, backend):
        frontend.app.config['TESTING'] = True
        frontend.app.backend = backend
        self.app = frontend.app.test_client()

    def setUp(self):
        self._wtTestFixture = WormtableTestFixture()
        self._wtTestFixture.setUp()
        self.setUpServer(backend.Backend(self._wtTestFixture.dataDir,
                                         variants.WormtableVariantSet))

    def tearDown(self):
        self._wtTestFixture.tearDown()

    def sendJSONPostRequest(self, path, data):
        return self.app.post(path,
                             headers={'Content-type': 'application/json'},
                             data=data)

    def testVariantSetsSearch(self):
        # TODO: Set up the test backend API to return these values rather than
        # hard-coding them here.
        expectedIds = ['example_1', 'example_2', 'example_3', 'example_4']
        request = protocol.GASearchVariantSetsRequest()
        request.pageSize = len(expectedIds)
        response = self.sendJSONPostRequest('/variantsets/search',
                                            request.toJSONString())

        self.assertEqual(200, response.status_code)

        responseData = protocol.GASearchVariantSetsResponse.fromJSONString(
            response.data)
        self.assertTrue(protocol.GASearchVariantSetsResponse.validate(
            responseData.toJSONDict()))

        self.assertIsNone(responseData.nextPageToken)
        self.assertEqual(len(expectedIds), len(responseData.variantSets))
        for variantSet in responseData.variantSets:
            self.assertTrue(variantSet.id in expectedIds)

    def testVariantsSearch(self):
        # TODO: As above, get these from the test backend API
        expectedIds = ['example_1']
        referenceName = '1'

        request = protocol.GASearchVariantsRequest()
        request.referenceName = referenceName
        request.start = 0
        request.end = 0

        request.variantSetIds = expectedIds

        # Request windows is too small, no results
        response = self.sendJSONPostRequest('/variants/search',
                                            request.toJSONString())
        self.assertEqual(200, response.status_code)
        responseData = protocol.GASearchVariantsResponse.fromJSONString(
            response.data)
        self.assertIsNone(responseData.nextPageToken)
        self.assertEqual([], responseData.variants)

        # Larger request window, expect results
        request.end = 2**16
        response = self.sendJSONPostRequest('/variants/search',
                                            request.toJSONString())
        self.assertEqual(200, response.status_code)
        responseData = protocol.GASearchVariantsResponse.fromJSONString(
            response.data)
        self.assertTrue(protocol.GASearchVariantsResponse.validate(
            responseData.toJSONDict()))
        self.assertNotEqual([], responseData.variants)

        # Verify all results are in the correct range, set and reference
        for variant in responseData.variants:
            self.assertGreaterEqual(variant.start, 0)
            self.assertLessEqual(variant.end, 2**16)
            self.assertTrue(variant.variantSetId in expectedIds)
            self.assertEqual(variant.referenceName, referenceName)
Example #4
0
class EndToEndWormtableTest(unittest.TestCase):
    def setUpServer(self, backend):
        frontend.app.config['TESTING'] = True
        frontend.app.backend = backend
        self.app = frontend.app.test_client()

    def setUp(self):
        self._wtTestFixture = WormtableTestFixture()
        self._wtTestFixture.setUp()
        self.setUpServer(backend.Backend(self._wtTestFixture.dataDir,
                                         variants.WormtableVariantSet))

    def tearDown(self):
        self._wtTestFixture.tearDown()

    def sendJSONPostRequest(self, path, data):
        return self.app.post(path,
                             headers={'Content-type': 'application/json'},
                             data=data)

    def testVariantSetsSearch(self):
        # TODO: Set up the test backend API to return these values rather than
        # hard-coding them here.
        expectedIds = ['example_1', 'example_2', 'example_3', 'example_4']
        request = protocol.GASearchVariantSetsRequest()
        request.pageSize = len(expectedIds)
        response = self.sendJSONPostRequest('/variantsets/search',
                                            request.toJsonString())

        self.assertEqual(200, response.status_code)

        responseData = protocol.GASearchVariantSetsResponse.fromJsonString(
            response.data)
        self.assertTrue(protocol.GASearchVariantSetsResponse.validate(
            responseData.toJsonDict()))

        self.assertIsNone(responseData.nextPageToken)
        self.assertEqual(len(expectedIds), len(responseData.variantSets))
        for variantSet in responseData.variantSets:
            self.assertTrue(variantSet.id in expectedIds)

    def testVariantsSearch(self):
        # TODO: As above, get these from the test backend API
        expectedIds = ['example_1']
        referenceName = '1'

        request = protocol.GASearchVariantsRequest()
        request.referenceName = referenceName
        request.start = 0
        request.end = 0

        request.variantSetIds = expectedIds

        # Request windows is too small, no results
        response = self.sendJSONPostRequest('/variants/search',
                                            request.toJsonString())
        self.assertEqual(200, response.status_code)
        responseData = protocol.GASearchVariantsResponse.fromJsonString(
            response.data)
        self.assertIsNone(responseData.nextPageToken)
        self.assertEqual([], responseData.variants)

        # Larger request window, expect results
        request.end = 2 ** 16
        response = self.sendJSONPostRequest('/variants/search',
                                            request.toJsonString())
        self.assertEqual(200, response.status_code)
        responseData = protocol.GASearchVariantsResponse.fromJsonString(
            response.data)
        self.assertTrue(protocol.GASearchVariantsResponse.validate(
            responseData.toJsonDict()))
        self.assertNotEqual([], responseData.variants)

        # Verify all results are in the correct range, set and reference
        for variant in responseData.variants:
            self.assertGreaterEqual(variant.start, 0)
            self.assertLessEqual(variant.end, 2 ** 16)
            self.assertTrue(variant.variantSetId in expectedIds)
            self.assertEqual(variant.referenceName, referenceName)