示例#1
0
 def test_getMessageResponse_GamesAlreadyStarted(self):
     self.utilities.resetValues()
     self.utilities.witCategories = {"game": "tic-tac-toe"}
     setInDB(self.SENDER_ID, {"state": {"game": "ticTacToe"}})
     response = self.utilities.getMessageResponse()
     self.assertEqual("text_message", response["type"])
     setInDB(self.SENDER_ID, {"state": None, "play": False, "game": None})
示例#2
0
 def continueQuestion(self):
     senderId = self.senderId
     self.newFavorite = getInDB(senderId, "response")
     self.newFavoriteType = getInDB(senderId, "type")
     if self.acceptNewFavorite() and self.newFavorite and self.newFavorite != "None":
         messageToSend = self.setNewFavoriteInDb()
     elif (
         self.newFavoriteType
         and self.newFavoriteType != "None"
         and self.categories.get("favorite")
     ):
         self.newFavorite = self.categories.get("favorite")
         messageToSend = self.setNewFavoriteInDb()
     elif (
         self.newFavoriteType
         and self.newFavoriteType != "None"
         and self.categories.get("response")
         and "oui" not in self.getCategoryValue("response")
         and "correct" not in self.getCategoryValue("response")
         and "bien sûr" not in self.getCategoryValue("response")
         and "non" not in self.getCategoryValue("response")
     ):
         self.newFavorite = self.categories.get("response")
         messageToSend = self.setNewFavoriteInDb()
     elif self.acceptNewFavorite():
         messageToSend = self.askNewFavorite()
     else:
         messageToSend = "Ah, ok. Donc on ne change pas"
         setInDB(senderId, {"response": None, "question": None, "type": None})
     return messageToSend
示例#3
0
 def test_getResponseWithDatabase(self):
     deleteFromDB(self.SENDER_ID)
     setInDB(self.SENDER_ID, {"rickPartLastLyrics": 5})
     response = self.functionality.getResponse()
     self.assertEqual("text_message", response["type"])
     self.assertEqual(putNotesEmojisAround("Never gonna let you down"),
                      response["message"])
示例#4
0
 def test_findInDB(self):
     """
     tests setInDB, findInDB and deleteFromDB
     """
     setInDB(0, {"name": "Joe"})
     self.assertTrue(findInDB(0), "is in db")
     deleteFromDB(1)
     self.assertFalse(findInDB(1), "is not in db anymore")
示例#5
0
 def test_deleteFromDB(self):
     """
     tests setInDB, deleteFromDB and getInDB
     """
     setInDB(0, {"name": "Joe"})
     self.assertTrue(getInDB(0, "name"), "is in db")
     deleteFromDB(0)
     self.assertFalse(getInDB(0, "name"), "is not in db anymore")
 def test_getResponse_whenNewFavorite(self):
     setInDB(self.SENDER_ID, {"question": None})
     setInDB(self.SENDER_ID, {"favorite": {"Animal": "Chat"}})
     response = self.functionality.getResponse()
     self.assertEqual(
         "Hmmm...si je me souviens bien...Animal préféré(e) pour l'instant est Chat! Est-ce que tu veux changer?",
         response["message"],
     )
     self.assertEqual("text_message", response["type"])
示例#7
0
 def askNewFavorite(self):
     messageToSend = "Good! Donc, quel est ton/ta {0} préféré(e)?".format(
         self.newFavoriteType
     )
     setInDB(
         self.senderId,
         {"question": "favorite", "type": self.newFavoriteType, "response": None,},
     )
     return messageToSend
示例#8
0
 def getResponseContinueWithQuestion(self):
     getInDB(self.senderId, "question")
     if "response" in self.categories:
         setInDB(self.senderId, {"question": None})
         messageToSend = self.getContinueHowAreYouQuestion()
     else:
         setInDB(self.senderId, {"question": None})
         messageToSend = {"RICKROLL": ["hmm, ok", "voici ce que je pense"]}
     return messageToSend
