def test_create(self): s = amcattest.create_test_set() # is the set empty? (aka can we get the results) url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) result = self.get(url) self.assertEqual(result['results'], []) body = {'text' : 'bla', 'headline' : 'headline', 'date' : '2013-01-01T00:00:00', 'medium' : 'test_medium'} result = self.post(url, body, as_user=s.project.owner) if isinstance(result, list): result, = result self.assertEqual(result['headline'], body['headline']) result = self.get(url) self.assertEqual(len(result['results']), 1) a = result['results'][0] self.assertEqual(a['headline'], body['headline']) self.assertEqual(a['project'], s.project_id) self.assertEqual(a['length'], 2) # Is the result added to the elastic index as well? from amcat.tools import amcates amcates.ES().flush() r = list(amcates.ES().query(filters=dict(sets=s.id), fields=["text", "headline", 'medium'])) self.assertEqual(len(r), 1) self.assertEqual(r[0].medium, "test_medium") self.assertEqual(r[0].headline, "headline")
def test_parents(self): """Test parents via nesting""" s = amcattest.create_test_set() url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) base = { 'text': 'bla', 'headline': 'headline', 'date': '2013-01-01T00:00:00', 'medium': 'test_medium' } child1 = dict(base, headline='c1') child2 = dict(base, headline='c2') parent = dict(base, headline='parent') body = dict(parent, children=json.dumps([child1, child2])) self.post(url, body, as_user=s.project.owner) amcates.ES().flush() # result should have 3 articles, with c1 and c2 .parent set to parent result = {a['headline']: a for a in self.get(url)['results']} self.assertEqual(len(result), 3) self.assertEqual(result['c1']['parent'], result['parent']['id']) self.assertEqual(result['c2']['parent'], result['parent']['id']) self.assertEqual(result['parent']['parent'], None)
def test_create(self): s = amcattest.create_test_set() # is the set empty? (aka can we get the results) url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) result = self.get(url) self.assertEqual(result['results'], []) body = { 'text': 'bla bla', 'headline': 'headline', 'date': '2013-01-01T00:00:00', 'medium': 'test_medium' } result = self.post(url, body, as_user=s.project.owner) amcates.ES().flush() if isinstance(result, list): result, = result self.assertEqual(result['headline'], body['headline']) result = self.get(url) self.assertEqual(len(result['results']), 1) a = result['results'][0] self.assertEqual(a['headline'], body['headline']) self.assertEqual(a['project'], s.project_id) self.assertEqual(a['length'], 2) # Is the result added to the elastic index as well? amcates.ES().flush() r = list(amcates.ES().query(filters=dict(sets=s.id), fields=["text", "headline", 'medium'])) self.assertEqual(len(r), 1) self.assertEqual(r[0].medium, "test_medium") self.assertEqual(r[0].headline, "headline")
def test_parents_multiple(self): """Can we add multiple objects with children?""" s = amcattest.create_test_set() url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) base = { 'text': 'bla', 'headline': 'headline', 'date': '2013-01-01T00:00:00', 'medium': 'test_medium' } child = dict(base, headline='c') parent = dict(base, headline='p') leaf = dict(base, headline='l') body = json.dumps([leaf, dict(parent, children=[child])]) self.post(url, body, as_user=s.project.owner, request_options=dict(content_type='application/json')) amcates.ES().flush() result = {a['headline']: a for a in self.get(url)['results']} self.assertEqual(len(result), 3) self.assertEqual(result['c']['parent'], result['p']['id']) self.assertEqual(result['p']['parent'], None) self.assertEqual(result['l']['parent'], None)
def test_multiple(self): """Can we create multiple objects?""" s = amcattest.create_test_set() url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) base = {'text' : 'bla', 'headline' : 'headline', 'date' : '2013-01-01T00:00:00', 'medium' : 'test_medium'} a1 = dict(base, headline='a1') a2 = dict(base, headline='a2') body = json.dumps([a1, a2]) self.post(url, body, as_user=s.project.owner, request_options=dict(content_type='application/json')) result = self.get(url) self.assertEqual({r['headline'] for r in result['results']}, {'a1', 'a2'})
def test_parents_multiple(self): """Can we add multiple objects with children?""" s = amcattest.create_test_set() url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) base = {'text' : 'bla', 'headline' : 'headline', 'date' : '2013-01-01T00:00:00', 'medium' : 'test_medium'} child = dict(base, headline='c') parent = dict(base, headline='p') leaf = dict(base, headline='l') body = json.dumps([leaf, dict(parent, children=[child])]) self.post(url, body, as_user=s.project.owner, request_options=dict(content_type='application/json')) result = {a['headline'] : a for a in self.get(url)['results']} self.assertEqual(len(result), 3) self.assertEqual(result['c']['parent'], result['p']['id']) self.assertEqual(result['p']['parent'], None) self.assertEqual(result['l']['parent'], None)
def test_parents(self): """Test parents via nesting""" s = amcattest.create_test_set() url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) base = {'text' : 'bla', 'headline' : 'headline', 'date' : '2013-01-01T00:00:00', 'medium' : 'test_medium'} child1 = dict(base, headline='c1') child2 = dict(base, headline='c2') parent = dict(base, headline='parent') body = dict(parent, children = json.dumps([child1, child2])) self.post(url, body, as_user=s.project.owner) # result should have 3 articles, with c1 and c2 .parent set to parent result = {a['headline'] : a for a in self.get(url)['results']} self.assertEqual(len(result), 3) self.assertEqual(result['c1']['parent'], result['parent']['id']) self.assertEqual(result['c2']['parent'], result['parent']['id']) self.assertEqual(result['parent']['parent'], None)
def test_multiple(self): """Can we create multiple objects?""" s = amcattest.create_test_set() url = ArticleViewSet.get_url(project=s.project.id, articleset=s.id) base = { 'text': 'bla', 'headline': 'headline', 'date': '2013-01-01T00:00:00', 'medium': 'test_medium' } a1 = dict(base, headline='a1') a2 = dict(base, headline='a2') body = json.dumps([a1, a2]) self.post(url, body, as_user=s.project.owner, request_options=dict(content_type='application/json')) amcates.ES().flush() result = self.get(url) self.assertEqual({r['headline'] for r in result['results']}, {'a1', 'a2'})