def post(self): post_data = request.get_json() if not post_data: return UTILS.api_response(msg=UTILS.INVALID_PAYLD, code=400, data=self.__name__) name = post_data.get('name') capital = post_data.get('capital') date_str = post_data.get('date') date = datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S.%f%z') try: call = CapitalCall.query \ .filter_by(name=name) \ .first() if not call: call_i = UTILS.add_capitalcall(name, capital, date=date) return UTILS.api_response(msg=UTILS.ADDED(TYPE, name), code=201, data=call_i.to_json()) else: return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name), code=400, data=call.to_json()) except exc.IntegrityError as e: db.session.rollback() return UTILS.api_response( msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}', code=400, data=f'{str(e)}')
def put(self, fund_id): put_data = request.get_json() if not put_data: return UTILS.api_response(msg=UTILS.INVALID_PAYLD, code=400) name = put_data.get('name') try: fund = Fund.query.get(fund_id) existingFunds = Fund.query.filter_by(name=name).first() if existingFunds: return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name), code=400, data=existingFunds.to_json()) if fund: fund = UTILS.update(fund, 'name', name) return UTILS.api_response(msg=UTILS.UPDATED(TYPE, name), code=200, data=fund.to_json()) else: return UTILS.api_response( msg=UTILS.NOT_EXISTS(TYPE, fund_id), code=404, ) except exc.IntegrityError as e: db.session.rollback() return UTILS.api_response( msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}', code=400, data=f'{str(e)}')
def test_update_fund_no_change(self): """Ensure correct response recieved for no change to updated fund""" fund = UTILS.add_fund('fund_1') with self.client as client: response = client.put( f'/funds/{fund.id}', data=json.dumps({ 'name': 'fund_1', }), content_type='application/json', ) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) self.assertIn(UTILS.EXISTS(TYPE, 'fund_1'), data['message'])
def test_update_capitalcall_duplicate_name(self): """Ensure error is thrown if the updated capitalcall already exists.""" capitalcall_1 = UTILS.add_capitalcall('investment_1', 100) capitalcall_2 = UTILS.add_capitalcall('investment_2', 100) with self.client as client: response = client.put( f'/capitalcalls/{capitalcall_2.id}', data=json.dumps({'name': 'investment_1'}), content_type='application/json', ) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) self.assertIn(UTILS.EXISTS(TYPE, 'investment_1'), data['message']) self.assertIn('fail', data['status']) self.assertEqual(capitalcall_1.id, data["data"]["id"])
def test_update_fund_duplicate_name(self): """Ensure error is thrown if the updated fund already exists.""" fund_1 = UTILS.add_fund("fund_1") fund_2 = UTILS.add_fund("fund_!") with self.client as client: response = client.put( f'/funds/{fund_2.id}', data=json.dumps({ 'name': 'fund_1', }), content_type='application/json', ) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) self.assertIn(UTILS.EXISTS(TYPE, 'fund_1'), data['message']) self.assertIn('fail', data['status']) self.assertEqual(fund_1.id, data["data"]["id"])
def put(self, capitalcall_id): put_data = request.get_json() if not put_data: return UTILS.api_response(msg=UTILS.INVALID_PAYLD, code=400) name = put_data.get('name') capital = put_data.get('capital') try: call = CapitalCall.query.get(capitalcall_id) existingCalls = CapitalCall.query \ .filter_by(name=name).first() if existingCalls: return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name), code=400, data=existingCalls.to_json()) if call: if (capital and (capital == call.capital)): return UTILS.api_response(msg=UTILS.NO_CHANGE( TYPE, f'{call.name}'), code=400, data=call.to_json()) if name: call = UTILS.update(call, 'name', name) if capital: call = UTILS.update(call, 'capital', capital) return UTILS.api_response( msg=UTILS.UPDATED(TYPE, name), code=200, data=CapitalCall.query.get(capitalcall_id).to_json()) else: return UTILS.api_response( msg=UTILS.NOT_EXISTS(TYPE, capitalcall_id), code=404, ) except exc.IntegrityError as e: db.session.rollback() return UTILS.api_response( msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}', code=400, data=f'{str(e)}')
def post(self): post_data = request.get_json() if not post_data: return UTILS.api_response(msg=UTILS.INVALID_PAYLD, code=400, data=self.__name__) name = post_data.get('name') try: fund = Fund.query.filter_by(name=name).first() if not fund: fund = UTILS.add_fund(name) return UTILS.api_response(msg=UTILS.ADDED(TYPE, name), code=201, data=fund.to_json()) else: return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name), code=400, data=fund.to_json()) except exc.IntegrityError as e: db.session.rollback() return UTILS.api_response( msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}', code=400, data=f'{str(e)}')