Ejemplo n.º 1
0
    def get(self):
        """ Retrieves all the wishlists """
        app.logger.info('Request to list wishlists')
        wishlists = []
        wishlist_user = request.args.get('wishlist_user')
        wishlist_name = request.args.get('wishlist_name')
        app.logger.info('Request to list wishlists of user %s with name: %s',
                        wishlist_user, wishlist_name)

        if wishlist_user:
            a = Wishlist.find_by_user(wishlist_user)
            ay = [w.serialize() for w in a]

            if wishlist_name:
                b = Wishlist.find_by_name(wishlist_name)
                bee = [w.serialize() for w in b]

                wishlists = [x for x in ay if x in bee]
            else:
                wishlists = ay
        else:
            wishlists = [w.serialize() for w in Wishlist.all()]

        app.logger.info('[%s] Wishlists returned', len(wishlists))
        return wishlists, status.HTTP_200_OK
Ejemplo n.º 2
0
	def test_save_without_attribute(self):
		wishlist_empty = Wishlist()
		self.assertRaises(DataValidationError, wishlist_empty.save)
		wishlist_no_name = Wishlist(wishlist_name=None)
		self.assertRaises(DataValidationError, wishlist_no_name.save)
		wishlist_no_user = Wishlist(wishlist_user=None)
		self.assertRaises(DataValidationError, wishlist_no_user.save)
Ejemplo n.º 3
0
def save_wishlist(user_id):
	token = request.headers.get('auth-token')

	user = db.session.query(User).filter_by(id=user_id).first()
	auth = db.session.query(AuthToken).filter_by(token=token).first()

	# print auth

	if auth.user_id != user.id:
		return jsonify({'error': 'token not found'})

	data = MultiDict(mapping=request.json)

	inputs = WishlistForm(data, csrf_enabled=False)

	if not inputs.validate():
		return jsonify({'error': 'missing required fields'})

	name = data['name']
	description = data['description']

	wishlist = Wishlist(name, description)

	user.wishlists.append(wishlist)

	db.session.add(wishlist)
	db.session.commit()

	return jsonify(wishlist.__repr__())
Ejemplo n.º 4
0
	def test_find_by_name(self):
		""" Find a Wishlist by Name """
		Wishlist("mike's wishlist", "mike").save()
		Wishlist("joan's wishlist", "joan").save()
		wishlists = Wishlist.find_by_name("mike's wishlist")
		self.assertEqual(len(wishlists), 1)
		self.assertEqual(wishlists[0].user, "mike")
		self.assertEqual(wishlists[0].name, "mike's wishlist")
Ejemplo n.º 5
0
	def test_create_a_wishlist_without_name(self):
		"""Create a wishlist with no name, assert Error"""
		wishlist_empty = Wishlist()
		self.assertRaises(DataValidationError, wishlist_empty.create)
		wishlist_no_name = Wishlist(wishlist_name=None)
		self.assertRaises(DataValidationError, wishlist_no_name.create)
		wishlist_no_user = Wishlist(wishlist_user=None)
		self.assertRaises(DataValidationError, wishlist_no_user.create)
Ejemplo n.º 6
0
 def test_find_by_customer_id(self):
     """ Find a Wishlist by Customer_id """
     Wishlist("fido", "1").save()
     Wishlist("Bags", "2").save()
     wishlists = Wishlist.find_by_customer_id("1")
     self.assertNotEqual(len(wishlists), 0)
     self.assertEqual(wishlists[0].customer_id, "1")
     self.assertEqual(wishlists[0].name, "fido")
Ejemplo n.º 7
0
 def test_deserialize_a_wishlist(self):
     """ Deserialize a Wishlist """
     data = {"name": "Bags", "customer_id": "1"}
     wishlist = Wishlist()
     wishlist.deserialize(data)
     self.assertNotEqual(wishlist, None)
     self.assertEqual(wishlist.id, None)
     self.assertEqual(wishlist.name, "Bags")
     self.assertEqual(wishlist.customer_id, "1")
Ejemplo n.º 8
0
 def test_serialize_a_wishlist(self):
     """ Serialize a Wishlist """
     wishlist = Wishlist("fido", "1")
     data = wishlist.serialize()
     self.assertNotEqual(data, None)
     self.assertNotIn('_id', data)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "fido")
     self.assertIn('customer_id', data)
     self.assertEqual(data['customer_id'], "1")
