Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(upload): adiciona o parâmetro extraFormData no evento p-upload #1404

Merged
merged 1 commit into from
Jul 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -235,12 +235,19 @@ export abstract class PoUploadBaseComponent implements ControlValueAccessor, Val
*
* Função que será executada no momento de realizar o envio do arquivo,
* onde será possível adicionar informações ao parâmetro que será enviado na requisição.
* É passado por parâmetro um objeto com o arquivo e a propriedade data nesta propriedade pode ser informado algum dado,
* que será enviado em conjunto com o arquivo na requisição, por exemplo:
* É passado por parâmetro um objeto com o arquivo e as propriedades data e extraFormData,
* que serão enviadas em conjunto com o arquivo na requisição, por exemplo:
*
* > data, nesta propriedade pode ser informado algum dado
* ```
* event.data = {id: 'id do usuário'};
* ```
* > extraFormData, nesta propriedade pode ser informado algum dado solicitado pela API
* > que não possa estar no objeto `data`, assim o conteúdo sará extraído do objeto e
* > enviado como parâmetro
* ```
* event.extraFormData = {id: 'id do usuário'};
* ```
*/
@Output('p-upload') onUpload: EventEmitter<any> = new EventEmitter<any>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,43 @@ describe('PoUploadBaseService:', () => {
expect(service.sendFile).toHaveBeenCalled();
}));

it('should call formData.append with correct parameters', inject(
[PoUploadBaseService],
(service: PoUploadBaseService) => {
const fakeFile = new Blob([]);
fakeFile['lastModified'] = 1504558774471;
fakeFile['lastModifiedDate'] = new Date();
fakeFile['name'] = 'Teste';
fakeFile['webkitRelativePath'] = '';
const files = [new PoUploadFile(<File>fakeFile)];
const headers = { Authorization: '145236' };
const tOnUpload = new EventEmitter<any>();
const callback = (file: PoUploadFile, event: any) => '';

const formData = new FormData();
spyOn(window, 'FormData').and.returnValue(formData);
spyOn(formData, 'append');

const uploadEvent = {
extraFormData: { param1: 'value1', param2: 'value2' },
data: { key: 'value' },
url: 'http://example.com/upload',
headers: { 'Content-Type': 'application/json' }
};

spyOn(tOnUpload, 'emit').and.callFake(event => {
event.extraFormData = uploadEvent.extraFormData;
event.data = uploadEvent.data;
event.url = uploadEvent.url;
event.headers = uploadEvent.headers;
});

service.upload('', files, headers, tOnUpload, callback, callback, callback);

expect(formData.append).toHaveBeenCalled();
}
));

it('should execute uploadCallback function', inject([PoUploadBaseService], (service: PoUploadBaseService) => {
const methods = returnMethodsCallback();
const fakeThis = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export class PoUploadBaseService {
const filesLength = files.length;
const uploadEvent: any = {
data: {},
extraFormData: {},
file: null,
url: url,
headers: headers
Expand All @@ -58,6 +59,10 @@ export class PoUploadBaseService {
uploadEvent['file'] = file;
tOnUpload.emit(uploadEvent);

Object.keys(uploadEvent.extraFormData).forEach(key => {
formData.append(key, uploadEvent.extraFormData[key]);
});

formData.append('data', JSON.stringify(uploadEvent.data));
url = uploadEvent.url;
headers = uploadEvent.headers;
Expand Down
Loading