def test_create_event_invalid_input(self):
        """Test sending invalid input to the create event view function."""
        EventType.insert_event_types()
        EventCategory.insert_event_categories()
        role = Role.query.filter_by(name="Event Organizer").first()
        user = TestModelFactory.create_user(password="******")
        user.role = role
        db.session.add(user)
        db.session.commit()

        # Should be redirected if not logged in
        response = self.client.get("/events/create", follow_redirects=True)
        self.assertTrue(response.status_code, 200)
        self.assertTrue(
            "Please log in to access this page" in response.get_data(
                as_text=True))

        with self.client:
            # log the user in
            response = self.client.post(
                "/auth/login",
                data={
                    "email": user.email,
                    "password": "******"
                },
                follow_redirects=True,
            )

            for data in ViewFunctionTestData.INVALID_EVENT_DATA:
                with self.subTest(data=data):
                    response = self.client.post(
                        "/events/create",
                        data={
                            "title": data["title"],
                            "event_type": data["event_type"],
                            "category": data["category"],
                            "venue_name": data["venue_name"],
                            "address": data["address"],
                            "city": data["city"],
                            "state": data["state"],
                            "zip_code": data["zip_code"],
                            "start_date": data["start_date"],
                            "end_date": data["end_date"],
                            "start_time": data["start_time"],
                            "end_time": data["end_time"],
                        },
                        follow_redirects=True,
                    )
                    self.assertTrue(data["error_message"] in response.get_data(
                        as_text=True))
        self.assertIsNone(user.events.first())
Exemple #2
0
def deploy(fake_data):
    """Run the below set of tasks before deployment."""
    # migrate database to latest revision
    upgrade()

    # create or update roles, event types, categories, and image types
    Role.insert_roles()
    EventType.insert_event_types()
    EventCategory.insert_event_categories()
    ImageType.insert_image_types()

    es_client = ElasticsearchClient(app.config["ELASTICSEARCH_URL"])
    es_client.create_index("events")
    # add fake data to the database if there isn't already fake data in the tables
    if fake_data:
        fake = FakeDataGenerator(48, 48)
        fake.add_all()
Exemple #3
0
def setup_environment(fake_data):
    """Cli command to setup the development environment. Starts up
    Elasticsearch, sets up the database and inserts fake data into
    the database if request.
    """
    app.sqlalchemy_search_middleware._elasticsearch_client.delete_index(
        Event.__tablename__)
    db.drop_all()
    db.create_all()

    # create or update roles, event types, categories, and image types
    Role.insert_roles()
    EventType.insert_event_types()
    EventCategory.insert_event_categories()
    ImageType.insert_image_types()

    # add fake data to the database
    if fake_data:
        fake = FakeDataGenerator(48, 48)
        fake.add_all()
    def test_create_event_valid_input(self):
        """Test sending valid inputs to the create event view function."""
        # create user
        EventType.insert_event_types()
        EventCategory.insert_event_categories()
        role = Role.query.filter_by(name="Event Organizer").first()
        user = TestModelFactory.create_user(password="******")
        user.role = role
        db.session.add(user)
        db.session.commit()

        # Should be redirected if not logged in
        response = self.client.get("/events/create", follow_redirects=True)
        self.assertTrue(response.status_code, 200)
        self.assertTrue(
            "Please log in to access this page" in response.get_data(
                as_text=True))

        with self.client:
            # log the user in
            response = self.client.post(
                "/auth/login",
                data={
                    "email": user.email,
                    "password": "******"
                },
                follow_redirects=True,
            )

            # GET request should be successful
            response = self.client.get("/events/create", follow_redirects=True)
            self.assertTrue(response.status_code, 200)
            self.assertTrue("Basic Info" in response.get_data(as_text=True))
            self.assertTrue("Location" in response.get_data(as_text=True))
            self.assertTrue("Date and Time" in response.get_data(as_text=True))

            # POST request should be successful
            response = self.client.post(
                "/events/create",
                data={
                    "title":
                    ViewFunctionTestData.VALID_EVENT_DATA["title"],
                    "event_type":
                    ViewFunctionTestData.VALID_EVENT_DATA["event_type"],
                    "category":
                    ViewFunctionTestData.VALID_EVENT_DATA["category"],
                    "venue_name":
                    ViewFunctionTestData.VALID_EVENT_DATA["venue_name"],
                    "address":
                    ViewFunctionTestData.VALID_EVENT_DATA["address"],
                    "city":
                    ViewFunctionTestData.VALID_EVENT_DATA["city"],
                    "state":
                    ViewFunctionTestData.VALID_EVENT_DATA["state"],
                    "zip_code":
                    ViewFunctionTestData.VALID_EVENT_DATA["zip_code"],
                    "start_date":
                    ViewFunctionTestData.VALID_EVENT_DATA["start_date"],
                    "end_date":
                    ViewFunctionTestData.VALID_EVENT_DATA["end_date"],
                    "start_time":
                    ViewFunctionTestData.VALID_EVENT_DATA["start_time"],
                    "end_time":
                    ViewFunctionTestData.VALID_EVENT_DATA["end_time"],
                },
                follow_redirects=True,
            )
            self.assertEqual(response.status_code, 200)

            # sidebar text
            self.assertTrue("Basic Info" in response.get_data(as_text=True))
            self.assertTrue("Event Details" in response.get_data(as_text=True))
            self.assertTrue("Demographics" in response.get_data(as_text=True))
            self.assertTrue("Media" in response.get_data(as_text=True))
            self.assertTrue("Packages" in response.get_data(as_text=True))

            # form headers
            self.assertTrue("Main Event Image" in response.get_data(
                as_text=True))
            self.assertTrue("Description & Pitch" in response.get_data(
                as_text=True))

        # check that event was created
        event = Event.query.get(1)
        self.assertIsNotNone(event)
        self.assertEqual(event.title,
                         ViewFunctionTestData.VALID_EVENT_DATA["title"])
        self.assertEqual(event.venue.name,
                         ViewFunctionTestData.VALID_EVENT_DATA["venue_name"])
        self.assertEqual(event.user, user)
        self.assertFalse(event.published
                         )  # published attribute should be defaulted to False