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)
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"
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())
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)