def create_status(): data = request.get_json() status = TaskStatus.create_from_dict(data) db_session.add(status) try: db_session.commit() except IntegrityError: db_session.rollback() return jsonify(dict(message='Status name must be unique.')), 409 return jsonify(status.to_dict()), 201
def test_create_status_from_dict_invalid_data(self): count_before_insert = TaskStatus.query.count() status_dict = dict() with self.assertRaises(ValidationError): status = TaskStatus.create_from_dict(status_dict) db_session.add(status) db_session.commit() count_after_insert = TaskStatus.query.count() self.assertEqual(count_before_insert, count_after_insert)
def test_create_status_from_dict_invalid_type(self): count_before_insert = TaskStatus.query.count() status_list = [ 'Odroczone' ] with self.assertRaises(TypeError): status = TaskStatus.create_from_dict(status_list) db_session.add(status) db_session.commit() count_after_insert = TaskStatus.query.count() status = TaskStatus.query.filter_by(name='Odroczone').first() self.assertIsNone(status) self.assertEqual(count_before_insert, count_after_insert)
def test_create_status_from_dict(self): count_before_insert = TaskStatus.query.count() status_dict = dict( name='Odroczone' ) status = TaskStatus.create_from_dict(status_dict) db_session.add(status) db_session.commit() count_after_insert = TaskStatus.query.count() self.assertEqual(count_before_insert + 1, count_after_insert) status = TaskStatus.query.filter_by(name='Odroczone').first() self.assertIsNotNone(status) self.assertEqual(status_dict['name'], status.name)
def test_create_status_duplicate(self): status_dict = dict( name='Odroczone', ) status = TaskStatus.create_from_dict(status_dict) db_session.add(status) db_session.commit() count_before_insert = TaskStatus.query.count() response = self.client.post( '/task/status', data=json.dumps(status_dict), headers={'Content-Type': 'application/json'} ) count_after_insert = TaskStatus.query.count() self.assertStatus(response, 409) self.assertEqual(count_before_insert, count_after_insert)
def test_update_status_duplicate_data(self): status_dict = dict( name='Odroczone', ) status = TaskStatus.create_from_dict(status_dict) db_session.add(status) db_session.commit() status2 = TaskStatus.query.first() response = self.client.put( '/task/status/' + str(status2.id), data=json.dumps(status_dict), headers={'Content-Type': 'application/json'} ) self.assertStatus(response, 409) status2 = TaskStatus.query.first() self.assertNotEqual(status2.name, status_dict['name'])