Example #1
0
    def test_set_vote(self):
        from pointing_poker.aws.repositories import sessions

        create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        participant = models.Participant(id=str(uuid4()),
                                         name='John',
                                         isModerator=True,
                                         vote=models.Vote(points=0,
                                                          abstained=True))

        repo.add_participant(session.id, participant)

        repo.set_vote(session.id, participant.id,
                      models.Vote(points=5, abstained=False))

        participant = repo.get_participant_in_session(session.id,
                                                      participant.id)

        self.assertEqual(participant.vote.points, 5)
        self.assertEqual(participant.vote.abstained, False)
Example #2
0
    def test_remove_participant(self):
        from pointing_poker.aws.repositories import sessions

        table = create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()
        participant = models.Participant(id=str(uuid4()),
                                         name='John',
                                         isModerator=True,
                                         vote=models.Vote(points=0,
                                                          abstained=True))

        session_id = str(uuid4())

        table.put_item(
            Item={
                'sessionID': str(session_id),
                'id': participant.id,
                'name': participant.name,
                'isModerator': participant.isModerator
            })

        repo.remove_participant(session_id, participant.id)

        record = table.get_item(Key={
            'sessionID': session_id,
            'id': participant.id
        })

        self.assertNotIn('Item', record)
Example #3
0
def set_vote(event, _):
    session_id = event['sessionID']
    participant_id = event['participantID']
    vote = models.Vote(points=event['vote']['points'], abstained=event['vote']['abstained'])

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).set_vote(session_id, participant_id,
                                                                                        vote).to_json()
Example #4
0
    def test_set_reviewing_issue(self):
        from pointing_poker.aws.repositories import sessions

        table = create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        repo.set_reviewing_issue(
            session.id,
            models.ReviewingIssue(
                title='My Issue',
                description='Work to do',
                url='https://example.com',
            ))

        item = table.get_item(Key={'sessionID': session.id, 'id': session.id})

        self.assertIn('Item', item)
        self.assertEqual(item['Item']['reviewingIssueTitle'], 'My Issue')
        self.assertEqual(item['Item']['reviewingIssueDescription'],
                         'Work to do')
        self.assertEqual(item['Item']['reviewingIssueURL'],
                         'https://example.com')
Example #5
0
    def test_create_session(self):
        from pointing_poker.aws.repositories import sessions

        table = create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = models.Session(
            id=str(uuid4()),
            name='test',
            pointingMax=0,
            pointingMin=1,
            votingStarted=False,
            createdAt=str(datetime.utcnow()),
            expiration=86400  # 24 hours in seconds
        )

        repo.create(session)

        record = table.get_item(Key={
            'sessionID': session.id,
            'id': session.id
        })

        self.assertEqual(record['Item']['sessionID'], session.id)
        self.assertEqual(record['Item']['id'], session.id)
        self.assertEqual(record['Item']['pointingMax'], session.pointingMax)
        self.assertEqual(record['Item']['pointingMin'], session.pointingMin)
        self.assertEqual(record['Item']['expiration'], session.expiration)
        self.assertEqual(record['Item']['votingStarted'],
                         session.votingStarted)
Example #6
0
    def test_add_participant_conflicts(self):
        from pointing_poker.aws.repositories import sessions

        create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        participant = models.Participant(id=str(uuid4()),
                                         name='John',
                                         isModerator=True,
                                         vote=models.Vote(points=0,
                                                          abstained=True))

        repo.add_participant(session.id, participant)

        try:
            repo.add_participant(session.id, participant)
        except Exception as err:
            self.assertEqual(
                err.args[0],
                f"participant with id {participant.id} already exists")
Example #7
0
    def test_add_participant(self):
        from pointing_poker.aws.repositories import sessions

        table = create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        participant = models.Participant(id=str(uuid4()),
                                         name='John',
                                         isModerator=True,
                                         vote=models.Vote(points=0,
                                                          abstained=True))

        repo.add_participant(session.id, participant)

        record = table.get_item(Key={
            'sessionID': session.id,
            'id': participant.id
        })

        self.assertEqual(record['Item']['id'], participant.id)
        self.assertEqual(record['Item']['name'], participant.name)
        self.assertEqual(record['Item']['isModerator'],
                         participant.isModerator)
Example #8
0
def join_session(event, _):
    session_id = event['sessionID']
    payload = event['participant']

    participant_description = models.ParticipantDescription(
        id=payload['id'],
        name=payload['name']
    )

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).join_session(
        session_id, participant_description).to_json()
Example #9
0
def set_reviewing_issue(event, _):
    session_id = event['sessionID']
    description = event['issue']

    issue = models.ReviewingIssueDescription(
        title=description['title'],
        description=description['description'],
        url=description['url']
    )

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).set_reviewing_issue(session_id,
                                                                                                   issue).to_json()
Example #10
0
    def test_get_missing_participant(self):
        from pointing_poker.aws.repositories import sessions

        create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        self.assertIsNone(repo.get_participant_in_session(session.id, 'bogus'))
Example #11
0
    def test_get_session(self):
        from pointing_poker.aws.repositories import sessions

        create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        record = repo.get(session.id)

        self.assertEqual(record, session)
Example #12
0
def create_session(event, _):
    payload = event['sessionDescription']

    session_description = models.SessionDescription(
        name=payload['name'],
        pointingMax=payload['pointingMax'],
        pointingMin=payload['pointingMin'],
    )

    moderator_description = models.ParticipantDescription(
        id=event['moderator']['id'],
        name=event['moderator']['name']
    )

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).create_session(
        session_description, moderator_description).to_json()
Example #13
0
    def test_set_voting_state(self):
        from pointing_poker.aws.repositories import sessions

        table = create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        repo.set_voting_state(session.id, True)

        item = table.get_item(Key={'sessionID': session.id, 'id': session.id})

        self.assertIn('Item', item)
        self.assertEqual(item['Item']['votingStarted'], True)
Example #14
0
    def test_get_session_with_participants(self):
        from pointing_poker.aws.repositories import sessions

        create_sessions_table(boto3.resource('dynamodb'))

        repo = sessions.SessionsDynamoDBRepo()

        session = session_factory()

        repo.create(session)

        participant = models.Participant(id=str(uuid4()),
                                         name='John',
                                         isModerator=True,
                                         vote=models.Vote(points=0,
                                                          abstained=True))

        repo.add_participant(session.id, participant)

        session = repo.get(session.id)

        self.assertIn(participant, session.participants)
Example #15
0
def close_session(event, _):
    session_id = event['sessionID']

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).close_session(session_id).to_json()
Example #16
0
def stop_voting(event, _):
    session_id = event['sessionID']

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).stop_voting(session_id).to_json()
Example #17
0
def participant(event, _):
    user_id = event['id']

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).participant(user_id).to_json()
Example #18
0
def leave_session(event, _):
    session_id = event['sessionID']
    participant_id = event['participantID']

    return session_service.SessionService(session_repo.SessionsDynamoDBRepo()).leave_session(session_id,
                                                                                             participant_id).to_json()
Example #19
0
    def test_get_missing_session(self):
        from pointing_poker.aws.repositories import sessions

        create_sessions_table(boto3.resource('dynamodb'))

        self.assertIsNone(sessions.SessionsDynamoDBRepo().get('bogus'))