Beispiel #1
0
    def check(self):
        model_mgr = ModelRequestMgr()

        # 確認キー.
        playerrequest = BackendApi.get_model(model_mgr, PlayerRequest,
                                             self.__player0.id)
        if self.__player0.req_confirmkey == playerrequest.req_confirmkey:
            raise AppTestError(u'確認キーが更新されていない')
        elif self.__player0.req_confirmkey != playerrequest.req_alreadykey:
            raise AppTestError(u'確認済みのキーが更新されていない')

        # ハプニング.
        happeningset = BackendApi.get_happening(model_mgr, self.__raid.id)
        if happeningset.happening.state != Defines.HappeningState.END:
            raise AppTestError(u'状態が正しくない')

        # ダメージレコード.
        raidboss = BackendApi.get_raid(model_mgr, self.__raid.id)
        record = raidboss.getDamageRecord(self.__player0.id)
        if record.damage == 0 or record.damage_cnt == 0:
            raise AppTestError(u'ダメージが記録されていない')
        elif not record.champagne:
            raise AppTestError(u'シャンパンコールフラグが立っていない')

        # ダメージ.
        record_pre = self.__raid.getDamageRecord(self.__player0.id)
        if (self.__raid.raid.hp -
            (record.damage - record_pre.damage)) != raidboss.raid.hp:
            raise AppTestError(u'ダメージが正しくない')

        # 秘宝.
        playertreasure0 = PlayerTreasure.getByKey(self.__player0.id)
        if playertreasure0.cabaretking != self.__raid.get_cabaretking():
            raise AppTestError(u'キャバ王の秘宝が付与されていない')

        # 報酬.
        present_num0 = BackendApi.get_present_num(self.__player0.id)
        if self.__present_num0 == present_num0:
            raise AppTestError(u'発見者に報酬が付与されていない')

        # イベントポイント.
        scorerecord0 = BackendApi.get_raidevent_scorerecord(
            model_mgr, self.__eventmaster.id, self.__player0.id)
        pointtable = BackendApi.aggregate_raidevent_destroypoint(
            model_mgr, self.__eventmaster, raidboss)
        arr = pointtable.get(self.__player0.id)
        if not arr:
            raise AppTestError(u'発見者にイベントポイントが付与されていない')
        elif len(arr) != 2:
            raise AppTestError(u'発見者にMVPポイントが付与されていない')
        elif sum(arr) != scorerecord0.point or sum(
                arr) != scorerecord0.point_total:
            raise AppTestError(u'発見者にポイントがただしく付与されていない')

        arr = pointtable.get(self.__player1.id)
        if not arr:
            raise AppTestError(u'協力者にイベントポイントが付与されていない')

        if Defines.RAID_PRIZE_DISTRIBUTION_OUTSIDE:
            queue = RaidPrizeDistributeQueue.getValues(
                filters={'raidid': self.__raid.id})
            if queue is None:
                raise AppTestError(u'報酬配布用のキューが作成されていない')

            def write(queue, happening, raidboss, help_prizelist):
                model_mgr = ModelRequestMgr()
                BackendApi.tr_distribute_raid(model_mgr, queue, happening,
                                              raidboss, help_prizelist)
                model_mgr.write_all()
                model_mgr.write_end()

            help_prizelist = BackendApi.get_prizelist(
                model_mgr, raidboss.master.helpprizes)
            write(queue,
                  BackendApi.get_happening(model_mgr, raidboss.id).happening,
                  raidboss, help_prizelist)

        # 救援者の報酬を確認.
        present_num1 = BackendApi.get_present_num(self.__player1.id)
        if self.__present_num1 == present_num1:
            raise AppTestError(u'救援者に報酬が付与されていない')

        playertreasure1 = PlayerTreasure.getByKey(self.__player1.id)
        if 0 < self.__raid.get_demiworld(
        ) and playertreasure1.demiworld != self.__raid.get_demiworld():
            raise AppTestError(u'裏社会の秘宝が付与されていない')

        scorerecord1 = BackendApi.get_raidevent_scorerecord(
            model_mgr, self.__eventmaster.id, self.__player1.id)
        if len(arr) != 1 or sum(arr) != scorerecord1.point or sum(
                arr) != scorerecord1.point_total:
            raise AppTestError(u'協力者にポイントがただしく付与されていない')
    def check(self):
        model_mgr = ModelRequestMgr()

        # 確認キー.
        playerrequest = BackendApi.get_model(model_mgr, PlayerRequest,
                                             self.__player1.id)
        if self.__player1.req_confirmkey == playerrequest.req_confirmkey:
            raise AppTestError(u'確認キーが更新されていない')
        elif self.__player1.req_confirmkey != playerrequest.req_alreadykey:
            raise AppTestError(u'確認済みのキーが更新されていない')

        # ハプニング.
        happeningset = BackendApi.get_happening(model_mgr, self.__raid.id)
        if happeningset.happening.state != Defines.HappeningState.END:
            raise AppTestError(u'状態が正しくない')

        # ダメージレコード.
        raidboss = BackendApi.get_raid(model_mgr, self.__raid.id)
        record = raidboss.getDamageRecord(self.__player1.id)
        if record.damage == 0 or record.damage_cnt == 0:
            raise AppTestError(u'ダメージが記録されていない')
        elif not record.champagne:
            raise AppTestError(u'シャンパンコールフラグが立っていない')

        # ダメージ.
        record_pre = self.__raid.getDamageRecord(self.__player1.id)
        if (self.__raid.raid.hp -
            (record.damage - record_pre.damage)) != raidboss.raid.hp:
            raise AppTestError(u'ダメージが正しくない')

        # 秘宝.
        playertreasure1 = PlayerTreasure.getByKey(self.__player1.id)
        if 0 < self.__raid.get_demiworld(
        ) and playertreasure1.demiworld != self.__raid.get_demiworld():
            raise AppTestError(u'裏社会の秘宝が付与されていない')

        # 報酬.
        present_num1 = BackendApi.get_present_num(self.__player1.id)
        if self.__present_num1 == present_num1:
            raise AppTestError(u'救援者に報酬が付与されていない')

        # イベントポイント.
        scorerecords = BackendApi.get_raidevent_scorerecords(
            model_mgr, self.__eventmaster.id,
            [self.__player0.id, self.__player1.id])
        scorerecord0 = scorerecords.get(self.__player0.id)
        scorerecord1 = scorerecords.get(self.__player1.id)
        pointtable = BackendApi.aggregate_raidevent_destroypoint(
            model_mgr, self.__eventmaster, raidboss)
        arr = pointtable.get(self.__player0.id)
        if not arr:
            raise AppTestError(u'発見者にイベントポイントが付与されていない')
        elif len(arr) != 1 or sum(arr) != scorerecord0.point or sum(
                arr) != scorerecord0.point_total:
            raise AppTestError(u'発見者にポイントがただしく付与されていない')

        arr = pointtable.get(self.__player1.id)
        if not arr:
            raise AppTestError(u'協力者にイベントポイントが付与されていない')
        elif len(arr) != 2:
            raise AppTestError(u'協力者にMVPポイントが付与されていない')
        elif sum(arr) != scorerecord1.point or sum(
                arr) != scorerecord1.point_total:
            raise AppTestError(u'協力者にポイントがただしく付与されていない')