Ejemplo n.º 1
0
 def test_find_supplier(self):
     """ Find a Supplier by id """
     Supplier("supplier1", 2, True, [1, 2, 3], 8.5).save()
     # saved_supplier = Supplier("kitty", "cat").save()
     saved_supplier = Supplier("supplier1", 2, True, [1, 2, 3], 8.5)
     saved_supplier.save()
     supplier = Supplier.find(saved_supplier.id)
     self.assertIsNot(supplier, None)
     self.assertEqual(supplier.id, saved_supplier.id)
     self.assertEqual(supplier.name, "supplier1")
Ejemplo n.º 2
0
 def test_find_by_is_active(self):
     """ Find a Supplier by is_active """
     Supplier("supplier1", 2, True, [1, 2, 3], 8.5).save()
     Supplier("supplier2", 4, False, [1, 3, 5, 7], 6.5).save()
     suppliers = Supplier.find_by_is_active(True)
     self.assertEqual(len(suppliers), 1)
     self.assertEqual(suppliers[0].name, "supplier1")
     self.assertEqual(suppliers[0].like_count, 2)
     self.assertEqual(suppliers[0].is_active, True)
     self.assertEqual(len(suppliers[0].products), 3)
     self.assertEqual(suppliers[0].rating, 8.5)
Ejemplo n.º 3
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")
Ejemplo n.º 4
0
 def test_list_all_supplier(self):
     """ Test return a list of suppliers """
     Supplier(supplierName="Walmart",
              address="NYC",
              averageRating=5,
              productIdList=['1', '2', '3']).save()
     Supplier(supplierName="Costco",
              address="SF",
              averageRating=2,
              productIdList=['1', '3', '4']).save()
     suppliers = Supplier.all()
     self.assertEqual(len(suppliers), 2)
     self.assertEqual(suppliers[0].supplierName, 'Walmart')
     self.assertEqual(suppliers[1].supplierName, 'Costco')
Ejemplo n.º 5
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
     }
Ejemplo n.º 6
0
 def test_query_by_product(self):
     """ Test query by product """
     Supplier(supplierName="Walmart",
              address="NYC",
              averageRating=5,
              productIdList=['1', '2', '3']).save()
     Supplier(supplierName="Costco",
              address="SF",
              averageRating=2,
              productIdList=['1', '3', '4']).save()
     suppliers = Supplier.find_by_product("4")
     supplier = suppliers[0]
     self.assertEqual(supplier.supplierName, "Costco")
     self.assertEqual(supplier.address, "SF")
     self.assertEqual(supplier.averageRating, 2)
     self.assertEqual(supplier.productIdList, ['1', '3', '4'])
Ejemplo n.º 7
0
 def test_query_by_name(self):
     """ Test return a supplier given a name """
     Supplier(supplierName="Walmart",
              address="NYC",
              averageRating=5,
              productIdList=['1', '2', '3']).save()
     Supplier(supplierName="Costco",
              address="SF",
              averageRating=2,
              productIdList=['1', '3', '4']).save()
     supplier = Supplier.find_by_name("Walmart")
     self.assertEqual(supplier.address, "NYC")
     self.assertEqual(supplier.averageRating, 5)
     self.assertEqual(supplier.productIdList, ['1', '2', '3'])
     nowhere = Supplier.find_by_name("NoWhere")
     self.assertEqual(nowhere, None)
