Exemple #1
0
    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")
Exemple #2
0
 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
     }