Beispiel #1
0
    def test_act_direct_message(self):
        moxer = Mox()

        api = _create_default_mocks(moxer)
        _build_standard_config(moxer)
        bundle = _create_actor_and_delegates(api, moxer)
        actor = bundle.actor

        direct_id = 1
        direct = moxer.CreateMock(twitter.DirectMessage)
        user = moxer.CreateMock(twitter.User)
        direct.id = direct_id
        direct.sender_screen_name = "mikemattozzi"
        direct.text = "why is blood spattered all over your car?"

        _return_direct_messages(api, [direct])

        post = moxer.CreateMockAnything()
        post.id = 101

        _return_replies(api, ())
        TwitterResponseAccessor.get_by_message_id(str(direct_id))
        ArtifactAccessor.search("spattered").AndReturn(create_content_list(10))

        # response
        api.PostDirectMessage(direct.sender_screen_name,
                              IgnoreArg()).AndReturn(post)
        TwitterResponseAccessor.create(str(direct.id),
                                       response_id=str(post.id),
                                       user=direct.sender_screen_name)
        post.AsDict().AndReturn({})

        moxer.ReplayAll()
        actor.act()
        moxer.VerifyAll()
 def test_act_direct_message(self):
     moxer = Mox()
     
     api = _create_default_mocks(moxer)
     _build_standard_config(moxer)
     bundle = _create_actor_and_delegates(api, moxer)
     actor = bundle.actor
     
     direct_id = 1
     direct = moxer.CreateMock(twitter.DirectMessage)
     user = moxer.CreateMock(twitter.User)
     direct.id = direct_id
     direct.sender_screen_name = "mikemattozzi"
     direct.text = "why is blood spattered all over your car?"
     
     _return_direct_messages(api, [direct])
     
     post = moxer.CreateMockAnything()
     post.id = 101
     
     _return_replies(api, ())
     TwitterResponseAccessor.get_by_message_id(str(direct_id))
     ArtifactAccessor.search("spattered").AndReturn(create_content_list(10))
     
     # response
     api.PostDirectMessage(direct.sender_screen_name, IgnoreArg()).AndReturn(post)
     TwitterResponseAccessor.create(str(direct.id), response_id=str(post.id), user=direct.sender_screen_name)
     post.AsDict().AndReturn({})
     
     moxer.ReplayAll()
     actor.act()
     moxer.VerifyAll()
Beispiel #3
0
    def test_mix_response(self):
        moxer = mox.Mox()
        moxer.StubOutWithMock(ArtifactAccessor, "search")

        inquiry = "how many elephants are in pakistan during winter"

        # queries from longest word to shortest until target results are reached
        ArtifactAccessor.search("elephants").AndReturn(create_content_list(5))
        ArtifactAccessor.search("pakistan").AndReturn(create_content_list(5))

        moxer.ReplayAll()
        sources, text = new_default_mixer().mix_response(inquiry)
        print text
        moxer.VerifyAll()
Beispiel #4
0
 def test_mix_response(self):
     moxer = mox.Mox()
     moxer.StubOutWithMock(ArtifactAccessor, "search")
     
     inquiry = "how many elephants are in pakistan during winter"
     
     # queries from longest word to shortest until target results are reached
     ArtifactAccessor.search("elephants").AndReturn(create_content_list(5))
     ArtifactAccessor.search("pakistan").AndReturn(create_content_list(5))
     
     moxer.ReplayAll()
     sources, text = new_default_mixer().mix_response(inquiry)
     print text
     moxer.VerifyAll()
Beispiel #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()
Beispiel #6
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()
Beispiel #7
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()
Beispiel #8
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()
Beispiel #9
0
def search(request):
    t = loader.get_template("search.html")
    q = request.REQUEST.get("q", None)
    contents = None
    if not q:
        msg = "no query provided"
    else:
        q = urllib.unquote(q)
        contents = ArtifactAccessor.search(q)
        msg = "%d results found for query '%s'" % (len(contents), q)
    c = Context(dict(msg=msg, contents=contents))
    return HttpResponse(t.render(c))
Beispiel #10
0
    def mix_response(self, message, min_results=10, **kw):
        # find longest word in message
        words = [w for w in message.split()]
        sorted_words = sorted(words, key=lambda w: len(w), reverse=True)
                
        # searches from longest word to shortest until result count > min result threshold
        contents = []
        for w in sorted_words:
            results = ArtifactAccessor.search(w)
            logging.debug("search for '%s' found %d result(s)" % (w, len(results)))
            contents.extend(results)
            if len(contents) >= min_results:
                break

        are_results_mixed = False
        if contents:
            # mix search results
            try:
                result = self.__mix_contents(contents, **kw)
                are_results_mixed = True
            except MissingDataException, e:
                logging.error(traceback.print_exc())
Beispiel #11
0
    def mix_response(self, message, min_results=10, **kw):
        # find longest word in message
        words = [w for w in message.split()]
        sorted_words = sorted(words, key=lambda w: len(w), reverse=True)

        # searches from longest word to shortest until result count > min result threshold
        contents = []
        for w in sorted_words:
            results = ArtifactAccessor.search(w)
            logging.debug("search for '%s' found %d result(s)" %
                          (w, len(results)))
            contents.extend(results)
            if len(contents) >= min_results:
                break

        are_results_mixed = False
        if contents:
            # mix search results
            try:
                result = self.__mix_contents(contents, **kw)
                are_results_mixed = True
            except MissingDataException, e:
                logging.error(traceback.print_exc())
Beispiel #12
0
 def mix_after_search(self, term, **kw):
     contents = ArtifactAccessor.search(term)
     return self.__mix_contents(contents, **kw)
def _search_results(term, results):
    ArtifactAccessor.search(term).AndReturn(results)
Beispiel #14
0
def _search_results(term, results):
    ArtifactAccessor.search(term).AndReturn(results)
Beispiel #15
0
 def mix_after_search(self, term, **kw):
     contents = ArtifactAccessor.search(term)
     return self.__mix_contents(contents, **kw)