def test_current_stories(self): ''' Test that only the two most recent stories are being returned ''' organization = OrganizationFactory(name='Collective of Ericas') db.session.flush() StoryFactory(organization_name='Collective of Ericas', title='First Story') StoryFactory(organization_name='Collective of Ericas', title='Second Story') db.session.flush() response = self.app.get('/api/organizations/Collective%20of%20Ericas') response_json = json.loads(response.data) self.assertEqual(response_json['current_stories'][0]['title'], 'First Story') self.assertEqual(response_json['current_stories'][1]['title'], 'Second Story')
def test_cascading_delete(self): ''' Test that when an organization is deleted, all of it's projects, issues, stories, events are deleted ''' # Create an organization organization = OrganizationFactory() db.session.flush() # Create a project, an event and a story project = ProjectFactory(organization_name=organization.name) EventFactory(organization_name=organization.name) StoryFactory(organization_name=organization.name) db.session.flush() # Create an issue and give it a label issue = IssueFactory(project_id=project.id) db.session.flush() label = LabelFactory() issue.labels = [label] db.session.flush() # Get all of the stuff orgs = Organization.query.all() eve = Event.query.all() sto = Story.query.all() proj = Project.query.all() iss = Issue.query.all() lab = Label.query.all() # Verify they are there self.assertEqual(len(orgs), 1) self.assertEqual(len(eve), 1) self.assertEqual(len(sto), 1) self.assertEqual(len(proj), 1) self.assertEqual(len(iss), 1) self.assertEqual(len(lab), 1) # Delete the one organization db.session.delete(orgs[0]) db.session.commit() # Get all the stuff again orgs = Organization.query.all() eve = Event.query.all() sto = Story.query.all() proj = Project.query.all() iss = Issue.query.all() lab = Label.query.all() # Make sure they are all gone self.assertEqual(len(orgs), 0) self.assertEqual(len(eve), 0) self.assertEqual(len(sto), 0) self.assertEqual(len(proj), 0) self.assertEqual(len(iss), 0) self.assertEqual(len(lab), 0)
def test_orgs_stories(self): organization = OrganizationFactory(name="Code for America") story = StoryFactory(organization_name="Code for America") db.session.flush() response = self.app.get('/api/organizations/Code for America/stories') self.assertEqual(response.status_code, 200) response = json.loads(response.data) assert isinstance(response, dict)
def test_story_query_filter(self): org = OrganizationFactory(type="Brigade") another_org = OrganizationFactory(type="Code for All") awesome_story = StoryFactory(title="Awesome story") sad_story = StoryFactory(title="Sad story", type="a video") awesome_story.organization = org sad_story.organization = another_org db.session.commit() # Make sure total number of stories is 2 response = self.app.get('/api/stories') response = json.loads(response.data) self.assertEqual(response['total'], 2) # Filter by title should return only 1 response = self.app.get('/api/stories?title=awesome') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response['total'], 1) self.assertEqual(response['objects'][0]['title'], "Awesome story") # Filter by type should return only 1 response = self.app.get('/api/stories?type=video') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response['total'], 1) self.assertEqual(response['objects'][0]['title'], "Sad story") # Filter by deep searching organization type should return 1 response = self.app.get('/api/stories?organization_type=brigade') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response['total'], 1) self.assertEqual(response['objects'][0]['title'], "Awesome story")
def test_stories(self): StoryFactory() db.session.flush() response = self.app.get('/api/stories') response = json.loads(response.data) assert isinstance(response, dict) assert isinstance(response['pages'], dict) assert isinstance(response['total'], int) assert isinstance(response['objects'], list) assert isinstance(response['objects'][0]['id'], int) assert isinstance(response['objects'][0]['link'], unicode) assert isinstance(response['objects'][0]['organization'], dict) assert isinstance(response['objects'][0]['organization_name'], unicode) assert isinstance(response['objects'][0]['title'], unicode) assert isinstance(response['objects'][0]['type'], unicode)
def test_underscores_and_spaces(self): organization = OrganizationFactory(name="Code for America") db.session.add(organization) db.session.commit() response = self.app.get('/api/organizations/Code for America') self.assertEqual(response.status_code, 200) response = json.loads(response.data) scheme, netloc, path, _, _, _ = urlparse(response["all_events"]) self.assertTrue("-" in path) self.assertFalse("_" in path) self.assertFalse(" " in path) scheme, netloc, path, _, _, _ = urlparse(response["all_stories"]) self.assertTrue("-" in path) self.assertFalse("_" in path) self.assertFalse(" " in path) scheme, netloc, path, _, _, _ = urlparse(response["all_projects"]) self.assertTrue("-" in path) self.assertFalse("_" in path) self.assertFalse(" " in path) response = self.app.get('/api/organizations/Code-for-America') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["name"], "Code for America") response = self.app.get('/api/organizations/Code_for_America') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["name"], "Code for America") project = ProjectFactory(organization_name="Code for America") db.session.add(project) db.session.commit() response = self.app.get('/api/organizations/Code_for_America/projects') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["objects"][0]["organization_name"], "Code for America") response = self.app.get('/api/organizations/Code_for_America/projects') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["objects"][0]["organization_name"], "Code for America") event = EventFactory(organization_name="Code for America") db.session.add(event) db.session.commit() response = self.app.get('/api/organizations/Code for America/events') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["objects"][0]["organization_name"], "Code for America") response = self.app.get('/api/organizations/Code_for_America/events') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["objects"][0]["organization_name"], "Code for America") story = StoryFactory(organization_name="Code for America") db.session.add(story) db.session.commit() response = self.app.get('/api/organizations/Code for America/stories') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["objects"][0]["organization_name"], "Code for America") response = self.app.get('/api/organizations/Code_for_America/stories') self.assertEqual(response.status_code, 200) response = json.loads(response.data) self.assertEqual(response["objects"][0]["organization_name"], "Code for America")