コード例 #1
0
    def test_synchronize_required_cards(self):
        archetype = Archetype(
            name="Mecha'thun Druid",
            player_class=CardClass.DRUID,
        )
        archetype.save()
        archetype.required_cards.add(Card.objects.get(dbf_id=836))
        archetype.required_cards.add(Card.objects.get(dbf_id=1124))

        cluster_set = ClusterSetSnapshot(game_format=FormatType.FT_STANDARD,
                                         live_in_production=True)
        cluster_set.save()

        class_cluster = ClassClusterSnapshot(cluster_set=cluster_set,
                                             player_class=CardClass.DRUID)
        class_cluster.save()

        cluster = ClusterSnapshot(class_cluster=class_cluster,
                                  cluster_id=1,
                                  external_id=archetype.id,
                                  required_cards=[48625],
                                  ccp_signature=MECHATHUN_DRUID)
        cluster.save()

        cluster_set.synchronize_required_cards()

        assert archetype.required_cards.count() == 1
        assert archetype.required_cards.first() == Card.objects.get(
            dbf_id=48625)
コード例 #2
0
def test_update_replay_feed_deleted_user(mocker, user):
    game = GlobalGame(format=FormatType.FT_STANDARD,
                      game_type=BnetGameType.BGT_RANKED_STANDARD,
                      match_end=timezone.now())
    game.save()

    archetype = Archetype(name="Test Archetype",
                          player_class=CardClass.WARRIOR)
    archetype.save()

    deck = Deck(archetype=archetype)
    deck.save()

    _create_player("Test 1", 1, deck, game)
    _create_player("Test 2", 2, deck, game)

    replay = GameReplay(global_game=game, user=user)
    replay.save()

    user.delete()

    mock_replay_feed = Mock()
    mocker.patch("hsreplaynet.games.processing.get_replay_feed",
                 new=lambda comparator: mock_replay_feed)

    update_replay_feed(replay)
    mock_replay_feed.push.assert_called_once_with({
        "id":
        ANY,
        "player1_archetype":
        archetype.id,
        "player1_legend_rank":
        None,
        "player1_rank":
        25,
        "player1_won":
        False,
        "player2_archetype":
        archetype.id,
        "player2_legend_rank":
        None,
        "player2_rank":
        25,
        "player2_won":
        False
    })
コード例 #3
0
    def test_patch_with_archetype_id(self, client):
        archetype = Archetype(
            name="Mecha'thun Druid",
            player_class=CardClass.DRUID,
        )
        archetype.save()
        archetype.required_cards.add(Card.objects.get(dbf_id=48625))

        response = client.patch(
            f"/analytics/clustering/data/{self.cluster_set.id}/{self.cluster.cluster_id}/",
            data=json.dumps({"archetype_id": archetype.id}))

        assert response.status_code == 200

        self.cluster.refresh_from_db()

        assert self.cluster.external_id == archetype.id
        assert self.cluster.name == "Mecha'thun Druid"
        assert self.cluster.required_cards == [48625]
コード例 #4
0
ファイル: test_views.py プロジェクト: Taobanshua/HDT
	def test_patch_with_archetype_id_merge(self, client):
		archetype = Archetype(
			name="Mecha'thun Druid",
			player_class=CardClass.DRUID,
		)
		archetype.save()
		archetype.required_cards.add(Card.objects.get(dbf_id=48625))

		existing_cluster = ClusterSnapshot(
			class_cluster=self.class_cluster,
			cluster_id=2,
			data_points=[{
				"x": 0,
				"y": 0,
				"cards": _get_deck_from_deckstring(
					"AAECAZICBFaHzgKZ0wLx+wINQF/pAf4BxAbkCKDNApTSApjSAp7SAtvTAoTmAr/yAgA="
				),
				"observations": 1
			}],
			external_id=archetype.id,
			name=archetype.name,
			required_cards=[48625],
			signature=MECHATHUN_DRUID
		)
		existing_cluster.save()

		response = client.patch(
			f"/clusters/latest/FT_STANDARD/DRUID/{self.cluster.cluster_id}/",
			data=json.dumps({
				"archetype_id": archetype.id
			})
		)

		assert response.status_code == 200

		assert ClusterSnapshot.objects.filter(pk=self.cluster.id).count() == 0
		assert ClusterSnapshot.objects.filter(pk=existing_cluster.id).count() == 0

		new_cluster = ClusterSnapshot.objects.filter(external_id=archetype.id).first()

		assert new_cluster.name == archetype.name
		assert new_cluster.required_cards == [48625]
コード例 #5
0
def _create_deck(deckstring, archetype_id=None):
    cards, heroes, format = parse_deckstring(deckstring)

    card_ids = []
    for card in cards:
        for _ in range(card[1]):
            card_ids.append(Card.objects.get(dbf_id=card[0]).id)

    deck_list, _ = Deck.objects.get_or_create_from_id_list(
        card_ids,
        hero_id=heroes[0],
        game_type=BnetGameType.BGT_RANKED_STANDARD)

    if archetype_id:
        archetype = Archetype(id=archetype_id)
        archetype.save()

        deck_list.archetype = archetype
        deck_list.save()

    return deck_list
コード例 #6
0
    WRATH_POPULARITY_DATA)

from hsreplaynet.api.partner.serializers import (
    ArchetypeDataSerializer, ArchetypeSerializer, CardDataDeckSerializer,
    CardDataSerializer, CardSerializer, ClassArchetypeStatsSerializer,
    ClassArchetypeSummarySerializer, ClassSerializer, InvalidCardException)
from hsreplaynet.decks.models import Archetype

EXPLODED_DECK_DATA = {
    836: {
        1: TEST_DRUID_DECK_WRATH_1,
        2: TEST_DRUID_DECK_WRATH_2
    }
}

TOKEN_DRUID_ARCHETYPE = Archetype(id=7, name="Token Druid", player_class=2)

TOKEN_DRUID_STATS = {
    "archetype_id": 7,
    "pct_of_class": 21.6,
    "pct_of_total": 3.37,
    "total_games": 253279,
    "win_rate": 53.6
}

SPITEFUL_DRUID_ARCHETYPE = Archetype(id=205,
                                     name="Spiteful Druid",
                                     player_class=2)

SPITEFUL_DRUID_STATS = {
    "archetype_id": 205,