def test_create_meal(self): ENTRY_DATETIME = "Mon, 26 Nov 2018 04:00:00 -0000" response = self.test_client.post( '/api/meals', headers={'Authorization': 'Bearer ' + self.user_token.jwt_token}, json={ 'meal': { 'owner_user_id': self.user.id, 'text': "yummy yummy", 'entry_datetime': ENTRY_DATETIME, 'calories': 400, } }) eq_(response.status_code, 200) self.assert_json( response.json, { 'meal': { 'id': response.json['meal']['id'], 'owner_user_id': self.user.id, 'text': "yummy yummy", 'entry_datetime': ENTRY_DATETIME, 'calories': 400, } }) meal = Meal.get_by_id(response.json['meal']['id']) ok_(meal) eq_(format_datetime(meal.entry_datetime), ENTRY_DATETIME)
def test_meal_get_by_id(self): meal = self.create_meal() meal.save() queried_meal = Meal.get_by_id(meal.id) eq_(queried_meal.id, meal.id) eq_(queried_meal.owner_user_id, meal.owner_user_id) eq_(queried_meal.text, meal.text) eq_(queried_meal.calorie_count, meal.calorie_count) eq_(queried_meal.entry_datetime, meal.entry_datetime) meal.delete() meal.save() queried_meal = Meal.get_by_id(meal.id) assert queried_meal is None
def get(self, meal_id): meal = Meal.get_by_id(meal_id) if meal is None: abort(404) if meal.owner_user_id != g.user.id and not g.user.is_admin: abort(401) return meal
def test_meal_create(self): DATETIME = datetime.now().replace(microsecond=0) meal = Meal.create(owner_user_id=self.user.id, text="Greatest Meal Ever", entry_datetime=DATETIME.isoformat(), calorie_count=9001) meal = Meal.get_by_id(meal.id) eq_(meal.owner_user_id, self.user.id) eq_(meal.text, "Greatest Meal Ever") eq_(meal.entry_datetime, DATETIME) eq_(meal.entry_time, DATETIME.time()) eq_(meal.entry_date, DATETIME.date()) eq_(meal.calorie_count, 9001)
def test_update_meal(self): meal = self._create_meal() old_meal_text = meal.text old_entry_datetime = meal.entry_datetime old_calories = meal.calorie_count old_owner_user_id = meal.owner_user_id new_owner_user_id = 5 new_text = "Yabadaba doo" new_entry_datetime = "Tue, 27 Nov 2018 04:00:00 -0000" new_calories = 808 assert old_meal_text != new_text assert old_entry_datetime != new_entry_datetime assert old_calories != new_calories assert meal.owner_user_id != new_owner_user_id update_payload = self._create_meal_request_payload( id=meal.id, owner_user_id=new_owner_user_id, text=new_text, entry_datetime=new_entry_datetime, calories=new_calories, ) response = self.test_client.put( '/api/meals/{}'.format(meal.id), headers={'Authorization': 'Bearer ' + self.user_token.jwt_token}, json=update_payload) expected_payload = self._create_meal_request_payload( **update_payload['meal']) expected_payload['meal']['owner_user_id'] = old_owner_user_id eq_(response.status_code, 200) self.assert_json(response.json, expected_payload) meal_record = Meal.get_by_id(meal.id) eq_(meal_record.text, new_text) eq_(meal_record.calorie_count, new_calories) eq_(meal_record.owner_user_id, old_owner_user_id) self.assert_datetime(meal_record.entry_datetime, new_entry_datetime)
def put(self, meal_id): properties_to_update = request.get_json() if properties_to_update is None: abort(400) meal = Meal.get_by_id(meal_id) if meal is None: abort(404) if meal.owner_user_id != g.user.id and not g.user.is_admin: abort(401) props = properties_to_update['meal'].copy() props['calorie_count'] = props['calories'] meal.update(**props) meal.save() return meal
def test_meal_update(self): meal = self.create_meal() new_text = "It could be any meal" new_entry_datetime = datetime.now() + timedelta(days=5) new_entry_datetime = new_entry_datetime.replace(microsecond=0) new_calories = 9090 meal.update( text=new_text, entry_datetime=new_entry_datetime.isoformat(), calorie_count=new_calories, ) queries_meal = Meal.get_by_id(meal.id) eq_(queries_meal.owner_user_id, meal.owner_user_id) eq_(queries_meal.text, new_text) eq_(queries_meal.entry_datetime, new_entry_datetime) eq_(queries_meal.calorie_count, new_calories)