Exemplo n.º 1
0
    def test_upload_with_affectation_to_unknown_user_with_team(
            self, app, lecture_an, user_ronan, team_zam):
        from zam_repondeur.models import Amendement, DBSession, User
        from zam_repondeur.models.events.amendement import AmendementTransfere

        with transaction.manager:
            DBSession.add(user_ronan)
            user_ronan.teams.append(team_zam)
            DBSession.add(team_zam)
            team_zam_users = team_zam.users

        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 666).first()
        assert amendement.location.user_table is None

        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 999).first()
        assert amendement.location.user_table is None

        user_melodie = (DBSession.query(User).filter_by(
            email="*****@*****.**").first())
        assert user_melodie is None
        assert "*****@*****.**" not in {
            user.email
            for user in team_zam_users
        }

        self._upload_csv(app, "reponses_with_affectation.csv", user=user_ronan)

        DBSession.add(team_zam)
        DBSession.refresh(team_zam)

        # Check the new user was created
        user_melodie = (DBSession.query(User).filter_by(
            email="*****@*****.**").first())
        assert user_melodie is not None
        assert user_melodie.email == "*****@*****.**"
        assert user_melodie.name == "Mélodie Dahi"

        # Check the new user was added to the team
        assert "*****@*****.**" in {
            user.email
            for user in team_zam.users
        }
        assert user_melodie.teams == [team_zam]

        # Check the amendement is on the new user's table
        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 666).first()
        assert amendement.location.user_table.user is user_melodie
        events = {type(event): event for event in amendement.events}
        assert AmendementTransfere in events

        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 999).first()
        assert amendement.location.user_table is None
        events = {type(event): event for event in amendement.events}
        assert AmendementTransfere not in events
Exemplo n.º 2
0
    def test_upload_backup_with_affectation_to_unknown_user_with_team(
            self, app, lecture_an, user_ronan, team_zam):
        from zam_repondeur.models import DBSession, Amendement, User
        from zam_repondeur.models.events.amendement import AmendementTransfere

        with transaction.manager:
            lecture_an.owned_by_team = team_zam
            user_ronan.teams.append(team_zam)
            DBSession.add(user_ronan)

        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 666).first()
        assert amendement.user_table is None

        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 999).first()
        assert amendement.user_table is None

        user_david2 = DBSession.query(User).filter_by(
            email="*****@*****.**").first()
        assert user_david2 is None
        assert "*****@*****.**" not in {
            user.email
            for user in team_zam.users
        }

        self._upload_backup(app,
                            "backup_with_affectation.json",
                            user=user_ronan,
                            team=team_zam)

        DBSession.add(team_zam)
        DBSession.refresh(team_zam)

        # Check the new user was created
        user_david2 = DBSession.query(User).filter_by(
            email="*****@*****.**").first()
        assert user_david2 is not None
        assert user_david2.email == "*****@*****.**"
        assert user_david2.name == "David2"

        # Check the new user was added to the team
        assert "*****@*****.**" in {user.email for user in team_zam.users}
        assert user_david2.teams == [team_zam]

        # Check the amendement is on the new user's table
        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 666).first()
        assert amendement.user_table.user is user_david2
        events = {type(event): event for event in amendement.events}
        assert AmendementTransfere in events

        amendement = DBSession.query(Amendement).filter(
            Amendement.num == 999).first()
        assert amendement.user_table is None
        events = {type(event): event for event in amendement.events}
        assert AmendementTransfere not in events