예제 #1
0
def _mix_random(api, moxer):
    moxer.StubOutWithMock(Mixer, "mix_random_limit_sources")
    sources = [
        MockEntity(key_name=str(i), name="source/%d" % i) for i in xrange(2)
    ]
    content = "so, wtf is going on here"
    Mixer.mix_random_limit_sources(2, degrade=True).AndReturn(
        (sources, content))
예제 #2
0
 def test_mix_response_mix_contents_fails(self):
     m = mox.Mox()
     m.StubOutWithMock(ArtifactAccessor, "search")
     # m.StubOutWithMock(Mixer, "random_resource")
     m.StubOutWithMock(Mixer, "mix_random_limit_sources")
     
     inquiry = "elephants"
     
     # content should be short enough to make SentenceSpeaker fail
     ArtifactAccessor.search("elephants").AndReturn(tuple(e for e in MockQuery(xrange(1), create_call=lambda id: _content(id, 0))))
     Mixer.mix_random_limit_sources(1).AndReturn(self.__default_mix_results())
     #Mixer.random_resource().AndReturn(MockEntity(key_name="failblog", url="http://failblog.org"))
     
     m.ReplayAll()
     sources, text = new_default_mixer().mix_response(inquiry)
     m.VerifyAll()
예제 #3
0
 def test_mix_response_no_search_results(self):
     m = mox.Mox()
     m.StubOutWithMock(ArtifactAccessor, "search")
     # m.StubOutWithMock(Mixer, "random_resource")
     m.StubOutWithMock(Mixer, "mix_random_limit_sources")
     
     inquiry = "elephants"
     
     # no search results returned
     ArtifactAccessor.search("elephants").AndReturn(())
     Mixer.mix_random_limit_sources(1).AndReturn(self.__default_mix_results())
     # Mixer.random_resource().AndReturn(MockEntity(key_name="failblog", url="http://failblog.org"))
     
     m.ReplayAll()
     sources, text = new_default_mixer().mix_response(inquiry)
     m.VerifyAll()
예제 #4
0
    def test_mix_response_no_search_results(self):
        m = mox.Mox()
        m.StubOutWithMock(ArtifactAccessor, "search")
        # m.StubOutWithMock(Mixer, "random_resource")
        m.StubOutWithMock(Mixer, "mix_random_limit_sources")

        inquiry = "elephants"

        # no search results returned
        ArtifactAccessor.search("elephants").AndReturn(())
        Mixer.mix_random_limit_sources(1).AndReturn(
            self.__default_mix_results())
        # Mixer.random_resource().AndReturn(MockEntity(key_name="failblog", url="http://failblog.org"))

        m.ReplayAll()
        sources, text = new_default_mixer().mix_response(inquiry)
        m.VerifyAll()
예제 #5
0
    def test_mix_response_mix_contents_fails(self):
        m = mox.Mox()
        m.StubOutWithMock(ArtifactAccessor, "search")
        # m.StubOutWithMock(Mixer, "random_resource")
        m.StubOutWithMock(Mixer, "mix_random_limit_sources")

        inquiry = "elephants"

        # content should be short enough to make SentenceSpeaker fail
        ArtifactAccessor.search("elephants").AndReturn(
            tuple(e
                  for e in MockQuery(xrange(1),
                                     create_call=lambda id: _content(id, 0))))
        Mixer.mix_random_limit_sources(1).AndReturn(
            self.__default_mix_results())
        #Mixer.random_resource().AndReturn(MockEntity(key_name="failblog", url="http://failblog.org"))

        m.ReplayAll()
        sources, text = new_default_mixer().mix_response(inquiry)
        m.VerifyAll()
예제 #6
0
    def get(self, source_name, **kw):
        helper = RequestHelper(self)

        try:
            speaker_name = self.request.get("s", None)
            if speaker_name:
                speaker = new_speaker(speaker_name)[1]
                mixer = Mixer.new(speaker)
            else:
                speaker_name, speaker = new_random_speaker()
                logging.debug("speaker: %s" % str(speaker))
                mixer = Mixer(speaker)

            # direct message
            message = self.request.get("q", None)
            if message:
                message = urllib.unquote(message)
                sources, content = mixer.mix_response(message)
            else:
                if not source_name:
                    sources, content = mixer.mix_random_limit_sources(
                        2, degrade=True)
                else:
                    source_name = urllib.unquote(source_name)
                    logging.debug("get source_name: %s" % source_name)
                    if ";" in source_name:
                        # multiple sources
                        sources_split = set(source_name.split(";"))
                        sources, content = mixer.mix_sources(*sources_split)
                    else:
                        # single source
                        sources, content = mixer.mix_sources(source_name)
            logging.debug("sources: %s" % str(sources))
            source_hash_list = [s.name for s in sources]
            mix_hash = {
                "sources": source_hash_list,
                "speaker": {
                    "name": speaker_name,
                    "id": hash(speaker),
                    "details": str(speaker)
                },
                "body": content
            }
            helper.write_json(mix_hash)
        except NotFoundException, ex:
            helper.error(404, Exceptions.format(ex))
            logging.error(ex)
예제 #7
0
    def get(self, source_name, **kw):
        helper = RequestHelper(self)

        try:
            speaker_name = self.request.get("s", None)
            if speaker_name:
                speaker = new_speaker(speaker_name)[1]
                mixer = Mixer.new(speaker)
            else:
                speaker_name, speaker = new_random_speaker()
                logging.debug("speaker: %s" % str(speaker))
                mixer = Mixer(speaker)
        
            # direct message
            message = self.request.get("q", None)
            if message:
                message = urllib.unquote(message)
                sources, content = mixer.mix_response(message)
            else:
                if not source_name:
                    sources, content = mixer.mix_random_limit_sources(2, degrade=True)
                else:
                    source_name = urllib.unquote(source_name)
                    logging.debug("get source_name: %s" % source_name)
                    if ";" in source_name:
                        # multiple sources
                        sources_split = set(source_name.split(";"))
                        sources, content = mixer.mix_sources(*sources_split)
                    else:
                        # single source
                        sources, content = mixer.mix_sources(source_name)
            logging.debug("sources: %s" % str(sources))
            source_hash_list = [s.name for s in sources]
            mix_hash = {"sources": source_hash_list,
                "speaker": {"name": speaker_name, "id": hash(speaker), "details": str(speaker)},
                "body": content}
            helper.write_json(mix_hash)
        except NotFoundException, ex:
            helper.error(404, Exceptions.format(ex))
            logging.error(ex)
예제 #8
0
def _mix_random(api, moxer):
    moxer.StubOutWithMock(Mixer, "mix_random_limit_sources")
    sources = [MockEntity(key_name=str(i), name="source/%d" % i) for i in xrange(2)]
    content = "so, wtf is going on here"
    Mixer.mix_random_limit_sources(2, degrade=True).AndReturn((sources, content))