示例#9
0
 def continueQuestion(self):
     senderId = self.senderId
     self.newLocation = getInDB(senderId, "response")
     if self.acceptNewLocation():
         messageToSend = self.setNewLocationInDb()
     else:
         messageToSend = "Ah, ok. Donc on ne change pas"
     setInDB(senderId, {"response": None})
     return messageToSend
 def test_getResponse_whenNotChangingFavorite(self):
     setInDB(self.SENDER_ID, {"question": None})
     setInDB(self.SENDER_ID, {"favorite": {"Animal": "Chien"}})
     response = self.functionality.getResponse()
     self.assertEqual(
         "Ok, donc je garde Chien en note pour Animal préféré(e)!",
         response["message"],
     )
     self.assertEqual("text_message", response["type"])
 def test_getResponse_whenNotChangingLocation(self):
     # check default message and type
     setInDB(self.SENDER_ID, {"question": None})
     setInDB(self.SENDER_ID, {"location": "Canada"})
     response = self.functionality.getResponse()
     self.assertEqual(
         "Ok, donc je garde Canada en note comme étant ta localisation préférée!",
         response["message"],
     )
     self.assertEqual("text_message", response["type"])
 def test_getResponse_whenSayingNoChangingLocation(self):
     # check default message and type
     setInDB(
         self.SENDER_ID,
         {"question": "location", "response": "India", "location": "India"},
     )
     response = self.functionality.getResponse()
     self.assertEqual("Ah, ok. Donc on ne change pas", response["message"])
     self.assertEqual("text_message", response["type"])
     setInDB(self.SENDER_ID, {"location": "Canada"})
示例#13
0
 def getGreetingsResponse(self):
     value = self.categories["greetings"]
     if value == "wazza":
         messageToSend = "wazzaa \n wazzaaaa"
     else:
         messageToSend = random.choice([
             value, "Yo!", "Salut!", "Hey! "
         ]) + random.choice([" ça va?", " comment tu vas?", " what's up?"])
         setInDB(self.senderId, {"question2": "howAreYou2"})
     return messageToSend
示例#14
0
 def test_TicTacToeResponse(self):
     categories = {"response": "oui"}
     functionality = GameFunctionality(self.SENDER_ID, self.bot, categories,
                                       self.payload)
     deleteFromDB(self.SENDER_ID)
     setInDB(self.SENDER_ID, {"game": "ticTacToe"})
     response = functionality.getResponse()
     self.assertEqual("text_message", response["type"])
     self.assertIsInstance(response["message"], str)
     self.assertIsNotNone(getInDB(self.SENDER_ID, "grid"))
示例#15
0
    def test_TicTacToeGameStarted(self):
        deleteFromDB(self.SENDER_ID)
        setInDB(
            self.SENDER_ID,
            {"grid": [["0", "1", "2"], ["3", "4", "5"], ["6", "7", "8"]]},
        )
        response = self.functionality.continuePlayingTicTacToe()
        self.assertIsInstance(response, str)

        setInDB(self.SENDER_ID, {"grid": None})
示例#16
0
 def askToChangeLocation(self):
     newLocation = self.newLocation
     senderId = self.senderId
     oldLocation = getInDB(senderId, "location")
     if not oldLocation:
         oldLocation = "inconnue"
     messageToSend = (
         "Ton endroit préféré jusqu'à maintenant était {0}"
         ", est-ce que tu veux le changer?".format(oldLocation))
     setInDB(senderId, {"question": "location", "response": newLocation})
     return messageToSend
 def test_getMessageToSendIfQuestion(self):
     setInDB(self.SENDER_ID, {"question": "howAreYou"})
     messageToSend = self.functionality.getMessageToSend()
     self.assertFalse(getInDB(self.SENDER_ID, "question"))
     self.assertIn(
         messageToSend,
         [
             "Tant mieux!",
             "Et ben. Ça va bien aller" + emojis.RAINBOW + ", comme on dit",
             "Tout va bien alors " + emojis.HAPPY_FACE + "!",
         ],
     )