Ejemplo n.º 9
0
	def test_serialize_a_wishlist(self):
		""" Test serialization of a Wishlist """
		wishlist = Wishlist("mike's wishlist", "mike",
							[Wishlist_entry(0, "car")])
		data = wishlist.serialize()
		self.assertNotEqual(data, None)
		self.assertIn('id', data)
		self.assertEqual(data['id'], None)
		self.assertIn('name', data)
		self.assertEqual(data['name'], "mike's wishlist")
		self.assertIn('user', data)
		self.assertEqual(data['user'], "mike")
Ejemplo n.º 10
0
 def test_delete_a_wishlist(self):
     """ Delete a Wishlist """
     wishlist = Wishlist("fido", "1")
     wishlist.save()
     self.assertEqual(len(Wishlist.all()), 1)
     # delete the wishlist and make sure it isn't in the database
     wishlist.delete()
     self.assertEqual(len(Wishlist.all()), 0)
Ejemplo n.º 11
0
	def test_create_a_wishlist(self):
		""" Create a wishlist and assert that it exists """
		wishlist = Wishlist("mike's wishlist", "mike")
		self.assertTrue(wishlist != None)
		self.assertEqual(wishlist.id, None)
		self.assertEqual(wishlist.name, "mike's wishlist")
		self.assertEqual(wishlist.user, "mike")
Ejemplo n.º 12
0
 def delete(self, wishlist_user):
     """ Removes all wishlists of a user"""
     app.logger.info('Request to delete all wishlists of a user')
     wishlists = Wishlist.find_by_user(wishlist_user)
     for wishlist in wishlists:
         wishlist.delete_wishlist()
     return '', status.HTTP_204_NO_CONTENT
Ejemplo n.º 13
0
 def test_create_a_wishlist(self):
     """ Create a wishlist and assert that it exists """
     wishlist = Wishlist("fido", "1")
     self.assertNotEqual(wishlist, None)
     self.assertEqual(wishlist.id, None)
     self.assertEqual(wishlist.name, "fido")
     self.assertEqual(wishlist.customer_id, "1")
Ejemplo n.º 14
0
	def test_delete_error(self):
		""" Test failure of the delete try-catch"""
		wishlist = Wishlist("mike's wishlist", "mike")
		wishlist.save()
		self.assertEqual(len(Wishlist.all()), 1)
		og_id = wishlist.id
		# modify id to trigger try-catch
		wishlist.id = "asdf123"
		# delete the wishlist and make sure it failed and is still int the database
		wishlist.delete_wishlist()
		self.assertEqual(len(Wishlist.all()), 1)
		# Fetch it back and make sure the id and data hasn't changed
		wishlists = Wishlist.all()
		self.assertEqual(len(wishlists), 1)
		self.assertEqual(wishlists[0].name, "mike's wishlist")
		self.assertEqual(wishlists[0].id, og_id)
Ejemplo n.º 15
0
def create_wishlists():
    """
    Creates a Wishlist
    This endpoint will create a Wishlist based the data in the body that is posted
    """
    app.logger.info('Request to Create a Wishlist...')
    data = {}
    # 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'],
            'customer_id': request.form['customer_id']
        }
    else:
        check_content_type('application/json')
        app.logger.info('Getting json data from API call')
        data = request.get_json()
    app.logger.info(data)
    wishlist = Wishlist()
    wishlist.deserialize(data)
    wishlist.save()
    app.logger.info('Wishlist with new id [%s] saved!', wishlist.id)
    message = wishlist.serialize()
    location_url = url_for('get_wishlists', wishlist_id=wishlist.id, _external=True)
    return make_response(jsonify(message), status.HTTP_201_CREATED,
                         {'Location': location_url})
Ejemplo n.º 16
0
 def test_key_error_on_update(self, bad_mock):
     """ Test KeyError on update """
     bad_mock.side_effect = KeyError()
     wishlist = Wishlist("fido", "1")
     wishlist.save()
     wishlist.name = 'Fifi'
     wishlist.update()
