def test_InsertTweets(self): #Precondición: deben haber 3 campañas creadas e insertadas en la BD. configTables.BD.metadata.create_all( configTables.engine ) #Se crea la BD (en caso que ya está creada no hace nada) userInputs = '{"email":"*****@*****.**","hashtags": ["#test", "#mock"], "mentions": ["@testCampaign", "@mockOK"], "startDate":"28 11 2018 18:02:00", "endDate":"25 12 2018 19:26:22"}' fields = json.loads( userInputs ) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. #Insertamos 3 campañas en la BD: manager.Manager().insertCampaign(fields) manager.Manager().insertCampaign(fields) id3erCampaign = manager.Manager().insertCampaign(fields) #Ejemplo de los lista de diccionario de tweets en formato JSON que el Fetcher le manda a Manager (tweetsJson). self.tweet1 = { "id_str": "12366", "user": { "name": "NASAOk", "id_str": "789456" }, "entities": { "hashtags": ["#mars", "#venus", "#earth"], "user_mentions": ["@NASA", "@planets"] }, "created_at": "Sun Mar 20 15:11:01 +0000 2018" } self.tweet2 = { "id_str": "12477", "user": { "name": "MiauricioOK", "id_str": "451325" }, "entities": { "hashtags": ["#DonaldNoMeDejes"], "user_mentions": ["@donaldTrump", "@G20"] }, "created_at": "Sun Mar 20 21:08:01 +0000 2018" } tweetsJson = [json.dumps(self.tweet1), json.dumps(self.tweet2)] #Insertamos 2 tweets en la 3er campaign. manager.Manager().insertTweets(tweetsJson, id3erCampaign) #Obtengo el 2do Tweet: tweetRetornado = Connector.returnTweetByIDT("12477") #Asserto los datos del 2do Tweet: print(tweetRetornado.ID) self.assertEqual(tweetRetornado.ID, "12477") self.assertEqual(tweetRetornado.userName, "MiauricioOK") self.assertEqual(tweetRetornado.userid, "451325") self.assertEqual(tweetRetornado.hashtags, "#DonaldNoMeDejes") self.assertEqual(tweetRetornado.mentions, "@donaldTrump-@G20") self.assertEqual(tweetRetornado.date, "Sun Mar 20 21:08:01 +0000 2018")
def test_ModifyCampaign(self): #Precondicion: tener 2 campaigns en la BD. userInputs = '{"email":"*****@*****.**","hashtags": ["#test", "#mock"], "mentions": ["@testCampaign", "@mockOK"], "startDate":"18 12 2018 18:02:00", "endDate":"02 12 2018 19:26:22"}' fields = json.loads( userInputs ) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. #Creamos e insertamos 2 campaign: manager.Manager().insertCampaign(fields) id2daCampaign = manager.Manager().insertCampaign(fields) #Datos que ingresara el usuario (además de la id2daCampaign): columna = "email" inputUser = "******" manager.Manager().modifyCampaign(id2daCampaign, columna, inputUser) campaignRetornada = Connector.retornarCampaignBD(id2daCampaign) #Si imprimo (campaignRetornada.startDate) me imprime: 2018-11-28 18:02:00. #Pero si lo retorno es este tipo de dato--> datetime.datetime(2018, 11, 28, 18, 2) self.assertEqual(campaignRetornada.emailDueño, "*****@*****.**")
def test_reportRawData(self): #Precondicion: necesitamos una campaña con tweets asociados: campaign = '{"email":"*****@*****.**","hashtags": ["#test", "#mock"], "mentions": ["@testCampaign", "@mockOK"], "startDate":"28 11 2018 18:02:00", "endDate":"25 12 2018 19:26:22"}' fields = json.loads(campaign) manager.Manager().insertCampaign(fields) manager.Manager().insertCampaign(fields) manager.Manager().insertCampaign(fields) #Inicializamos los Tweets diccionarios: tweet1 = { "id_str": "123456", "user": { "name": "NASAOk", "id_str": "789456" }, "entities": { "hashtags": ["#mars", "#venus", "#earth"], "user_mentions": ["@NASA", "@planets"] }, "created_at": "Sun Mar 20 15:11:01 +0000 2018", } tweet2 = { "id_str": "112112", "user": { "name": "MauricioOK", "id_str": "451325" }, "entities": { "hashtags": ["#DonaldNoMeDejes"], "user_mentions": ["@donaldTrump", "@G20"] }, "created_at": "Sun Mar 20 21:08:01 +0000 2018", } #Para pasarlos a un objeto Tweet: T1=Tweet(tweet1) #Para pasar estos objetos Tweet a Json usando el metodo to_json del objeto Tweet: t1=T1.to_json() tweetsJson = json.dumps([tweet1, tweet2]) #Insertamos los tweets en la Campaign 3 manager.Manager().insertTweets(tweetsJson, 3) raw_data = Reporter.Reporter().reportRawData(3) print(raw_data)
def test_InsertCampaign(self): #Entrada de ejemplo, lo que el usuario ingresa en la Interfaz Web en Alta Campaña (en formato JSON llegaria): userInputs = '{"email":"*****@*****.**","hashtags": ["#test", "#mock"], "mentions": ["@testCampaign", "@mockOK"], "startDate":"28 11 2018 18:02:00", "endDate":"25 12 2018 19:26:22"}' fields = json.loads( userInputs ) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. idCampaign = manager.Manager().insertCampaign(fields) campaignRetornada = Connector.retornarCampaignBD(idCampaign) #Asserto todos los atributos del objeto Campaign: self.assertEqual(campaignRetornada.emailDueño, "*****@*****.**") self.assertEqual(campaignRetornada.hashtags, "#test-#mock") self.assertEqual(campaignRetornada.mentions, "@testCampaign-@mockOK") self.assertEqual(campaignRetornada.startDate, datetime(2018, 11, 28, 18, 2)) self.assertEqual(campaignRetornada.finDate, datetime(2018, 12, 25, 19, 26, 22))
def test_ReturnCampaignsInProgress(self): manager.Manager().returnCampaignsInProgress()
def test_DeleteCampaignPorUser(self): email = "*****@*****.**" manager.Manager().deleteCampaignporuser(email)
#Script para insertar Campaigns y Tweets de prueba: import json from Manager import manager from DataBaseConnector import configTables #Insercion de 10 Campaigns: userCampaignInput1= '{"email":"*****@*****.**","hashtags": ["#noBorrrar", "#412"], "mentions": ["@fedecalongeOK", "@mauriciomacriOKkk"], "startDate":"16 12 2018 18:22:00", "endDate":"10 01 2019 18:22:00"}' campaignFields1 = json.loads(userCampaignInput1) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. manager.Manager().insertCampaign(campaignFields1) userCampaignInput2= '{"email":"*****@*****.**","hashtags": ["#tieneTw", "#noBorrarNada", "#412"], "mentions": ["@fedecalongeOK", "@mauriciomacriOKkk"], "startDate":"22 12 2018 18:22:00", "endDate":"10 01 2019 18:22:00"}' campaignFields2 = json.loads(userCampaignInput2) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. manager.Manager().insertCampaign(campaignFields2) userCampaignInput3= '{"email":"*****@*****.**","hashtags": ["#tieneTw", "#borrarTodo", "#200"], "mentions": ["@fedecalongeOK", "@mauriciomacriOKkk"], "startDate":"16 12 2018 18:22:00", "endDate":"28 12 2018 18:22:00"}' campaignFields3 = json.loads(userCampaignInput3) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. manager.Manager().insertCampaign(campaignFields3) userCampaignInput4= '{"email":"*****@*****.**","hashtags": ["#borrar", "#200"], "mentions": ["@fedecalongeOK", "@mauriciomacriOKkk"], "startDate":"10 01 2019 18:22:00", "endDate":"20 01 2019 18:22:00"}' campaignFields4 = json.loads(userCampaignInput4) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. manager.Manager().insertCampaign(campaignFields4) userCampaignInput5= '{"email":"*****@*****.**","hashtags": ["#borrar", "#200"], "mentions": ["@fedecalongeOK", "@mauriciomacriOKkk"], "startDate":"24 12 2018 18:22:00", "endDate":"25 12 2018 18:22:00"}' campaignFields5 = json.loads(userCampaignInput5) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. manager.Manager().insertCampaign(campaignFields5) userCampaignInput6= '{"email":"*****@*****.**","hashtags": ["#tieneTw", "#borrarTodo", "#200"], "mentions": ["@fedecalongeOK", "@mauriciomacriOKkk"], "startDate":"10 01 2019 18:22:00", "endDate":"20 01 2019 18:22:00"}' campaignFields6 = json.loads(userCampaignInput6) #Pasa de json a diccionario, esto lo hace flask por eso no hace falta hacerlo en el insertCampaign() del manager. manager.Manager().insertCampaign(campaignFields6) userCampaignInput7= '{"email":"*****@*****.**","hashtags": ["#tieneTw", "#noBorrarNada", "#412"], "mentions": ["@fedecalongeOK", "@mauriciomacriOKkk"], "startDate":"22 12 2018 18:22:00", "endDate":"10 01 2019 18:22:00"}'
def test_deleteCampaignporuser(self): email = "*****@*****.**" manager.Manager().deleteCampaignporuser(email)