Ejemplo n.º 1
0
 def check(self):
     playerrequest = PlayerRequest.getByKey(self.__player.id)
     # プレイ情報.
     playdata = GachaPlayData.getByKey(GachaPlayData.makeID(self.__player.id, self.__gachamaster.boxid))
     playcount = GachaPlayCount.getByKey(GachaPlayCount.makeID(self.__player.id, self.__gachamaster.id))
     
     if playerrequest.req_confirmkey == self.__player.req_confirmkey or playerrequest.req_alreadykey != self.__player.req_confirmkey:
         raise AppTestError(u'ガチャプレイ情報の確認キーが更新されていない')
     elif playcount.getTodayPlayCnt() < 1:
         raise AppTestError(u'ガチャプレイ回数が増えていない.%d, %d, %s' % (playcount.getTodayPlayCnt(), playcount.cnt, playcount.ptime))
     
     # BOX確認.
     box = GachaBox(self.__gachamaster, playdata)
     if box.get_rest_num() != 1:
         raise AppTestError(u'BOXのカードがうまく消費されていない.%d' % box.get_rest_num())
     
     # カードが増えているか.
     cardnum = BackendApi.get_cardnum(self.__player.id)
     if cardnum != self.__gachamaster.continuity:
         raise AppTestError(u'カード枚数がおかしい %d vs %d' % (cardnum, self.__gachamaster.continuity))
     elif cardnum != len(playdata.result['result']):
         raise AppTestError(u'ガチャの結果の長さがおかしい %d vs %d' % (cardnum, len(playdata.result['result'])))
     
     # おまけが来ているか.
     present_num = BackendApi.get_present_num(self.__player.id)
     if present_num < 1:
         raise AppTestError(u'おまけが来ていない')
     
     # チケット消費確認.
     playergachapt = PlayerGachaPt.getByKey(self.__player.id)
     if 0 < playergachapt.tryluckticket:
         raise AppTestError(u'チケットを消費していない')
Ejemplo n.º 2
0
    def check(self):
        keys = ('redirect_url', )
        for k in keys:
            if not self.response.has_key(k):
                raise AppTestError(u'%sが設定されていない')

        # 鍵の更新確認.
        playerrequest = PlayerRequest.getByKey(self.__player0.id)
        if playerrequest.req_confirmkey == self.__player0.req_confirmkey:
            raise AppTestError(u'鍵が更新されていない')
        elif playerrequest.req_alreadykey != self.__player0.req_confirmkey:
            raise AppTestError(u'使用済みの鍵が更新されていない')

        # プレゼント数確認.
        if BackendApi.get_present_num(self.__player0.id) == self.__present_num:
            raise AppTestError(u'報酬が付与されていない')

        # ポイントのリセット確認.
        userdata = BattleEventPresentData.getByKey(
            BattleEventPresentData.makeID(self.__player0.id,
                                          self.__eventmaster.id))
        if 0 < userdata.point:
            raise AppTestError(u'ポイントがリセットされていない')

        # 贈り物設定確認.
        if userdata.getData() is None:
            raise AppTestError(u'次の贈り物を設定していない')

        org_data = self.__presentdata.getData()
        data = userdata.getPreData()
        if data is None:
            raise AppTestError(u'前回の結果が設定されていない')
        elif data['number'] != org_data['number'] or data[
                'content'] != org_data['content']:
            raise AppTestError(u'前回の結果の内容が想定外です')
