def test_sync(self):
        '''Test the threading/transcription works when async=false'''
        reactor = self.buildReactor()

        expected = {'some': 'result'}

        stub_transcriber = StubTranscriber(transcribe_stub=expected)
        controller = TranscriptionsController(stub_transcriber,
                                              reactor=reactor)

        req = DummyRequest([])
        req.method = 'POST'
        req.args = {'transcript': [''], 'audio': [''], 'async': ['false']}

        finish = req.notifyFinish()
        finish.addCallback(lambda _: reactor.callWhenRunning(reactor.stop))

        body = controller.render(req)
        assert_equals(body, NOT_DONE_YET)

        self.runReactor(reactor, timeout=1)

        assert_equals(len(req.written), 1)
        got = json.loads(req.written[0])
        assert_equals(got, expected)
    def test_sync_cancel(self):
        '''Test that the controller doesn't try to render when the request is cancelled.'''
        reactor = self.buildReactor()

        stub_transcriber = StubTranscriber()
        controller = TranscriptionsController(stub_transcriber,
                                              reactor=reactor)

        req = DummyRequest([])
        req.method = 'POST'
        req.args = {'transcript': [''], 'audio': [''], 'async': ['false']}

        controller.render(req)

        req.processingFailed(Failure(ConnectionDone("Simulated disconnect")))

        reactor.callWhenRunning(reactor.stop)
        self.runReactor(reactor)

        assert_equals(req.finished, 0)
    def test_sync_cancel(self):
        '''Test that the controller doesn't try to render when the request is cancelled.'''
        reactor = self.buildReactor()

        stub_transcriber = StubTranscriber()
        controller = TranscriptionsController(stub_transcriber, reactor=reactor)

        req = DummyRequest([])
        req.method = 'POST'
        req.args = {'transcript': [''], 'audio': [''], 'async': ['false']}

        controller.render(req)

        req.processingFailed(
            Failure(ConnectionDone("Simulated disconnect")))

        reactor.callWhenRunning(reactor.stop)
        self.runReactor(reactor)

        assert_equals(req.finished, 0)
    def test_async(self):
        '''Test the redirect works when async=true'''
        reactor = self.buildReactor()

        uid = 'myuid'
        want_location = '/transcriptions/' + uid

        stub_transcriber = StubTranscriber(uid_stub=uid)
        controller = TranscriptionsController(stub_transcriber, reactor=reactor)

        req = DummyRequest([])
        req.method = 'POST'
        req.args = {'transcript': [''], 'audio': ['']}

        body = controller.render(req)
        assert_equals(body, '')

        assert 'location' in req.outgoingHeaders
        got_location = req.outgoingHeaders['location']

        assert_equals(want_location, got_location)
    def test_async(self):
        '''Test the redirect works when async=true'''
        reactor = self.buildReactor()

        uid = 'myuid'
        want_location = '/transcriptions/' + uid

        stub_transcriber = StubTranscriber(uid_stub=uid)
        controller = TranscriptionsController(stub_transcriber, reactor=reactor)

        req = DummyRequest([])
        req.method = 'POST'
        req.args = {'transcript': [''], 'audio': ['']}

        body = controller.render(req)
        assert_equals(body, '')

        assert 'location' in req.outgoingHeaders
        got_location = req.outgoingHeaders['location']

        assert_equals(want_location, got_location)
    def test_sync(self):
        '''Test the threading/transcription works when async=false'''
        reactor = self.buildReactor()

        expected = {'some': 'result'}

        stub_transcriber = StubTranscriber(transcribe_stub=expected)
        controller = TranscriptionsController(stub_transcriber, reactor=reactor)

        req = DummyRequest([])
        req.method = 'POST'
        req.args = {'transcript': [''], 'audio': [''], 'async': ['false']}

        finish = req.notifyFinish()
        finish.addCallback(lambda _: reactor.callWhenRunning(reactor.stop))

        body = controller.render(req)
        assert_equals(body, NOT_DONE_YET)

        self.runReactor(reactor, timeout=1)

        assert_equals(len(req.written), 1)
        got = json.loads(req.written[0])
        assert_equals(got, expected)