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") 
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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")
Exemplo n.º 4
0
    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)
Exemplo n.º 8
0
    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'})