def add_purchase(): buyer_id = request.json["buyer_id"] new_purchase = Purchase(buyer_id=buyer_id, status_id=1) # commit new_purchase to database to get purchase id db.session.add(new_purchase) db.session.commit() # This is placeholder code so we can test. # cart_items = request.json["cart_items"] # return jsonify({ # "purchase": { # "buyer_id": buyer_id, # "items": cart_items, # "test": cart_items[0]['qty'] # }, # "total": 1250 # }) cart_items = request.json["cart_items"] # add purchase_items to new_purchase for item in cart_items: new_p_item = P_Item(qty=item['qty'], product_id=item['product_id'], purchase_id=new_purchase.id) db.session.add(new_p_item) new_purchase.total = new_purchase.set_total() db.session.add(new_purchase) # commit both purchase item and purchase total to db. db.session.commit() # return purchase resp = purchase_schema.dump(new_purchase) return jsonify({'msg': 'Your purchase was received', 'purchase': resp})
def test_update_purchase(self): p, m, u = self._create_purchase_with_member_with_user() self.assertEqual(p.price, self.price) new_price = 77 p.update(price=new_price) self.assertEqual(p.price, new_price) self.assertEqual(Purchase.get_by_id(p.id).price, new_price)
def test_delete_purchase(self): """ Purchase deleted -> Member NOT deleted -> User NOT deleted """ p, m, u = self._create_purchase_with_member_with_user() p.delete() self.assertEqual(Purchase.query.count(), 0) assert not Purchase.get_by_id(p.id) and Member.get_by_id(m.id) and User.get_by_id(u.id) self.assertEqual(len(m.purchases), 0)
def test_delete_membership(self): """ Member deleted -> Purchases by that member deleted -> User NOT deleted """ p, m, u = self._create_purchase_with_member_with_user() m.delete() self.assertIsNone(Purchase.get_by_id(p.id)) self.assertIsNone(Member.get_by_id(m.id)) self.assertIsNotNone(User.get_by_id(u.id)) self.assertEqual(u.members, [])
def _create_purchase_with_member_with_user(self): u = User.create(account_id=self.account_id, secret_key=self.secret_key) m = Member.create(email=self.email, account_id=u.account_id) p = Purchase.create(title='TEST', price=100, member_id=m.id) return [p, m, u]
def purchase_model(purchase_data, create_user) -> Purchase: data = deepcopy(purchase_data) return Purchase(**data, user_id=create_user.id)