Skip to content

Commit 21d4132

Browse files
msssktomdye
authored andcommitted
FileUploader: update tests
1 parent 8b639dc commit 21d4132

File tree

4 files changed

+129
-24
lines changed

4 files changed

+129
-24
lines changed

src/file-upload-input/tests/unit/FileUploadInput.spec.tsx

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -119,30 +119,32 @@ describe('FileUploadInput', function() {
119119
});
120120

121121
r.expect(
122-
baseAssertion.prepend(WrappedRoot, () => [
123-
<Label
124-
disabled={false}
125-
forId={'file-upload-input-test'}
126-
hidden={false}
127-
required={false}
128-
theme={{
129-
'@dojo/widgets/label': {
130-
active: labelCss.active,
131-
disabled: labelCss.disabled,
132-
focused: labelCss.focused,
133-
invalid: labelCss.invalid,
134-
readonly: labelCss.readonly,
135-
required: labelCss.required,
136-
root: labelCss.root,
137-
secondary: labelCss.secondary,
138-
valid: labelCss.valid
139-
}
140-
}}
141-
valid={true}
142-
>
143-
{label}
144-
</Label>
145-
])
122+
baseAssertion.prepend(WrappedRoot, function() {
123+
return [
124+
<Label
125+
disabled={false}
126+
forId="file-upload-input-test"
127+
hidden={false}
128+
required={false}
129+
theme={{
130+
'@dojo/widgets/label': {
131+
active: labelCss.active,
132+
disabled: labelCss.disabled,
133+
focused: labelCss.focused,
134+
invalid: labelCss.invalid,
135+
readonly: labelCss.readonly,
136+
required: labelCss.required,
137+
root: labelCss.root,
138+
secondary: labelCss.secondary,
139+
valid: labelCss.valid
140+
}
141+
}}
142+
valid={true}
143+
>
144+
{label}
145+
</Label>
146+
];
147+
})
146148
);
147149
});
148150

src/file-uploader/tests/unit/FileUploader.spec.tsx

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { assertion, renderer, wrap } from '@dojo/framework/testing/renderer';
33
import { noop } from '@dojo/widgets/common/tests/support/test-helpers';
44
import FileUploader from '../../index';
55
import FileUploadInput from '../../../file-upload-input';
6+
import Icon from '../../../icon';
67

78
import * as css from '../../../theme/default/file-uploader.m.css';
89
import * as fileUploadInputCss from '../../../theme/default/file-upload-input.m.css';
@@ -57,4 +58,104 @@ describe('FileUploader', function() {
5758

5859
r.expect(baseAssertion);
5960
});
61+
62+
it('sets props on FileUploadInput', function() {
63+
const passthruProps = {
64+
accept: 'accept',
65+
allowDnd: false,
66+
disabled: true,
67+
multiple: true,
68+
name: 'name',
69+
required: true
70+
};
71+
const expectedRootClasses = [...baseRootProperties.classes];
72+
expectedRootClasses.splice(3, 1, css.disabled);
73+
74+
const r = renderer(function() {
75+
return <FileUploader {...passthruProps} onValue={noop} />;
76+
});
77+
78+
r.expect(
79+
baseAssertion
80+
.setProperty(WrappedRoot, 'classes', expectedRootClasses)
81+
.setProperties(WrappedFileUploadInput, {
82+
...baseInputProperties,
83+
...passthruProps,
84+
onValue: noop
85+
})
86+
);
87+
});
88+
89+
it('renders label', function() {
90+
const label = 'Widget label';
91+
92+
const r = renderer(function() {
93+
return (
94+
<FileUploader onValue={noop}>
95+
{{
96+
label
97+
}}
98+
</FileUploader>
99+
);
100+
});
101+
102+
r.expect(baseAssertion.setChildren(WrappedFileUploadInput, () => [{ label, content: '' }]));
103+
});
104+
105+
it('renders files', function() {
106+
const files = [
107+
{
108+
name: 'file1.jpg',
109+
size: 55383,
110+
formattedSize: '54.08 KB',
111+
type: 'image/jpeg'
112+
},
113+
{
114+
name: 'file2.png',
115+
size: 180240,
116+
formattedSize: '176.02 KB',
117+
type: 'image/png',
118+
valid: false,
119+
message: 'File is too big'
120+
},
121+
{
122+
name: 'file3.png',
123+
size: 4001220,
124+
formattedSize: '3.82 MB',
125+
type: 'image/png',
126+
valid: true,
127+
message: 'File is great'
128+
}
129+
];
130+
131+
const r = renderer(function() {
132+
return <FileUploader files={files as any} onValue={noop} />;
133+
});
134+
135+
const content = (
136+
<div key="fileList">
137+
{files.map(function(file) {
138+
return (
139+
<div
140+
classes={[css.fileItem, file.valid === false ? css.invalid : false]}
141+
key={file.name}
142+
>
143+
<div classes={[css.fileInfo]}>
144+
<div classes={[css.fileItemName]}>{file.name}</div>
145+
<div classes={[css.fileItemSize]}>{file.formattedSize}</div>
146+
<button onclick={noop} classes={[css.closeButton]}>
147+
<Icon altText="Remove" type="closeIcon" />
148+
</button>
149+
</div>
150+
{file.message && (
151+
<div classes={[css.validationMessage]}>{file.message}</div>
152+
)}
153+
</div>
154+
);
155+
})}
156+
</div>
157+
);
158+
159+
r.expect(baseAssertion.setChildren(WrappedFileUploadInput, () => [{ content }]));
160+
});
60161
});

src/theme/dojo/file-uploader.m.css.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ export const fileInfo: string;
55
export const fileItemName: string;
66
export const closeButton: string;
77
export const validationMessage: string;
8+
export const invalid: string;

src/theme/material/file-uploader.m.css.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ export const fileInfo: string;
55
export const fileItemName: string;
66
export const closeButton: string;
77
export const validationMessage: string;
8+
export const invalid: string;

0 commit comments

Comments
 (0)