def extra_charge(card_id): if not request.json or 'amount' not in request.json: return Response('Missing amount parameter.', 400) # Get Card card = Card.select(Card.credit).where(Card.id == card_id) if not card and not card[0]: return Response('Card not found.', 400) amount = float(request.json['amount']) prev_credit = card[0].credit new_balance = prev_credit - amount Card.update(credit=new_balance).where(Card.id == card_id).execute() # add charge charge = Charge(id_cc_card=card_id, amount=amount, chargetype=4) charge.save() # prepare dictionary for JSON return data = { 'card_id': card_id, 'current_balance': new_balance, 'amount': amount, 'charge_id': charge.id } return jsonify(data)
def test_charges_api(self): charge1 = Charge(self.ce1, self.cr1) charge2 = Charge(self.ce2, self.cr1) db.session.add_all([charge1, charge2]) db.session.commit() expected = [{'uri': 'http://localhost/api/charge/1', 'id': 1}, {'uri': 'http://localhost/api/charge/2', 'id': 2}] response_json = self.get_json_from_url('/api/charge') self.assertEqual(response_json, expected)
def test_celebrities_api(self): charge1 = Charge(self.ce1, self.cr1) charge2 = Charge(self.ce2, self.cr1) db.session.add_all([charge1, charge2]) db.session.commit() str_data = self.app.get('/api/celebrity').get_data().decode("utf-8") response_json = json.loads(str_data) #response_json = self.get_json_from_url('/api/celebrity') expected = [{'id': 1, 'name': '1', 'uri': 'http://localhost/api/celebrity/1'}, {'id': 2, 'name': '2', 'uri': 'http://localhost/api/celebrity/2'}] self.assertEqual(response_json, expected)
def test_crime_api(self): charge1 = Charge(self.ce1, self.cr1) charge2 = Charge(self.ce2, self.cr1) db.session.add_all([charge1, charge2]) db.session.commit() expected = {'description': None, 'wiki_url': None, 'id': 1, 'name': '1', 'celebrities': [{'uri': 'http://localhost/api/celebrity/1', 'id': 1, 'name': '1'}, {'uri': 'http://localhost/api/celebrity/2', 'id': 2, 'name': '2'}], 'charges': [{'uri': 'http://localhost/api/charge/1', 'id': 1}, {'uri': 'http://localhost/api/charge/2', 'id': 2}]} response_json = self.get_json_from_url('/api/crime/1') self.assertEqual(response_json, expected)
def seed_db(): db.session.add( Charge(date=datetime.strptime("2020-01-23", '%Y-%m-%d'), description="Electric bill", price_amount=154, account="Savings")) db.session.commit()
def test_charge_api(self): charge1 = Charge(self.ce1, self.cr2) db.session.add_all([charge1]) db.session.commit() response_json = self.get_json_from_url('/api/charge/1') expected = {'crime': {'name': '2', 'id': 1, 'uri': 'http://localhost/api/crime/1'}, 'celebrity': {'name': '1', 'id': 1, 'uri': 'http://localhost/api/celebrity/1'}, 'classification': None, 'location': None, 'date': None, 'description': None} self.assertEqual(response_json, expected)
def test_celebrity_api(self): charge1 = Charge(self.ce1, self.cr1) charge2 = Charge(self.ce1, self.cr2) alias = CelebrityAlias("One", self.ce1) db.session.add_all([charge1, charge2, alias]) db.session.commit() expected = { 'name': '1', 'id': 1, 'charges': [{'uri': 'http://localhost/api/charge/1', 'id': 1}, {'uri': 'http://localhost/api/charge/2', 'id': 2}], 'crimes' : [{'uri': 'http://localhost/api/crime/1', 'id': 1, 'name': '1'}, {'uri': 'http://localhost/api/crime/2', 'id': 2, 'name': '2'}], 'aliases': [{'id': 1, 'alias': 'One'}], 'description': None, 'picture_url': None, 'imdb_url': None, 'wiki_url': None, 'twitter_handle' : None, 'birthday': None, } response_json = self.get_json_from_url('/api/celebrity/1') self.assertEqual(response_json, expected)
def setUp(self): self.external_url = 'http://23.253.252.30' app = get_app('testsdb') self.app = app.test_client() db.create_all() self.speeding = Crime("Speeding", "www.speeding.com", "Goin' real real fast!") self.ched = Celebrity(name='Ched', description='Actor', twitter_handle='@Ched', birthday=date(1900,1,1), wiki_url='ched.wiki', imdb_url='ched.imdb', picture_url='ched.picture') self.charge1 = Charge(date=date(2000,1,1), location='Austin, Texas', description='Driving Fast!', classification='Class A misdemeanor', crime = self.speeding, celebrity = self.ched) self.cr1 = Crime("1") self.cr2 = Crime("2") self.ce1 = Celebrity("1") self.ce2 = Celebrity("2")
def test_celebs_charges(self): charge1 = Charge(self.ce1, self.cr1) charge2 = Charge(self.ce1, self.cr1) db.session.add_all([charge1, charge2]) db.session.commit() self.assertEqual(set(self.ce1.charges), {charge1, charge2})
def test_crimes_celebs_no_dups(self): charge1 = Charge(self.ce1, self.cr1) charge2 = Charge(self.ce1, self.cr1) db.session.add_all([charge1, charge2]) db.session.commit() self.assertEqual(self.cr1.celebrities, [self.ce1])
def test_crimes_celebs(self): charge1 = Charge(self.ce1, self.cr1) charge2 = Charge(self.ce2, self.cr1) db.session.add_all([charge1, charge2]) db.session.commit() self.assertEqual(set(self.cr1.celebrities), {self.ce1, self.ce2})