def setUp(self):
     a = canyonero.App()
     self.target = a.app.test_client()
     self.baseUrl = a.absoluteUrl('/nameset/')
     self.url = self.baseUrl + 'XTfIPZmASrK89OeK9phOhQ'
     self.urlBadNameSet = self.baseUrl + 'fail'
     self.dataContext = DataContext()
     self.dataContext.beginTransaction()
 def setUp(self):
     a = canyonero.App()
     self.target = a.app.test_client()
     urlFormat = '/nameset/{0}/ignore'
     self.url = a.absoluteUrl(urlFormat.format(ID1))
     self.urlBadNameSet = a.absoluteUrl(urlFormat.format('failure'))
     self.dataContext = DataContext()
     self.dataContext.beginTransaction()
class TestNameSetIgnore(unittest.TestCase):
    def setUp(self):
        a = canyonero.App()
        self.target = a.app.test_client()
        urlFormat = '/nameset/{0}/ignore'
        self.url = a.absoluteUrl(urlFormat.format(ID1))
        self.urlBadNameSet = a.absoluteUrl(urlFormat.format('failure'))
        self.dataContext = DataContext()
        self.dataContext.beginTransaction()

    def tearDown(self):
        self.dataContext.rollBack()

    # -------------------------------------------------------------------------
    # Tests
    # -------------------------------------------------------------------------

    def test_get(self):
        rv = self.target.get(self.url)
        self.assertEqual(200, rv.status_code)

        ignore = json.loads(rv.data.decode('utf-8'))
        self.assertEqual(31, len(ignore))

    def test_get_bad(self):
        rv = self.target.get(self.urlBadNameSet)
        self.assertEqual(404, rv.status_code)

    def test_put_with_calc(self):
        rv = self.target.get(self.url)
        rv = self.target.put(self.url + '?recalculate=0', data=rv.data, 
                              content_type='application/json')
        self.assertEqual(204, rv.status_code)

        ns = self.dataContext[ID1]
        self.assertEqual(873, len(ns.clusters))

    def test_put_without_calc(self):
        rv = self.target.put(self.url, data=json.dumps(['.', '!']), 
                              content_type='application/json')
        self.assertEqual(205, rv.status_code)

        ns = self.dataContext[ID1]
        self.assertEqual(807, len(ns.clusters))

    def test_put_bad_nameset(self):
        rv = self.target.put(self.urlBadNameSet, data={'a': '1'})
        self.assertEqual(404, rv.status_code)

    def test_put_bad_format(self):
        rv = self.target.put(self.url, data=json.dumps({'a': '1'}))
        self.assertEqual(400, rv.status_code)

    def test_delete_without_calc(self):
        rv = self.target.delete(self.url)
        self.assertEqual(205, rv.status_code)

        ns = self.dataContext[ID1]
        self.assertEqual(807, len(ns.clusters))

    def test_delete_with_calc(self):
        rv = self.target.delete(self.url + '?recalculate=0')
        self.assertEqual(204, rv.status_code)

        ns = self.dataContext[ID1]
        self.assertEqual(1092, len(ns.clusters))

    def test_delete_bad(self):
        rv = self.target.delete(self.urlBadNameSet)
        self.assertEqual(404, rv.status_code)

    def test_post(self):
        rv = self.target.post(self.url, data={'a': '1'})
        self.assertEqual(405, rv.status_code)
Example #4
0
 def setUp(self):
     a = canyonero.App()
     self.target = a.app.test_client()
     self.url = a.absoluteUrl('/nameset')
     self.dataContext = DataContext()
     self.dataContext.beginTransaction()
Example #5
0
class TestNameSetIndex(unittest.TestCase):
    def setUp(self):
        a = canyonero.App()
        self.target = a.app.test_client()
        self.url = a.absoluteUrl('/nameset')
        self.dataContext = DataContext()
        self.dataContext.beginTransaction()

    def tearDown(self):
        self.dataContext.rollBack()

    def names(self):
        return ['Echo & The Bunnymen',
                'Echo & The Bunnyman',
                'Echo and the Bunnymen',
                'Echo + the Bunnymen',
                'Kool and the Gang'
               ]

    # -------------------------------------------------------------------------
    # Tests
    # -------------------------------------------------------------------------

    def test_get(self):
        rv = self.target.get(self.url)
        self.assertEqual(200, rv.status_code)

        result = json.loads(rv.data.decode('utf-8'))
        self.assertEqual(1, len(result))
        self.assertIn('link', result[0])
        self.assertIn('href', result[0]['link'])
        self.assertIn(ID1, result[0]['link']['href'])

    def test_delete(self):
        rv = self.target.delete(self.url)
        self.assertEqual(405, rv.status_code)

    def test_put(self):
        rv = self.target.put(self.url, data={'a': '1'})
        self.assertEqual(405, rv.status_code)

    def test_post_list(self):
        data = json.dumps(self.names())
        rv = self.target.post(self.url, data=data, 
                              content_type='application/json')

        self.assertEqual(201, rv.status_code)
        result = json.loads(rv.data.decode('utf-8'))
        self.assertIn('link', result)
        self.assertIn('href', result['link'])
        self.assertIn('id', result)

        entry = self.dataContext[result['id']]
        self.assertEqual(2, len(entry.clusters))

    def test_post_name_set(self):
        ns = NameSet('Bands', self.names())
        data = json.dumps(ns, cls=ModelEncoder)

        rv = self.target.post(self.url, data=data, 
                              content_type='application/json')

        self.assertEqual(201, rv.status_code)
        result = json.loads(rv.data.decode('utf-8'))
        self.assertIn('link', result)
        self.assertIn('href', result['link'])
        self.assertIn('id', result)

        entry = self.dataContext[result['id']]
        self.assertEqual(2, len(entry.clusters))

    def test_post_bad(self):
        rv = self.target.post(self.url, data={'a': '1'})
        self.assertEqual(400, rv.status_code)
