Network/FormData typeof object allowing null

Summary:
Submitting PR in response to https://github.com/facebook/react-native/issues/12251

**Test plan (required)**

$formData = new FormData()
$formData.append('value', null)

Included Unit Tests
Closes https://github.com/facebook/react-native/pull/12253

Differential Revision: D4545291

Pulled By: lacker

fbshipit-source-id: 2780f24e1fe1e0d5be3bb12b64aa6cd9a20554bf
This commit is contained in:
Matthew Oaxaca 2017-02-10 13:26:14 -08:00 коммит произвёл Facebook Github Bot
Родитель 1dd84f0d47
Коммит 34edf92cbf
2 изменённых файлов: 60 добавлений и 1 удалений

Просмотреть файл

@ -71,7 +71,7 @@ class FormData {
// an object with a `uri` attribute. Optionally, it can also // an object with a `uri` attribute. Optionally, it can also
// have a `name` and `type` attribute to specify filename and // have a `name` and `type` attribute to specify filename and
// content type (cf. web Blob interface.) // content type (cf. web Blob interface.)
if (typeof value === 'object') { if (typeof value === 'object' && value) {
if (typeof value.name === 'string') { if (typeof value.name === 'string') {
headers['content-disposition'] += '; filename="' + value.name + '"'; headers['content-disposition'] += '; filename="' + value.name + '"';
} }

Просмотреть файл

@ -0,0 +1,59 @@
/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
'use strict';
jest.unmock('FormData');
const FormData = require('FormData');
describe('FormData', function() {
var formData;
beforeEach(() => {
formData = new FormData();
});
afterEach(() => {
formData = null;
});
it('should return non blob null', function() {
formData.append('null', null);
const expectedPart = {
string: 'null',
headers: {
'content-disposition': 'form-data; name="null"'
},
fieldName: 'null'
};
expect(formData.getParts()[0]).toMatchObject(expectedPart);
});
it('should return blob', function() {
formData.append('photo', {
uri: 'arbitrary/path',
type: 'image/jpeg',
name: 'photo.jpg'
});
const expectedPart = {
uri: 'arbitrary/path',
type: 'image/jpeg',
name: 'photo.jpg',
headers: {
'content-disposition': 'form-data; name="photo"; filename="photo.jpg"',
'content-type': 'image/jpeg'
},
fieldName: 'photo'
};
expect(formData.getParts()[0]).toMatchObject(expectedPart);
});
});