Beispiel #1
0
 def create_notes(self):
     notes = [
         Note.create(user=self.admin, message='admin'),
         Note.create(user=self.normal, message='normal'),
     ]
     self.admin_note, self.normal_note = notes
     return notes
Beispiel #2
0
 def setUp(self):
     Note.drop_table(True)
     Message.drop_table(True)
     User.drop_table(True)
     User.create_table()
     Message.create_table()
     Note.create_table()
     
     self.flask_app = test_app.app
     self.flask_app._template_context = {}
     
     self.app = test_app.app.test_client() 
Beispiel #3
0
 def test_panel_simple(self):
     users = self.create_users()
     
     with self.flask_app.test_client() as c:
         self.login(c)
         
         self.assertEqual(Note.select().count(), 0)
         
         resp = c.post('/admin/notes/create/', data={'message': 'testing'})
         self.assertEqual(resp.status_code, 302)
         self.assertTrue(resp.headers['location'].endswith('/admin/'))
         
         self.assertEqual(Note.select().count(), 1)
         
         note = Note.get(user=self.admin)
         self.assertEqual(note.message, 'testing')
Beispiel #4
0
 def test_model_admin_index_pagination(self):
     users = self.create_users()
     notes = {}
     
     for user in users:
         notes[user] = [Note.create(user=user, message='test-%d' % i) for i in range(20)]
     
     with self.flask_app.test_client() as c:
         self.login(c)
         
         # test a simple lookup
         resp = c.get('/admin/note/?ordering=id')
         self.assertEqual(resp.status_code, 200)
         
         query = self.get_context('query')
         self.assertEqual(list(query.get_list()), notes[users[0]])
         
         resp = c.get('/admin/note/?ordering=id&page=2')
         self.assertEqual(resp.status_code, 200)
         
         query = self.get_context('query')
         self.assertEqual(list(query.get_list()), notes[users[1]])
         
         resp = c.get('/admin/note/?ordering=id&page=1&user=%d&user=%d' % (users[1].id, users[2].id))
         self.assertEqual(resp.status_code, 200)
         
         query = self.get_context('query')
         self.assertEqual(list(query.get_list()), notes[users[1]])
         
         resp = c.get('/admin/note/?ordering=id&page=2&user=%d&user=%d' % (users[1].id, users[2].id))
         self.assertEqual(resp.status_code, 200)
         
         query = self.get_context('query')
         self.assertEqual(list(query.get_list()), notes[users[2]])
Beispiel #5
0
 def get_users_and_notes(self):
     users = self.create_users()
     
     notes = []
     for i in range(10):
         for user in users:
             notes.append(Note.create(user=user, message='%s-%s' % (user.username, i)))
     return users, notes
Beispiel #6
0
 def test_delete(self):
     self.create_notes()
     
     url = '/api/note/%s/' % self.admin_note.id
     
     # authorized as an admin
     resp = self.app.delete(url, headers=self.auth_headers('normal', 'normal'))
     self.assertEqual(resp.status_code, 200)
     
     self.assertEqual(Note.select().count(), 1)
     
     resp_json = self.response_json(resp)
     self.assertEqual(resp_json, {'deleted': 1})
Beispiel #7
0
 def test_create(self):
     note_data = {'message': 'test', 'user': self.inactive.id}
     serialized = json.dumps(note_data)
     
     # authorized as an admin
     resp = self.app.post('/api/note/', data=serialized, headers=self.auth_headers('normal', 'normal'))
     self.assertEqual(resp.status_code, 200)
     
     new_note = Note.get(message='test')
     self.assertEqual(new_note.user, self.inactive)
     
     resp_json = self.response_json(resp)
     self.assertAPINote(resp_json, new_note)
Beispiel #8
0
 def test_edit(self):
     self.create_notes()
     
     note_data = {'message': 'edited'}
     serialized = json.dumps(note_data)
     
     url = '/api/note/%s/' % self.admin_note.id
     
     # authorized as an admin
     resp = self.app.put(url, data=serialized, headers=self.auth_headers('normal', 'normal'))
     self.assertEqual(resp.status_code, 200)
     
     note = Note.get(id=self.admin_note.id)
     self.assertEqual(note.message, 'edited')
     
     resp_json = self.response_json(resp)
     self.assertAPINote(resp_json, note)
Beispiel #9
0
 def test_filtering(self):
     users, notes = self.get_users_and_notes()
     
     # do a simple filter on a related model
     resp = self.app.get('/api/note/?user=%s&ordering=id' % self.normal.id)
     resp_json = self.response_json(resp)
     
     self.assertAPIMeta(resp_json, {
         'model': 'note',
         'previous': '',
         'next': '',
         'page': 1,
     })
     self.assertAPINotes(resp_json, self.normal.note_set.order_by('id'))
     
     # do a filter following a join
     resp = self.app.get('/api/note/?user__username=admin&ordering=id')
     resp_json = self.response_json(resp)
     
     self.assertAPIMeta(resp_json, {
         'model': 'note',
         'previous': '',
         'next': '',
         'page': 1,
     })
     self.assertAPINotes(resp_json, self.admin.note_set.order_by('id'))
     
     # filter multiple fields
     notes = list(self.admin.note_set.order_by('id'))
     third_id = notes[3].id
     
     resp = self.app.get('/api/note/?user__username=admin&id__lt=%s&ordering=id' % third_id)
     resp_json = self.response_json(resp)
     self.assertAPINotes(resp_json, notes[:3])
     
     # do a filter using multiple values
     resp = self.app.get('/api/note/?user__username=admin&user__username=inactive&ordering=id')
     resp_json = self.response_json(resp)
     
     self.assertAPIMeta(resp_json, {
         'model': 'note',
         'previous': '',
         'next': '',
         'page': 1,
     })
     self.assertAPINotes(resp_json, Note.filter(user__in=[self.admin, self.inactive]).order_by('id'))
Beispiel #10
0
    def test_model_admin_index_filters(self):
        users = self.create_users()
        notes = {}
        
        for user in users:
            notes[user] = [Note.create(user=user, message='test-%d' % i) for i in range(3)]
        
        with self.flask_app.test_client() as c:
            self.login(c)
            
            # test a simple lookup
            resp = c.get('/admin/user/?username=admin')
            self.assertEqual(resp.status_code, 200)
            
            self.assertContext('user', self.admin)
            self.assertContext('model_admin', admin._registry['user'])
            self.assertContext('ordering', '')
            self.assertContext('filters', [('username', 'admin')])

            query = self.get_context('query')
            self.assertEqual(list(query.get_list()), [
                self.admin,
            ])
            
            # test a lookup using multiple values
            resp = c.get('/admin/user/?username=admin&username=normal&ordering=-username')
            self.assertEqual(resp.status_code, 200)
            
            self.assertContext('filters', [('username__in', ['admin', 'normal'])])

            query = self.get_context('query')
            self.assertEqual(list(query.get_list()), [
                self.normal,
                self.admin,
            ])
            
            # test a lookup spanning a relation
            resp = c.get('/admin/note/?user=%d' % self.normal.id)
            self.assertEqual(resp.status_code, 200)
            
            self.assertContext('model_admin', admin._registry['note'])
            self.assertContext('filters', [('user', str(self.normal.id))])
            
            query = self.get_context('query')
            self.assertEqual(list(query.get_list()), notes[self.normal])