class TestNameClusterIndex(unittest.TestCase):
    def setUp(self):
        a = canyonero.App()
        self.target = a.app.test_client()
        urlFormat = '/nameset/{0}/cluster'
        self.url = a.absoluteUrl(urlFormat.format(ID1))
        self.urlBadNameSet = a.absoluteUrl(urlFormat.format('failure'))
        self.dataContext = DataContext()
        self.dataContext.beginTransaction()

    def tearDown(self):
        self.dataContext.rollBack()

    # -------------------------------------------------------------------------
    # Tests
    # -------------------------------------------------------------------------

    def test_get_all(self):
        rv = self.target.get(self.url + '?all')
        self.assertEqual(200, rv.status_code)

        result = json.loads(rv.data.decode('utf-8'))
        self.assertEqual(807, len(result))
        self.assertIn('link', result[0])
        self.assertIn('href', result[0]['link'])

    def test_get_ambiguous(self):
        rv = self.target.get(self.url)
        self.assertEqual(200, rv.status_code)

        result = json.loads(rv.data.decode('utf-8'))
        self.assertEqual(253, len(result))
        self.assertIn('link', result[0])
        self.assertIn('href', result[0]['link'])

    def test_get_bad_name(self):
        rv = self.target.get(self.urlBadNameSet)
        self.assertEqual(404, rv.status_code)

    def test_delete(self):
        rv = self.target.delete(self.url)
        self.assertEqual(405, rv.status_code)

    def test_put(self):
        rv = self.target.put(self.url, data={'a': '1'})
        self.assertEqual(405, rv.status_code)

    def test_post(self):
        data = json.dumps('El Em*En.Oh-Pee!')
        rv = self.target.post(self.url, data=data, 
                              content_type='application/json')

        self.assertEqual(201, rv.status_code)
        result = json.loads(rv.data.decode('utf-8'))
        self.assertIn('link', result)
        self.assertIn('href', result['link'])
        self.assertIn('elemenohpee', result['link']['href'])
        self.assertIn('key', result)

        ns = self.dataContext[ID1]
        self.assertEqual(808, len(ns.clusters))
        self.assertEqual(1255, len(ns.names))

        entry = ns.clusters[result['key']]
        self.assertEqual('El Em*En.Oh-Pee!', entry.canon)
        self.assertEqual(False, entry.validated)
        self.assertEqual(1, len(entry.variations))

    def test_post_duplicate(self):
        data = json.dumps('Prasco Laboratories')
        rv = self.target.post(self.url, data=data, 
                              content_type='application/json')

        self.assertEqual(409, rv.status_code)

    def test_post_bad_name(self):
        rv = self.target.post(self.urlBadNameSet, data={'a': '1'})
        self.assertEqual(404, rv.status_code)
class TestNameSetDetail(unittest.TestCase):
    def setUp(self):
        a = canyonero.App()
        self.target = a.app.test_client()
        self.baseUrl = a.absoluteUrl('/nameset/')
        self.url = self.baseUrl + 'XTfIPZmASrK89OeK9phOhQ'
        self.urlBadNameSet = self.baseUrl + 'fail'
        self.dataContext = DataContext()
        self.dataContext.beginTransaction()

    def tearDown(self):
        self.dataContext.rollBack()

    # -------------------------------------------------------------------------
    # Test Helpers
    # -------------------------------------------------------------------------

    def toNameSet(self, rv):
        return ModelEncoder.decodeNameSet(rv.data.decode('utf-8'))

    # -------------------------------------------------------------------------
    # Tests
    # -------------------------------------------------------------------------

    def test_get(self):
        rv = self.target.get(self.url)
        self.assertEqual(200, rv.status_code)

        ns = self.toNameSet(rv)
        self.assertEqual('Manufacturers', ns.title)
        self.assertEqual(1254, len(ns.names))
        self.assertEqual(807, len(ns.clusters))
        self.assertEqual(31, len(ns.ignore))
        self.assertEqual(4, len(ns.abbrev))

    def test_get_bad(self):
        rv = self.target.get(self.urlBadNameSet)
        self.assertEqual(404, rv.status_code)

    def test_get_recalculate(self):
        rv = self.target.get(self.url + '?recalculate=0')
        self.assertEqual(200, rv.status_code)

        ns = self.toNameSet(rv)
        self.assertEqual('Manufacturers', ns.title)
        self.assertEqual(1254, len(ns.names))
        self.assertEqual(873, len(ns.clusters))
        self.assertEqual(31, len(ns.ignore))
        self.assertEqual(4, len(ns.abbrev))

    def test_delete(self):
        rv = self.target.delete(self.url)
        self.assertEqual(204, rv.status_code)
        self.assertEqual(0, len(self.dataContext))

    def test_delete_bad(self):
        rv = self.target.delete(self.urlBadNameSet)
        self.assertEqual(404, rv.status_code)
        self.assertEqual(1, len(self.dataContext))

    def test_post(self):
        rv = self.target.post(self.url, data={'a': '1'})
        self.assertEqual(405, rv.status_code)

    def test_put(self):
        rv = self.target.get(self.url)
        rv = self.target.put(self.url, data=rv.data, 
                              content_type='application/json')

        self.assertEqual(204, rv.status_code)

    def test_put_bad_format(self):
        rv = self.target.put(self.url, data={'a': '1'})
        self.assertEqual(400, rv.status_code)

    def test_put_bad(self):
        rv = self.target.put(self.urlBadNameSet, data={'a': '1'})
        self.assertEqual(404, rv.status_code)