示例#18
0
 def getMessageToSend(self):
     categories = self.categories
     senderId = self.senderId
     question = []
     if getInDB(senderId, "question"):
         question = getInDB(senderId, "question")
     setInDB(senderId, {"question": None})
     if "location" in question:
         messageToSend = self.continueQuestion()
     else:
         self.newLocation = str(categories["location"])
         if getInDB(senderId, "location") != self.newLocation:
             messageToSend = self.askToChangeLocation()
         else:
             messageToSend = self.setNewLocationInDb()
     return messageToSend
示例#19
0
 def nextLyrics(self):
     lyricFromUser = self.categories.get("rickSong")
     nextLyrics = "We're no strangers to love"
     lyricIndice = 0
     if getInDB(self.senderId, "rickPartLastLyrics"):
         if int(getInDB(self.senderId, "rickPartLastLyrics") +
                2) < len(neverGonnaGiveYouUp):
             nextLyrics = neverGonnaGiveYouUp[int(
                 getInDB(self.senderId, "rickPartLastLyrics") + 2)]
             lyricIndice = getInDB(self.senderId, "rickPartLastLyrics")
     for i in range(lyricIndice, len(neverGonnaGiveYouUp)):
         if neverGonnaGiveYouUp[i] == lyricFromUser:
             nextLyrics = neverGonnaGiveYouUp[i + 1]
             setInDB(self.senderId, {"rickPartLastLyrics": i + 1})
             break
     return nextLyrics
 def test_getResponse_whenAskingFavorite(self):
     categories = {"favoriteType": "Animal"}
     functionality = FavoriteThingFunctionality(self.SENDER_ID, self.bot,
                                                categories)
     setInDB(
         self.SENDER_ID,
         {"favorite": {
             "Animal": "chien"
         }},
     )
     response = functionality.getResponse()
     self.assertEqual(
         "Hmmm...si je me souviens bien...Animal préféré(e) pour l'instant est chien! Est-ce que tu veux changer?",
         response["message"],
     )
     self.assertEqual("text_message", response["type"])
示例#21
0
 def setNewFavoriteInDb(self):
     newFavorite = self.newFavorite
     newFavoriteType = self.newFavoriteType
     senderId = self.senderId
     setInDB(
         senderId,
         {
             "favorite": {self.newFavoriteType: newFavorite},
             "response": None,
             "question": None,
             "type": None,
         },
     )
     return "Ok, donc je garde {0} en note pour {1} préféré(e)!".format(
         newFavorite, newFavoriteType
     )
示例#22
0
 def setNewsRecurrence(self):
     if "frequence" in self.categories:
         frequence = self.categories.get("frequence")
         if "jour" in frequence:
             setInDB(self.senderId, {"newsRecurrence": "jour"})
             messageToSend = "C'est noté! Toutefois, cette fonction ne marche pas présentement, dsl"
             setInDB(self.senderId, {"question": None})
         elif "semaine" in frequence:
             setInDB(self.senderId, {"newsRecurrence": "semaine"})
             messageToSend = "C'est noté! Toutefois, cette fonction ne marche pas présentement, dsl"
             setInDB(self.senderId, {"question": None})
         else:
             messageToSend = "Je ne sais pas trop quelle est cette fréquence, désolé"
     else:
         messageToSend = "D'accord, tu me demanderas des nouvelles quand tu en veux!"
         setInDB(self.senderId, {"newsRecurrence": None})
     return {"message": messageToSend, "type": "text_message"}
 def test_getResponse_whenChangingFavorite(self):
     categories = {"response": "oui"}
     functionality = FavoriteThingFunctionality(self.SENDER_ID, self.bot,
                                                categories)
     setInDB(
         self.SENDER_ID,
         {
             "question": "favorite",
             "type": "Animal",
             "response": "Chat"
         },
     )
     response = functionality.getResponse()
     self.assertEqual(
         "Ok, donc je garde Chat en note pour Animal préféré(e)!",
         response["message"],
     )
     self.assertEqual("text_message", response["type"])