Ejemplo n.º 17
0
	def test_key_error_on_update(self, bad_mock):
		""" Test KeyError on update """
		bad_mock.side_effect = KeyError()
		wishlist =  Wishlist("joan's wishlist", "joan")
		wishlist.save()
		wishlist.name = "joan's wishlist"
		wishlist.update()
Ejemplo n.º 18
0
 def setUp(self):
     """ Runs before each test """
     self.app = service.app.test_client()
     # TestWishlistServer.throttle_api()
     Wishlist.init_db()
     sleep(0.25)
     # TestWishlistServer.throttle_api()
     Wishlist("Wishlist demo 1", "demo user1", [
         service.Wishlist_entry(0, "test11"),
         service.Wishlist_entry(1, "test12")
     ]).save()
     sleep(0.25)
     # TestWishlistServer.throttle_api()
     Wishlist("Wishlist demo 2", "demo user2", [
         service.Wishlist_entry(0, "test21"),
         service.Wishlist_entry(1, "test22")
     ]).save()
     sleep(0.25)
Ejemplo n.º 19
0
def list_wishlists():
    """ Returns all of the Wishlists """
    app.logger.info('Request to list Wishlists...')
    wishlists = []
    customer_id = request.args.get('customer_id')
    name = request.args.get('name')
    if customer_id:
        app.logger.info('Find by customer_id')
        wishlists = Wishlist.find_by_customer_id(customer_id)
    elif name:
        app.logger.info('Find by name')
        wishlists = Wishlist.find_by_name(name)
    else:
        app.logger.info('Find all')
        wishlists = Wishlist.all()

    app.logger.info('[%s] Wishlists returned', len(wishlists))
    results = [wishlist.serialize() for wishlist in wishlists]
    return make_response(jsonify(results), status.HTTP_200_OK)
Ejemplo n.º 20
0
 def test_delete_wishlist(self):
     """ Delete a wishlist by ID """
     wishlist = Wishlist.find_by_name('Wishlist demo 1')[0]
     wishlist_count = self.get_wishlist_count()
     resp = self.app.delete('/wishlists/{}'.format(wishlist.id),
                            content_type='application/json')
     self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT)
     self.assertEqual(len(resp.data), 0)
     new_count = self.get_wishlist_count()
     self.assertEqual(new_count, wishlist_count - 1)
Ejemplo n.º 21
0
	def test_update_error(self):
		""" TEST failure of the update try-catch """
		wishlist = Wishlist("mike's wishlist", "mike")
		wishlist.save()
		self.assertNotEqual(wishlist.id, None)
		og_id = wishlist.id

		#change its ID before updating it to trigger try-catch block
		wishlist.id = "asdf123"
		wishlist.name = "mike's hard wishlist"
		wishlist.save()
		# Fetch it back and make sure the id and data hasn't changed
		wishlists = Wishlist.all()
		self.assertEqual(len(wishlists), 1)
		self.assertEqual(wishlists[0].name, "mike's wishlist")
		self.assertEqual(wishlists[0].id, og_id)
Ejemplo n.º 22
0
def get_wishlists(wishlist_id):
    """
    Retrieve a single Wishlist

    This endpoint will return a Wishlist based on it's id
    """
    app.logger.info("Request to Retrieve a wishlist with id [%s]", wishlist_id)
    wishlist =  Wishlist.find(wishlist_id)
    if not wishlist:
        raise NotFound("Wishlist with id '{}' was not found.".format(wishlist_id))
    return make_response(jsonify(wishlist.serialize()), status.HTTP_200_OK)
Ejemplo n.º 23
0
	def test_update_a_wishlist(self):
		""" Update a Wishlist """
		wishlist = Wishlist("mike's wishlist", "mike")
		wishlist.save()
		self.assertNotEqual(wishlist.id, None)
		# Change it an save it
		wishlist.name = "mike's hard wishlist"
		wishlist.save()
		# Fetch it back and make sure the id hasn't changed
		# but the data did change
		wishlists = Wishlist.all()
		self.assertEqual(len(wishlists), 1)
		self.assertEqual(wishlists[0].name, "mike's hard wishlist")