Ejemplo n.º 3
0
    def check(self):

        playerrequest = PlayerRequest.getByKey(self.__player.id)
        if playerrequest.req_confirmkey == self.__player.req_confirmkey:
            raise AppTestError(u'確認キーが更新されていない')
        elif playerrequest.req_alreadykey != self.__player.req_confirmkey:
            raise AppTestError(u'確認済みのキーが正しく設定されていない')

        # 秘宝.
        playertreasure = PlayerTreasure.getByKey(self.__player.id)
        cabaretking = playertreasure.get_cabaretking_num()
        if cabaretking == self.__treasurenum:
            raise AppTestError(u'キャバ王の秘宝所持数が減っていない')
        elif cabaretking != (self.__treasurenum -
                             self.__trade.rate_cabaretking):
            raise AppTestError(u'キャバ王の秘宝所持数が正しくない')

        # チケット数.
        playergachapt = PlayerGachaPt.getByKey(self.__player.id)
        ticketnum = BackendApi.get_num_by_itemtype(ModelRequestMgr(),
                                                   playergachapt,
                                                   self.__trade.itype)
        if ticketnum == self.__ticketnum:
            raise AppTestError(u'チケットの所持数が変わっていない')
        elif ticketnum != (self.__ticketnum + self.__trade.itemnum):
            raise AppTestError(u'チケットの所持数が正しくない')
Ejemplo n.º 4
0
 def check(self):
     model_mgr = ModelRequestMgr()
     
     playerrequest = PlayerRequest.getByKey(self.__player.id)
     compositiondata = CompositionData.getByKey(self.__player.id)
     basecard = BackendApi.get_cards([self.__basecard.id], model_mgr)[0]
     
     # 結果が保存されているか.
     if compositiondata is None or playerrequest.req_alreadykey != self.__requestkey:
         raise AppTestError(u'結果が保存されていない')
     # 結果が正しいか.
     for att in ('mid', 'exp', 'level', 'skilllevel', 'takeover'):
         if getattr(compositiondata, att) != getattr(self.__basecard.card, att):
             raise AppTestError(u'合成前の状態が正しくない')
     
     # お金が減っているか.
     playergold = PlayerGold.getByKey(self.__player.id)
     if playergold.gold != 0:
         raise AppTestError(u'お金が正しくない')
     
     # 経験値が正しいか.
     exp = compositiondata.result_exp
     if (basecard.card.exp - self.__basecard.card.exp) != exp:
         raise AppTestError(u'経験値が正しくない')
     
     # レベルが正しいか.
     if compositiondata.result_flag_great_success:
         if compositiondata.result_lvup != 2 or basecard.card.level != 3:
             raise AppTestError(u'レベルが正しくない[大成功]')
     else:
         if compositiondata.result_lvup != 1 or basecard.card.level != 2:
             raise AppTestError(u'レベルが正しくない[成功]')
     
     materialidlist = [materialcard.id for materialcard in self.__materialcardlist]
     # 素材が消えているか.
     materiallist = BackendApi.get_cards(materialidlist, model_mgr, deleted=False)
     if materiallist:
         raise AppTestError(u'素材が消えていない')
     
     # 消えた素材が保存されているか.
     materiallist = BackendApi.get_cards(materialidlist, model_mgr, deleted=True)
     if len(materiallist) != len(materialidlist):
         raise AppTestError(u'削除済みデータが作られていない')
