Add basic deck builder #12
5 changed files with 48 additions and 14 deletions
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<section class="cardpicker" :style="grid">
|
||||
<article
|
||||
@click="_picked(card.data)"
|
||||
@click="() => _picked(card.data)"
|
||||
class="ccgcard"
|
||||
v-for="(card, i) in cards"
|
||||
:key="i + card.data.ID"
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<section class="decklist">
|
||||
<article @click="_drop(card)" v-for="(card, i) in cards" :key="i">
|
||||
<article
|
||||
class="card"
|
||||
@click="() => _drop(card)"
|
||||
v-for="(card, i) in cards"
|
||||
:key="i"
|
||||
>
|
||||
<div class="amt">{{ card.howmany }}</div>
|
||||
<div class="fullname">
|
||||
<div class="name">{{ card.data.Name }}</div>
|
||||
|
@ -13,21 +18,21 @@
|
|||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "@/assets/scss/_variables";
|
||||
@import "@/assets/scss/_variables.scss";
|
||||
|
||||
.decklist {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
article {
|
||||
display: flex;
|
||||
align-content: space-between;
|
||||
align-items: center;
|
||||
border: 1px solid $grey;
|
||||
border-radius: 10px;
|
||||
padding: 5px 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.card {
|
||||
display: flex;
|
||||
align-content: space-between;
|
||||
align-items: center;
|
||||
border: 1px solid $grey;
|
||||
border-radius: 10px;
|
||||
padding: 5px 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fullname {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import CardPicker from "@/components/DeckBuilder/CardPicker.vue";
|
||||
import { shallowMount } from "@vue/test-utils";
|
||||
import { CardSlot } from "@/mlpccg";
|
||||
|
||||
// Generate 10 test cards
|
||||
const testCards = new Array(10)
|
||||
|
|
30
src/tests/unit/components/DeckList.spec.ts
Normal file
30
src/tests/unit/components/DeckList.spec.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
import DeckList from "@/components/DeckBuilder/DeckList.vue";
|
||||
import { shallowMount } from "@vue/test-utils";
|
||||
|
||||
// Generate 10 test cards
|
||||
const testCards = new Array(3).fill("test").map((t, i) => ({
|
||||
ID: `test${i}`,
|
||||
Name: `Test name ${i}`,
|
||||
Subname: `Subname ${i}`
|
||||
}));
|
||||
const testSlots = testCards.map((c, i) => ({ data: c, limit: 3, howmany: i }));
|
||||
|
||||
describe("components/DeckBuilder/CardPicker", () => {
|
||||
test("DeckList correctly detects card info", () => {
|
||||
const wrapper = shallowMount(DeckList, {
|
||||
propsData: {
|
||||
cards: testSlots
|
||||
}
|
||||
});
|
||||
const cards = wrapper.findAll(".card");
|
||||
expect(cards.contains(".fullname")).toBe(true);
|
||||
for (let index = 0; index < testSlots.length; index++) {
|
||||
const item = cards.at(index);
|
||||
const card = testSlots[index];
|
||||
expect(item.find(".amt").text()).toEqual(`${card.howmany}`);
|
||||
expect(item.find(".fullname .name").text()).toEqual(card.data.Name);
|
||||
expect(item.find(".fullname .subname").text()).toEqual(card.data.Subname);
|
||||
//TODO Add more fields check as they are added
|
||||
}
|
||||
});
|
||||
});
|
|
@ -64,7 +64,7 @@
|
|||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "@/assets/scss/_variables";
|
||||
@import "@/assets/scss/_variables.scss";
|
||||
|
||||
.deckbuilder {
|
||||
background: url("../assets/images/backgrounds/deckbuilderbg.webp") center;
|
||||
|
|
Loading…
Reference in a new issue