Ejemplo n.º 24
0
def delete_wishlists(wishlist_id):
    """
    Delete a Wishlist

    This endpoint will delete a Wishlist based the id specified in the path
    """
    app.logger.info('Request to Delete a wishlist with id [%s]', wishlist_id)
    wishlist = Wishlist.find(wishlist_id)
    if wishlist:
        wishlist.delete()
    return make_response('', status.HTTP_204_NO_CONTENT)
Ejemplo n.º 25
0
    def delete(self, wishlist_id):
        """
        Delete a Wishlist

        This endpoint will delete a Wishlist based on it's id
        """
        app.logger.info('Request to Delete a wishlist with id [%s]',
                        wishlist_id)
        wishlist = Wishlist.find(wishlist_id)
        if wishlist:
            wishlist.delete_wishlist()
        return '', status.HTTP_204_NO_CONTENT
Ejemplo n.º 26
0
 def test_update_a_wishlist(self):
     """ Update a Wishlist """
     wishlist = Wishlist("fido", "1")
     wishlist.save()
     self.assertNotEqual(wishlist.id, None)
     # Change it an save it
     wishlist.customer_id = "k9"
     wishlist.save()
     # Fetch it back and make sure the id hasn't changed
     # but the data did change
     wishlists = Wishlist.all()
     self.assertEqual(len(wishlists), 1)
     self.assertEqual(wishlists[0].customer_id, "k9")
     self.assertEqual(wishlists[0].name, "fido")
Ejemplo n.º 27
0
def add_wishlist_to_db(wishlist_list):
    log.info("Adding wishlist to database...")

    value = round(
        sum(map(lambda e: e["price"] * e["quantity"], wishlist_list)), 2)
    wishlist = Wishlist(value=value, content_hash=0)
    db.session.add(wishlist)
    new_count = 0
    for entry in wishlist_list:
        product = Product.query.filter_by(item_id=entry["item_id"]).first()
        source = Source.query.filter_by(name=entry["source"]).first()
        if source is None:
            source = Source(name=entry["source_name"], url=entry["source"])
            db.session.add(source)
            db.session.commit()
        if product is None:
            product = Product(
                name=entry["name"],
                price=entry["price"],
                quantity=entry["quantity"],
                stars=entry["stars"],
                link=entry["link"],
                link_image=entry["img_link"],
                item_id=entry["item_id"],
                source=source,
            )
            log.info(
                f"Adding product {product.name[:20]}[..], price = {product.price:.02f}"
            )
            db.session.add(product)
            new_count += 1
        else:
            update_product(product, entry, source)
        wishlist.products.append(product)
    db.session.commit()
    wishlist.content_hash = wishlist.calculate_content_hash()
    db.session.commit()
    log.info("Added wishlist to database, got %d new products!" % new_count)
Ejemplo n.º 28
0
    def get(self, wishlist_id):
        """
        Retrieve a single wishlist

        This endpoint will return a wishlist based on it's id
        """
        app.logger.info("Request to retrieve a wishlist with id [%s]",
                        wishlist_id)
        wishlist = Wishlist.find(wishlist_id)
        if not wishlist:
            api.abort(
                status.HTTP_404_NOT_FOUND,
                "Wishlist with id '{}' was not found".format(wishlist_id))
        return wishlist.serialize(), status.HTTP_200_OK
Ejemplo n.º 29
0
def addtowishlist():
    """Add item to wishlist"""
    if request.method == 'POST':
        itemUrl = request.json['itemUrl']
        imgUrl = request.json['imgUrl']
        title = request.json['title']
        description = request.json['description']
        
        item = Wishlist(itemUrl=itemUrl, imgUrl=imgUrl, title=title, description=description, userid=g.user.get_id())
        db.session.add(item)
        db.session.commit()
        
        return jsonify({'StatusCode':'200','Message': 'Item successfully added'})
    return render_template('addItem.html')
Ejemplo n.º 30
0
 def test_find_wishlist(self):
     """ Find a Wishlist by id """
     Wishlist("fido", "2").save()
     saved_wishlist = Wishlist("Bags", "1")
     saved_wishlist.save()
     wishlist = Wishlist.find(saved_wishlist.id)
     self.assertIsNot(wishlist, None)
     self.assertEqual(wishlist.id, saved_wishlist.id)
     self.assertEqual(wishlist.name, "Bags")