Ejemplo n.º 8
0
 def test_find_by_rating(self):
     """ Find a Supplier by Rating """
     Supplier("supplier1", 2, True, [1, 2, 3], 8.5).save()
     Supplier("supplier2", 4, False, [1, 3, 5, 7], 6.5).save()
     Supplier("supplier3", 6, False, [1, 3, 5], 7.2).save()
     Supplier("supplier4", 8, True, [1, 2, 5], 4.5).save()
     suppliers = Supplier.find_by_greater("rating", 4.2)
     self.assertEqual(len(suppliers), 4)
     suppliers = Supplier.find_by_greater("rating", 7)
     self.assertEqual(len(suppliers), 2)
     suppliers = Supplier.find_by_greater("rating", 8.6)
     self.assertEqual(len(suppliers), 0)
     suppliers = Supplier.find_by_greater("rating", 7.2)
     self.assertEqual(len(suppliers), 1)
     self.assertEqual(suppliers[0].name, "supplier1")
     self.assertEqual(suppliers[0].like_count, 2)
     self.assertEqual(suppliers[0].is_active, True)
     self.assertEqual(suppliers[0].products, [1, 2, 3])
     self.assertEqual(suppliers[0].rating, 8.5)
Ejemplo n.º 9
0
 def test_create_a_supplier(self):
     """ Test create a supplier and assert that it exists """
     supplier = Supplier(supplierName="Walmart",
                         address="NYC",
                         averageRating=5,
                         productIdList=['1', '2', '3'])
     self.assertTrue(supplier != None)
     self.assertEqual(supplier.supplierName, "Walmart")
     self.assertEqual(supplier.address, "NYC")
     self.assertEqual(supplier.averageRating, 5)
     self.assertEqual(supplier.productIdList, ['1', '2', '3'])
Ejemplo n.º 10
0
 def test_deserialize_a_supplier(self):
     """ Deserialize a Supplier """
     data = {"_id": 1, "name": "supplier1", "like_count": 2, "is_active": True, "products": [1, 2, 3], "rating": 8.5}
     supplier = Supplier()
     supplier.deserialize(data)
     self.assertNotEqual(supplier, None)
     self.assertEqual(supplier.id, 1)
     self.assertEqual(supplier.name, "supplier1")
     self.assertEqual(supplier.like_count, 2)
     self.assertEqual(supplier.is_active, True)
     self.assertEqual(supplier.products, [1, 2, 3])
     self.assertEqual(supplier.rating, 8.5)
Ejemplo n.º 11
0
 def _create_supplier(self, products=[]):
     """ Creates a supplier from a Factory """
     fake_supplier = SupplierFactory()
     supplier = Supplier(name=fake_supplier.name,
                         category=fake_supplier.category,
                         address=fake_supplier.address,
                         email=fake_supplier.email,
                         phone_number=fake_supplier.phone_number,
                         preferred=fake_supplier.preferred,
                         products=products)
     self.assertTrue(supplier != None)
     self.assertEqual(supplier.id, None)
     return supplier
Ejemplo n.º 12
0
 def test_query_by_equals_to_rating(self):
     """ Test return a lsit of suppliers with given rating. """
     Supplier(supplierName="Walmart",
              address="NYC",
              averageRating=5,
              productIdList=['1', '2', '3']).save()
     Supplier(supplierName="Costco",
              address="SF",
              averageRating=2,
              productIdList=['1', '3', '4']).save()
     suppliers = Supplier.find_by_equals_to_rating(5)
     self.assertEqual(len(suppliers), 1)
     supplier = suppliers[0]
     self.assertEqual(supplier.supplierName, "Walmart")
     self.assertEqual(supplier.address, "NYC")
     self.assertEqual(supplier.averageRating, 5)
     self.assertEqual(supplier.productIdList, ['1', '2', '3'])
     suppliers = Supplier.find_by_equals_to_rating(2)
     self.assertEqual(len(suppliers), 1)
     supplier = suppliers[0]
     self.assertEqual(supplier.supplierName, "Costco")
     self.assertEqual(supplier.address, "SF")
     self.assertEqual(supplier.averageRating, 2)
     self.assertEqual(supplier.productIdList, ['1', '3', '4'])