Ejemplo n.º 5
0
    def check(self):
        model_mgr = ModelRequestMgr()
        # 課金情報.
        entry = BackendApi.get_gachapaymententry(model_mgr,
                                                 self.__payment_entry.id)
        if entry is None:
            raise AppTestError(u'課金レコードが作成されていない')
        elif entry.state != PaymentData.Status.COMPLETED:
            raise AppTestError(u'課金ステータスが異常です.status=%s' % entry.state)

        playerrequest = PlayerRequest.getByKey(self.__player.id)
        # プレイ情報.
        playdata = GachaPlayData.getByKey(
            GachaPlayData.makeID(self.__player.id, self.__gachamaster.boxid))
        playcount = GachaPlayCount.getByKey(
            GachaPlayCount.makeID(self.__player.id, self.__gachamaster.id))

        if playerrequest.req_confirmkey == self.__player.req_confirmkey or playerrequest.req_alreadykey != self.__player.req_confirmkey:
            raise AppTestError(u'ガチャプレイ情報の確認キーが更新されていない')
        elif playcount.getTodayPlayCnt() < 1:
            raise AppTestError(
                u'ガチャプレイ回数が増えていない.%d, %d, %s' %
                (playcount.getTodayPlayCnt(), playcount.cnt, playcount.ptime))

        # BOX確認.
        box = GachaBox(self.__gachamaster, playdata)
        if box.get_rest_num() != 1:
            raise AppTestError(u'BOXのカードがうまく消費されていない.%d' % box.get_rest_num())

        # カードが増えているか.
        cardnum = BackendApi.get_cardnum(self.__player.id)
        tmp_card_num = min(self.__cardnum + entry.continuity,
                           self.__player.cardlimit)
        if tmp_card_num != cardnum:
            raise AppTestError(u'カード枚数がおかしい %d vs %d' %
                               (self.__cardnum, cardnum))

        # おまけが来ているか.
        present_num = BackendApi.get_present_num(self.__player.id)
        if (self.__present_num + self.__gachamaster.continuity) == present_num:
            raise AppTestError(u'おまけが来ていない')
Ejemplo n.º 6
0
    def check(self):
        model_mgr = ModelRequestMgr()

        playerrequest = PlayerRequest.getByKey(self.__player.id)
        evolutiondata = EvolutionData.getByKey(self.__player.id)
        basecard = BackendApi.get_cards([self.__basecard.id], model_mgr)[0]

        # 結果が保存されているか.
        if evolutiondata is None or playerrequest.req_alreadykey != self.__requestkey:
            raise AppTestError(u'結果が保存されていない')
        # 結果が正しいか.
        for att in ('mid', 'exp', 'level', 'skilllevel', 'takeover'):
            if getattr(evolutiondata, att) != getattr(self.__basecard, att):
                raise AppTestError(u'合成前の状態が正しくない')

        # 進化しているか.
        if basecard.card.mid != self.__evolcardmaster.id:
            raise AppTestError(u'進化していない')
        elif basecard.card.level != 1 or 0 < basecard.card.exp:
            raise AppTestError(u'経験値が残っている')

        # お金が減っているか.
        playergold = PlayerGold.getByKey(self.__player.id)
        if playergold.gold != 0:
            raise AppTestError(u'お金が正しくない')

        materialid = self.__materialcard.id
        # 素材が消えているか.
        materiallist = BackendApi.get_cards([materialid],
                                            model_mgr,
                                            deleted=False)
        if materiallist:
            raise AppTestError(u'素材が消えていない')

        # 消えた素材が保存されているか.
        materiallist = BackendApi.get_cards([materialid],
                                            model_mgr,
                                            deleted=True)
        if len(materiallist) != 1:
            raise AppTestError(u'削除済みデータが作られていない')
Ejemplo n.º 7
0
    def check(self):
        playerrequest = PlayerRequest.getByKey(self.__player.id)
        if playerrequest.req_confirmkey == self.__player.req_confirmkey:
            raise AppTestError(u'確認キーが更新されていない')
        elif playerrequest.req_alreadykey != self.__player.req_confirmkey:
            raise AppTestError(u'確認済みのキーが正しく設定されていない')

        # 秘宝.
        playertreasure = PlayerTreasure.getByKey(self.__player.id)
        cabaretking = playertreasure.get_cabaretking_num()
        if cabaretking == self.__treasurenum:
            raise AppTestError(u'キャバ王の秘宝所持数が減っていない')
        elif cabaretking != (self.__treasurenum -
                             self.__trade.rate_cabaretking):
            raise AppTestError(u'キャバ王の秘宝所持数が正しくない')

        # アイテム数.
        itemnum = BackendApi.get_item_nums(ModelRequestMgr(), self.__player.id,
                                           [self.__itemmaster.id]).get(
                                               self.__itemmaster.id, 0)
        if itemnum == self.__itemnum:
            raise AppTestError(u'アイテムの所持数が変わっていない')
        elif itemnum != (self.__itemnum + self.__trade.itemnum):
            raise AppTestError(u'アイテムの所持数がおかしい')
