Skip to content

Commit 5c7a4d9

Browse files
author
Martynas Žilinskas
authored
Updated tests (#74)
* Updated form tests. Added needed devDependencies. * Added BaseFieldsGroup tests. * Updated BaseFieldTests. * Added register a field with different value types (Initial, Default, value). * Added text test. Changed from currentTarget to target in GetValueFromEvent. * Updated clear test: from sinon spy to stub where needed. * Added Test render check for text field. * Updated gulp and undertaker types version. * Updated tests with transitionalValue. * Added noEmitHelpers in simplr-validation.
1 parent afc8139 commit 5c7a4d9

File tree

9 files changed

+190
-47
lines changed

9 files changed

+190
-47
lines changed

packages/simplr-forms-dom/__tests__/components/clear.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ describe("Clear button", () => {
2020
});
2121

2222
it("clears all fields", () => {
23-
const callback = sandbox.spy(FormStore.prototype, "ClearFields");
23+
const callback = sandbox.stub(FormStore.prototype, "ClearFields");
2424

2525
const wrapper = mount(<Form>
2626
<Text name="field" />
@@ -33,7 +33,7 @@ describe("Clear button", () => {
3333
});
3434

3535
it("clears fields by fieldsIds", () => {
36-
const callback = sandbox.spy(FormStore.prototype, "ClearFields");
36+
const callback = sandbox.stub(FormStore.prototype, "ClearFields");
3737
let fieldsIds: string[] = [];
3838
for (let i = 0; i < 5; i++) {
3939
fieldsIds.push(`text-${i}`);

packages/simplr-forms-dom/__tests__/components/form.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ describe("Form", () => {
3030
mount(<Form formId={formId} onSubmit={submitCallback}></Form>);
3131

3232
const formStore = FSHContainer.FormStoresHandler.GetStore(formId);
33-
formStore.InitiateSubmit();
33+
formStore.InitiateFormSubmit();
3434

3535
expect(submitCallback.called).toBe(true);
3636
});
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import * as React from "react";
2+
import { mount } from "enzyme";
3+
import * as Sinon from "sinon";
4+
5+
import { FSHContainer, FormStoresHandler } from "simplr-forms/stores";
6+
import { Form } from "../../src/components/form";
7+
import { Text } from "../../src/components/text";
8+
9+
describe("Text field", () => {
10+
let sandbox: Sinon.SinonSandbox;
11+
beforeEach(() => {
12+
FSHContainer.SetFormStoresHandler(new FormStoresHandler(), true);
13+
sandbox = Sinon.sandbox.create();
14+
});
15+
16+
afterEach(() => {
17+
sandbox.restore();
18+
});
19+
20+
it("change value from input", () => {
21+
const formId = "formId";
22+
const fieldName = "field name";
23+
const nextValue = "next value";
24+
const wrapper = mount(<Form formId={formId}>
25+
<Text name={fieldName} />
26+
</Form>);
27+
28+
const formStore = FSHContainer.FormStoresHandler.GetStore(formId);
29+
30+
wrapper.find("input").simulate("change", { target: { value: nextValue } });
31+
32+
expect(wrapper.find("input").props().value).toBe(nextValue);
33+
expect(formStore.GetField(fieldName).Value).toBe(nextValue);
34+
});
35+
36+
it("change value triggers onChange callback", () => {
37+
const fieldName = "field name";
38+
const nextValue = "next value";
39+
const callback = Sinon.stub();
40+
const wrapper = mount(<Form>
41+
<Text name={fieldName} onChange={callback} />
42+
</Form>);
43+
44+
wrapper.find("input").simulate("change", { target: { value: nextValue } });
45+
46+
expect(callback.called).toBe(true);
47+
});
48+
49+
it("render is defined", () => {
50+
const wrapper = mount(<Form>
51+
<Text name="field" />
52+
</Form>);
53+
54+
expect(wrapper.find(Text).getDOMNode()).toBeDefined();
55+
});
56+
});

packages/simplr-forms-dom/src/components/text.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export interface TextProps extends DomFieldProps, HTMLElementProps<HTMLInputElem
3333

3434
export class Text extends BaseDomField<TextProps, BaseDomFieldState, HTMLInputElement> {
3535
protected GetValueFromEvent(event: React.ChangeEvent<HTMLInputElement>): string {
36-
return event.currentTarget.value;
36+
return event.target.value;
3737
}
3838

3939
protected OnChangeHandler: React.ChangeEventHandler<HTMLInputElement> = (event) => {

packages/simplr-forms/__tests__/abstractions/base-field.test.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,10 @@ describe("Field Base", () => {
1717
FSHContainer.SetFormStoresHandler(new FormStoresHandler(), true);
1818
});
1919

20-
afterEach(function () {
20+
afterEach(() => {
2121
sandbox.restore();
2222
});
2323

24-
it("works", () => {
25-
expect(true).toBe(true);
26-
});
27-
2824
it("is rendered outside of Form", () => {
2925
expect(() => shallow(
3026
<MyTestField name="fieldName"></MyTestField>
Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,51 @@
1+
import * as React from "react";
2+
import { shallow, mount } from "enzyme";
3+
import * as Sinon from "sinon";
4+
5+
import { TestFieldsGroup } from "../test-components/test-fields-group";
6+
import { FSHContainer, FormStoresHandler } from "../../src/stores/form-stores-handler";
7+
import { MyTestForm } from "../test-components/test-form";
8+
19
describe("Fields Group Base", () => {
2-
xit("throws when registering an already existing id", () => {
10+
let sandbox: Sinon.SinonSandbox;
11+
const formId = "FORM_ID";
12+
13+
beforeEach(() => {
14+
sandbox = Sinon.sandbox.create();
15+
FSHContainer.SetFormStoresHandler(new FormStoresHandler(), true);
16+
});
17+
18+
afterEach(() => {
19+
sandbox.restore();
20+
});
21+
22+
it("is rendered outside of Form", () => {
23+
expect(() => shallow(
24+
<TestFieldsGroup name="name"></TestFieldsGroup>
25+
)).toThrow();
26+
});
27+
28+
it("registers when rendered inside of a form", () => {
29+
const FormStoresHandler = FSHContainer.FormStoresHandler;
30+
const fieldsGroupName = "group name";
31+
32+
mount(<MyTestForm formId={formId} >
33+
<TestFieldsGroup name={fieldsGroupName}></TestFieldsGroup>
34+
</MyTestForm>);
35+
36+
const formStore = FormStoresHandler.GetStore(formId);
37+
38+
expect(formStore.GetState().FieldsGroups.has(fieldsGroupName)).toBe(true);
39+
});
40+
41+
it("throws when registering an already existing id", () => {
42+
const fieldsGroupName = "group name";
343

44+
expect(() => mount(
45+
<MyTestForm formId={formId} >
46+
<TestFieldsGroup name={fieldsGroupName}></TestFieldsGroup>
47+
<TestFieldsGroup name={fieldsGroupName}></TestFieldsGroup>
48+
</MyTestForm>
49+
)).toThrow();
450
});
551
});

0 commit comments

Comments
 (0)