Beispiel #1
0
    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")
Beispiel #2
0
    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, "*****@*****.**")
Beispiel #3
0
    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))
Beispiel #5
0
 def test_ReturnCampaignsInProgress(self):
     manager.Manager().returnCampaignsInProgress()
Beispiel #6
0
 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)