Ejemplo n.º 13
0
 def test_create_a_supplier(self):
     """ Create a Supplier and assert that it exists """
     fake_supplier = SupplierFactory()
     supplier = Supplier(name=fake_supplier.name,
                         category=fake_supplier.category,
                         address=fake_supplier.address,
                         email=fake_supplier.email,
                         phone_number=fake_supplier.phone_number,
                         preferred=fake_supplier.preferred)
     self.assertTrue(supplier != None)
     self.assertEqual(supplier.id, None)
     self.assertEqual(supplier.name, fake_supplier.name)
     self.assertEqual(supplier.address, fake_supplier.address)
     self.assertEqual(supplier.email, fake_supplier.email)
     self.assertEqual(supplier.phone_number, fake_supplier.phone_number)
Ejemplo n.º 14
0
def create_suppliers():
    """
    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")
    supplier = Supplier()
    supplier.deserialize(request.get_json())
    supplier.create()
    message = supplier.serialize()
    location_url = url_for("get_suppliers", supplier_id=supplier.id, _external=True)
    return make_response(
        jsonify(message), status.HTTP_201_CREATED, {"Location": location_url}
    )
Ejemplo n.º 15
0
 def test_add_a_supplier(self):
     """ Test create a supplier and add it to the database """
     suppliers = Supplier.all()
     self.assertEqual(len(suppliers), 0)
     supplier = Supplier(supplierName="Walmart",
                         address="NYC",
                         averageRating=5,
                         productIdList=['1', '2', '3'])
     self.assertTrue(supplier != None)
     self.assertEqual(supplier.id, None)
     supplier.save()
     # Asert that it was assigned an id and shows up in the database
     # self.assertEqual(supplier.id, 1)
     suppliers = Supplier.all()
     self.assertEqual(len(suppliers), 1)
     self.assertNotEqual(supplier.id, None)
Ejemplo n.º 16
0
 def test_add_a_supplier(self):
     """ Create a supplier and add it to the database """
     suppliers = Supplier.all()
     self.assertEqual(suppliers, [])
     supplier = Supplier("supplier1", 2, True, [1, 2, 3], 8.5)
     self.assertNotEqual(supplier, None)
     self.assertEqual(supplier.id, None)
     supplier.save()
     # Asert that it was assigned an id and shows up in the database
     self.assertNotEqual(supplier.id, None)
     suppliers = Supplier.all()
     self.assertEqual(len(suppliers), 1)
     self.assertEqual(suppliers[0].name, "supplier1")
     self.assertEqual(suppliers[0].like_count, 2)
     self.assertEqual(suppliers[0].is_active, True)
     self.assertEqual(suppliers[0].products, [1, 2, 3])
     self.assertEqual(suppliers[0].rating, 8.5)
Ejemplo n.º 17
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')
     supplier = Supplier()
     app.logger.debug('Payload = %s', api.payload)
     supplier.deserialize(api.payload)
     supplier.create()
     app.logger.info('Supplier with new id [%s] saved!', supplier.id)
     location_url = api.url_for(SupplierResource,
                                supplier_id=supplier.id,
                                _external=True)
     return supplier.serialize(), status.HTTP_201_CREATED, {
         'Location': location_url
     }
Ejemplo n.º 18
0
 def test_update_a_supplier(self):
     """ Test update a supplier """
     supplier = Supplier(supplierName="Walmart",
                         address="NYC",
                         averageRating=5,
                         productIdList=['1', '2', '3'])
     supplier.save()
     self.assertNotEqual(supplier.id, None)
     old_id = supplier.id
     # Change it an save it
     supplier.supplierName = "Costco"
     supplier.save()
     self.assertEqual(supplier.id, old_id)
     # Fetch it back and make sure the id hasn't changed
     # but the data did change
     suppliers = Supplier.all()
     self.assertEqual(len(suppliers), 1)
     self.assertEqual(suppliers[0].supplierName, "Costco")
Ejemplo n.º 19
0
 def test_serialize_a_supplier(self):
     """ Serialize a Supplier """
     supplier = Supplier("supplier1", 2, True, [1, 2, 3], 8.5)
     supplier.id = 1
     data = supplier.serialize()
     self.assertNotEqual(data, None)
     self.assertIn('_id', data)
     self.assertEqual(data['_id'], 1)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "supplier1")
     self.assertIn('like_count', data)
     self.assertEqual(data['like_count'], 2)
     self.assertIn('is_active', data)
     self.assertEqual(data['is_active'], True)
     self.assertIn('products', data)
     self.assertEqual(data['products'], [1, 2, 3])
     self.assertIn('rating', data)
     self.assertEqual(data['rating'], 8.5)
Ejemplo n.º 20
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 for form submission data
        if request.headers.get(
                'Content-Type') == 'application/x-www-form-urlencoded':
            app.logger.info('Getting data from form submit')
            data = {
                "name": request.form['name'],
                "like_count": request.form['like_count'],
                "is_active": request.form['is_active'],
                "products": request.form['products'],
                "rating": request.form['rating']
            }
        else:
            check_content_type('application/json')
            app.logger.info('Getting json data from API call')
            data = request.get_json()
            # Data type transfer
            data = data_type_transfer(data)

        app.logger.info(data)
        supplier = Supplier()
        supplier.deserialize(data)
        supplier.save()
        app.logger.info('Supplier with new id [%s] saved!', supplier.id)
        location_url = api.url_for(SupplierResource,
                                   supplier_id=supplier.id,
                                   _external=True)
        return supplier.serialize(), status.HTTP_201_CREATED, {
            'Location': location_url
        }
Ejemplo n.º 21
0
def data_load(payload):
    """ Loads a Supplier into the database """
    supplier = Supplier(payload['name'], payload['category'],
                        payload['preferred'])
    supplier.save()
Ejemplo n.º 22
0
 def test_deserialize_with_no_data(self):
     """ Deserialize a Supplier that has no data """
     supplier = Supplier()
     self.assertRaises(DataValidationError, supplier.deserialize, None)
Ejemplo n.º 23
0
 def test_deserialize_with_bad_data(self):
     """ Deserialize a Supplier that has bad data """
     supplier = Supplier()
     self.assertRaises(DataValidationError, supplier.deserialize, "string data")
Ejemplo n.º 24
0
 def test_deserialize_with_no_name(self):
     """ Deserialize a Supplier that has no name """
     data = {"like_count": 2, "is_active": True, "products": [1, 2, 3], "rating": 8.5}
     supplier = Supplier()
     self.assertRaises(DataValidationError, supplier.deserialize, data)
Ejemplo n.º 25
0
 def test_save_a_supplier_with_no_name(self):
     """ Save a Supplier with no name """
     supplier = Supplier(None, 2, True, [1, 2, 3], 8.5)
     self.assertRaises(DataValidationError, supplier.save)
Ejemplo n.º 26
0
 def test_document_not_exist(self, bad_mock):
     """ Test a Bad Document Exists """
     bad_mock.return_value = False
     supplier = Supplier("supplier1", 2, True, [1, 2, 3], 8.5)
     supplier.create()
     self.assertIsNone(supplier.id)
Ejemplo n.º 27
0
 def test_http_error(self, bad_mock):
     """ Test a Bad Create with HTTP error """
     bad_mock.side_effect = HTTPError()
     supplier = Supplier("supplier1", 2, True, [1, 2, 3], 8.5)
     supplier.create()
     self.assertIsNone(supplier.id)
Ejemplo n.º 28
0
 def test_create_a_supplier_with_no_name(self):
     """ Create a Suppleir with no name """
     supplier = Supplier(None, 2, True, [1, 2, 3], 8.5)
     self.assertRaises(DataValidationError, supplier.create)
Ejemplo n.º 29
0
 def test_supplier_not_found(self):
     """ Find a Supplier that doesnt exist """
     Supplier("supplier1", 2, True, [1, 2, 3], 8.5).save()
     supplier = Supplier.find("2")
     self.assertIs(supplier, None)