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