Beispiel #1
0
    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
Beispiel #3
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)