Beispiel #1
0
 def test_vote_constraints(self):
     first_vote = Vote()
     first_vote.idea_id = 1
     first_vote.user_id = 1
     first_vote.value = 1
     second_vote = Vote()
     second_vote.idea_id = 1
     second_vote.user_id = 1
     second_vote.value = -1
     self.addModel(first_vote)
     with self.assertRaises(IntegrityError):
         self.addModel(second_vote)
Beispiel #2
0
def vote(p_thing=None):
    if request.method == "GET":
        votes = {}
        thing = Thing.query.filter(Thing.name.ilike(p_thing)).first()
        if not thing:
            return f"no thing '{p_thing}'", 404

        for vote in Vote.query.filter(Vote.thing_id == thing.id).all():
            votes[vote.id] = {
                "thing_id": vote.thing_id,
                "user_id": vote.user_id,
                "vote_love": vote.vote_love,
                "vote_hobby": vote.vote_hobby,
                "timestamp": vote.timestamp,
            }
        return votes

    if request.method == "POST":
        user_id = session.get("user_id")
        if user_id:
            user = User.query.get(user_id)
            if not user:
                return "no user", 400
        else:
            return "no user", 400

        thing = Thing.query.filter(Thing.name.ilike(p_thing)).first()
        if not thing:
            return f"no thing '{p_thing}'", 400

        vote_love = int(request.form.get("vote_love"))
        vote_hobby = int(request.form.get("vote_hobby"))
        thing_id = thing.id
        timestamp = datetime.utcnow()

        if vote_love not in [0, 1]:
            return f"vote_love cannot be {vote_love}", 400

        if vote_hobby not in [0, 1]:
            return f"vote_hobby cannot be {vote_hobby}", 400

        if vote_love == 0 and vote_hobby == 1:
            return f"no hobby if you do not love it, ok?!", 400

        v = Vote.query.filter(
            Vote.thing_id == thing_id, Vote.user_id == user_id
        ).first()
        if not v:
            v = Vote()
        v.user_id = user_id
        v.thing_id = thing_id
        v.vote_love = vote_love
        v.vote_hobby = vote_hobby
        v.timestamp = timestamp

        db.session.add(v)
        db.session.commit()

        return "succesful"
Beispiel #3
0
 def test_get_all_votes(self):
     self.addTestModels()
     user = User()
     user.username = '******'
     user.email = '*****@*****.**'
     self.addModel(user)
     vote = Vote()
     vote.value = 1
     vote.user_id = user.id
     vote.email = self.testIdea.id
     self.addModel(vote)
     self.assertCountEqual([vote, self.testVote], get_all_votes())
Beispiel #4
0
def init_votes():
    queried_users = db.session.query(User).filter(User.name.in_(users)).all()
    queried_ideas = db.session.query(Idea).all()
    print('creating votes and events for users.')
    for user in queried_users:
        for idea in queried_ideas:
            if random.choice([True, False]):
                vote = Vote()
                vote.value = random.choice([-1, 1])
                vote.idea_id = idea.id
                vote.user_id = user.id
                db.session.add(vote)
                db.session.commit()
                init_event(vote)
 def test_check_vote_event(self):
     self.addModel(self.testUser)
     self.testIdea.user_id = self.testUser.id
     self.addModel(self.testIdea)
     for i in range(10):
         user = User()
         user.username = str(i)
         user.email = '{}@mail.com'.format(i)
         self.addModel(user)
         vote = Vote()
         vote.idea_id = self.testIdea.id
         vote.user_id = user.id
         vote.value = 1
         self.addModel(vote)
         check_vote_event(vote)
         if i == 5:
             self.assertEqual(EventType.upvotes, Event.query.first().type)
         elif i == 10:
             self.assertEqual(EventType.votes, Event.query.first().type)