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())
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()
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