Ejemplo n.º 8
0
    def check(self):
        model_mgr = ModelRequestMgr()
        # 課金情報.
        entry = BackendApi.get_gachapaymententry(model_mgr,
                                                 self.__payment_entry.id)
        if entry is None:
            raise AppTestError(u'課金レコードが作成されていない')
        elif entry.state != PaymentData.Status.COMPLETED:
            raise AppTestError(u'課金ステータスが異常です.status=%s' % entry.state)

        playerrequest = PlayerRequest.getByKey(self.__player.id)
        # プレイ情報.
        playdata = GachaPlayData.getByKey(
            GachaPlayData.makeID(self.__player.id, self.__gachamaster.boxid))
        playcount = GachaPlayCount.getByKey(
            GachaPlayCount.makeID(self.__player.id, self.__gachamaster.id))

        if playerrequest.req_confirmkey == self.__player.req_confirmkey or playerrequest.req_alreadykey != self.__player.req_confirmkey:
            raise AppTestError(u'ガチャプレイ情報の確認キーが更新されていない')
        elif playcount.getTodayPlayCnt() < 1:
            raise AppTestError(
                u'ガチャプレイ回数が増えていない.%d, %d, %s' %
                (playcount.getTodayPlayCnt(), playcount.cnt, playcount.ptime))

        # BOX確認.
        box = GachaBox(self.__gachamaster, playdata)
        if box.get_rest_num() != 1:
            raise AppTestError(u'BOXのカードがうまく消費されていない.%d' % box.get_rest_num())

        # カードが増えているか.
        cardnum = BackendApi.get_cardnum(self.__player.id)
        tmp_card_num = min(self.__cardnum + entry.continuity,
                           self.__player.cardlimit)
        if tmp_card_num != cardnum:
            raise AppTestError(u'カード枚数がおかしい %d vs %d' %
                               (self.__cardnum, cardnum))

        # おまけが来ているか.
        present_num = BackendApi.get_present_num(self.__player.id)
        if (self.__present_num + self.__gachamaster.continuity) == present_num:
            raise AppTestError(u'おまけが来ていない')

        # ランキングスコア情報.
        scoredata = RankingGachaScore.getByKey(
            RankingGachaScore.makeID(self.__player.id,
                                     self.__rankingmaster.id))
        if scoredata is None:
            raise AppTestError(u'ランキングのスコア情報が作成されていない')

        point = self.__gachamaster.continuity * ApiTest.RANKING_POINT
        # 累計Pt.
        if scoredata.total != point:
            raise AppTestError(u'累計Ptが正しくない.%d vs %d' %
                               (scoredata.total, point))

        # 単発Pt.
        if scoredata.single != point:
            raise AppTestError(u'単発Ptが正しくない.%d vs %d' %
                               (scoredata.single, point))

        # 総計Pt.
        if scoredata.firstpoint != point:
            raise AppTestError(u'初回総計Ptが正しくない.%d vs %d' %
                               (scoredata.firstpoint, point))

        wholedata = RankingGachaWholeData.getByKey(self.__rankingmaster.id)
        if wholedata is None:
            raise AppTestError(u'総計Ptが保存されていない')
        elif wholedata.point != point:
            raise AppTestError(u'総計Ptが正しくない.%d vs %d' %
                               (wholedata.point, point))

        # 総計Pt達成報酬用のキュー.
        queue_cnt = RankingGachaWholePrizeQueue.count()
        if (self.__queue_cnt + 1) != queue_cnt:
            raise AppTestError(u'総計Pt達成報酬のキューが正しく積まれていない.%d vs %d' %
                               (self.__queue_cnt + 1, queue_cnt))