Skip to content

Commit

Permalink
start testing PreDefMoneyflow drop-down
Browse files Browse the repository at this point in the history
  • Loading branch information
OlliL committed Jul 20, 2024
1 parent bbdda98 commit 39f55cc
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 5 deletions.
2 changes: 2 additions & 0 deletions src/components/InputStandard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
v-model="fieldValue"
ref="fieldRef"
:id="id"
:data-testid="id"
:type="fieldType"
:class="'form-control ' + alignmentClass + ' ' + errorData.inputClass"
:disabled="disabled"
Expand All @@ -23,6 +24,7 @@
v-model="fieldValue"
ref="fieldRef"
:id="id"
:data-testid="id"
:type="fieldType"
:class="'form-control ' + alignmentClass + ' ' + errorData.inputClass"
:disabled="disabled"
Expand Down
4 changes: 1 addition & 3 deletions src/components/moneyflow/EditMoneyflowBase.vue
Original file line number Diff line number Diff line change
Expand Up @@ -643,9 +643,7 @@ const importImportedMoneyflow = async (
bankCodeCapitalsource: mim.bankCodeCapitalsource,
};
return ImportedMoneyflowService.importImportedMoneyflow(
importedMoneyflow,
)
return ImportedMoneyflowService.importImportedMoneyflow(importedMoneyflow)
.then(() => {
followUpServerCall();
return true;
Expand Down
100 changes: 99 additions & 1 deletion src/tests/views/moneyflow/CreateMoneyflow.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
import type { PreDefMoneyflow } from "@/model/moneyflow/PreDefMoneyflow";
import { render, screen, waitFor } from "@testing-library/vue";
import { fireEvent, render, screen, waitFor } from "@testing-library/vue";
import { expect, test, vi } from "vitest";
import PreDefMoneyflowService from "@/service/PreDefMoneyflowService";
import CreateMoneyflow from "@/views/moneyflow/CreateMoneyflow.vue";
import type { Contractpartner } from "@/model/contractpartner/Contractpartner";
import type { PostingAccount } from "@/model/postingaccount/PostingAccount";
import PostingAccountService from "@/service/PostingAccountService";
import type { Capitalsource } from "@/model/capitalsource/Capitalsource";
import { CapitalsourceType } from "@/model/capitalsource/CapitalsourceType";
import { CapitalsourceState } from "@/model/capitalsource/CapitalsourceState";
import { CapitalsourceImport } from "@/model/capitalsource/CapitalsourceImport";
import ContractpartnerService from "@/service/ContractpartnerService";
import CapitalsourceService from "@/service/CapitalsourceService";
import { StoreService } from "@/stores/StoreService";
import { nextTick } from "vue";

test("component renders", async () => {
const preDefMoneyflows: PreDefMoneyflow[] = [];
Expand Down Expand Up @@ -32,3 +43,90 @@ test("component renders", async () => {
expect(screen.getAllByTestId("splitEntryRowDeleteButton")).toHaveLength(3),
);
});

test("PreDefMoneyflow Handling", async () => {
const postingAccount: PostingAccount = {
id: 1,
name: "Posting Account 1",
} as PostingAccount;

const contractpartner: Contractpartner = {
id: 1,
userId: 1,
name: "Contractpartner 1",
street: "Street 1",
postcode: 11111,
town: "Town 1",
validTil: new Date("2999-12-01"),
validFrom: new Date("2000-01-01"),
country: "Germany",
moneyflowComment: "Contractpartner Comment 1",
postingAccountId: 1,
postingAccountName: "Posting Account 1",
} as Contractpartner;

const capitalsource: Capitalsource = {
id: 1,
userId: 1,
type: CapitalsourceType.CURRENT_ASSET,
state: CapitalsourceState.CACHE,
comment: "cash",
validTil: new Date("2999-12-01"),
validFrom: new Date("2000-01-01"),
groupUse: false,
importAllowed: CapitalsourceImport.NOT_ALLOWED,
} as Capitalsource;

const initPostingAccountStoreSpy = vi
.spyOn(PostingAccountService, "fetchAllPostingAccount")
.mockReturnValue(Promise.resolve([postingAccount]));
const initContractpartnerStoreSpy = vi
.spyOn(ContractpartnerService, "fetchAllContractpartner")
.mockReturnValue(Promise.resolve([contractpartner]));
const initCapitalsourceStoreSpy = vi
.spyOn(CapitalsourceService, "fetchAllCapitalsource")
.mockReturnValue(Promise.resolve([capitalsource]));

await StoreService.getInstance().initAllStores();

expect(initPostingAccountStoreSpy).toHaveBeenCalledOnce();
expect(initContractpartnerStoreSpy).toHaveBeenCalledOnce();
expect(initCapitalsourceStoreSpy).toHaveBeenCalledOnce();

const preDefMoneyflow: PreDefMoneyflow = {
id: 1,
userId: 1,
amount: 20.4,
capitalsourceId: 1,
contractpartnerId: 1,
contractpartnerName: "Contractpartner 1",
comment: "PreDefMoneyflow Comment 1",
createDate: new Date("2010-01-01"),
onceAMonth: false,
postingAccountId: 1,
} as PreDefMoneyflow;

const fetchAllPreDefMoneyflowSpy = vi
.spyOn(PreDefMoneyflowService, "fetchAllPreDefMoneyflow")
.mockReturnValue(Promise.resolve([preDefMoneyflow]));

render(CreateMoneyflow);

expect(fetchAllPreDefMoneyflowSpy).toHaveBeenCalledOnce();

const optionPreDef1: HTMLOptionElement = await screen.findByText(
"Contractpartner 1 | 20.40 € | PreDefMoneyflow Comment 1",
);
optionPreDef1.click();

fireEvent.change(optionPreDef1.parentElement as HTMLSelectElement, {
target: { value: 1 },
});

await waitFor(() => {
expect(optionPreDef1.selected).toBeTruthy();
});

const amountInput: HTMLInputElement = screen.getByTestId("amount");
expect(amountInput.value === "20.4").toBeTruthy();
});
2 changes: 1 addition & 1 deletion src/views/moneyflow/CreateMoneyflow.vue
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ const serverErrors = ref(new Array<string>());
const preDefMoneyflows = ref(new Array<PreDefMoneyflow>());
const preDefMoneyflowId = ref(0);
const selectedPreDefMoneyflow = ref({} as PreDefMoneyflow | undefined);
const selectedPreDefMoneyflow = ref(undefined as PreDefMoneyflow | undefined);
const editMoneyflowVue = ref();
const { handleSubmit, values, setFieldTouched } = useForm();
Expand Down

0 comments on commit 39f55cc

Please sign in to comment.