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)
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 })
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]
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]
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
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,