def test_create_supplier(self): """ Test create a new supplier """ resp = self.app.post('/suppliers') self.assertRaises(DataValidationError) test_supplier = Supplier() self.assertNotEqual(test_supplier, None) resp = self.app.post('/suppliers', json=test_supplier.to_json(), content_type='application/json') self.assertRaises(DataValidationError) test_supplier = Supplier() self.assertNotEqual(test_supplier, None) resp = self.app.post( '/suppliers', json=test_supplier.to_json(), content_type='wrong', ) self.assertRaises(DataValidationError) test_supplier = Supplier() self.assertNotEqual(test_supplier, None) resp = self.app.post( '/suppliers', json=test_supplier.to_json(), ) self.assertRaises(DataValidationError) test_supplier = SupplierFactory() self.assertNotEqual(test_supplier, None) resp = self.app.post('/suppliers', json=test_supplier.to_json(), content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_201_CREATED) # Make sure location header is set location = resp.headers.get('Location', None) #self.assertTrue(location != None) # Check the data is correct new_supplier = json.loads(resp.data.decode('utf-8')) self.assertNotEqual(new_supplier, None) self.assertNotEqual(test_supplier, None) self.assertEqual(new_supplier['supplierName'], test_supplier.supplierName, "SupplierNames do not match") self.assertEqual(new_supplier['address'], test_supplier.address, "Addresses do not match") self.assertEqual(new_supplier['averageRating'], test_supplier.averageRating, "AverageRatings does not match")
def post(self): """ Creates a supplier This endpoint will create a supplier based the data in the body that is posted """ app.logger.info('Request to Create a supplier') check_content_type('application/json') data = request.get_json() if not isinstance(data, dict): data = json.loads(data) try: data['supplierName'] except KeyError as error: raise DataValidationError('Invalid supplier: missing ' + error.args[0]) except TypeError as error: raise DataValidationError( 'Invalid supplier: body of request contained' 'bad or no data') supplier = Supplier(**data) supplier.save() app.logger.debug('Payload = %s', api.payload) app.logger.info('supplier with new id [%s] saved!', supplier.id) location_url = api.url_for(SupplierResource, supplier_id=supplier.id, _external=True) return json.loads(supplier.to_json()), status.HTTP_201_CREATED, { 'Location': location_url }