示例#24
0
 def test_getMessageResponse_FavoriteFollowUp(self):
     deleteFromDB(self.SENDER_ID)
     self.utilities.resetValues()
     setInDB(
         self.SENDER_ID,
         {
             "question": "favorite",
             "type": "animal",
             "response": "chien"
         },
     )
     self.utilities.witCategories = {"response": "oui"}
     response = self.utilities.getMessageResponse()
     self.assertEqual("text_message", response["type"])
     self.assertEqual(
         "Ok, donc je garde chien en note pour animal préféré(e)!",
         response["message"],
     )
示例#25
0
 def getTicTacToeMove(self, grid):
     try:
         move = "0"
         if self.payload:
             move = str(self.payload)
         else:
             if self.categories["number"]:
                 move = int(self.categories["number"])
                 if move not in range(9) or move == 0:
                     move = "0"
         return str(move)
     except Exception as err:
         if self.categories.get("stop"):
             setInDB(self.senderId, {
                 "state": None,
                 "play": False,
                 "game": None
             })
             raise TypeError("Ok, On arrête pour l'instant")
         else:
             raise TypeError("Mais ce n'est pas un numéro ça!")
示例#26
0
 def getMessageToSend(self):
     categories = self.categories
     senderId = self.senderId
     question = []
     if getInDB(senderId, "question"):
         question = getInDB(senderId, "question")
     setInDB(senderId, {"question": None})
     if "favorite" in question:
         messageToSend = self.continueQuestion()
     else:
         self.newFavorite = str(categories.get("favorite"))
         self.newFavoriteType = str(categories.get("favoriteType"))
         if (type(getInDB(senderId, "favorite")) == dict) and (
             getInDB(senderId, "favorite").get(self.newFavoriteType)
             != self.newFavorite
         ):
             messageToSend = self.askToChangeFavorite()
         elif "favorite" in categories and "favoriteType" in categories:
             messageToSend = self.setNewFavoriteInDb()
         else:
             messageToSend = self.continueQuestion()
     return messageToSend
示例#27
0
 def askToChangeFavorite(self):
     newFavorite = self.newFavorite
     newFavoriteType = self.newFavoriteType
     senderId = self.senderId
     if (type(getInDB(senderId, "favorite")) == dict) and (
         getInDB(senderId, "favorite").get(self.newFavoriteType)
     ):
         oldFavorite = getInDB(senderId, "favorite").get(self.newFavoriteType)
     else:
         oldFavorite = "inconnue"
     messageToSend = str(
         "Hmmm...si je me souviens bien...{0} préféré(e) pour l'instant est {1}! "
         "Est-ce que tu veux changer?"
     ).format(newFavoriteType, oldFavorite)
     if newFavorite:
         setInDB(
             senderId,
             {
                 "question": "favorite",
                 "type": newFavoriteType,
                 "response": newFavorite,
             },
         )
     return messageToSend
 def test_getResponse_whenNewLocation(self):
     # check default message and type
     setInDB(self.SENDER_ID, {"question": None})
     setInDB(self.SENDER_ID, {"location": "India"})
     response = self.functionality.getResponse()
     self.assertEqual(
         "Ton endroit préféré jusqu'à maintenant était India, est-ce que tu veux le changer?",
         response["message"],
     )
     self.assertEqual("text_message", response["type"])
     setInDB(self.SENDER_ID, {"location": "Canada"})
示例#29
0
 def test_givenKeyAndValue_findAllInDB(self):
     """
     tests setInDB, deleteFromDB and getInDB
     """
     setInDB(0, {"potatoe": "Joe"})
     setInDB(1, {"potatoe": "meh"})
     setInDB(2, {"potatoe": None})
     peopleFound = findAllInDB("potatoe", "meh")
     self.assertEqual(1, (peopleFound[0]).get("_id"))
     deleteFromDB(0)
     deleteFromDB(1)
     deleteFromDB(2)
示例#30
0
 def test_getResponseRecurrence(self):
     deleteFromDB(self.SENDER_ID)
     response = self.functionality.getResponse()
     self.assertEqual("generic_message", response["type"])
     self.assertTrue(len(response["message"]) != 0)
     setInDB(self.SENDER_ID, {"newsRecurrence": None})