Chore/remove is object

This commit is contained in:
Sofiya Tepikin
2022-07-31 18:23:17 +00:00
parent 7b100d2dfc
commit 3015628821
4 changed files with 49 additions and 13 deletions
+1 -12
View File
@@ -1,5 +1,4 @@
import csvParser from 'csvtojson' import csvParser from 'csvtojson'
import isObject from 'isobject'
import { import {
getSchema, getSchema,
tryToImportWithDelete, tryToImportWithDelete,
@@ -7,6 +6,7 @@ import {
updateCycleStartsForAllCycleDays, updateCycleStartsForAllCycleDays,
} from '../../db' } from '../../db'
import getColumnNamesForCsv from './get-csv-column-names' import getColumnNamesForCsv from './get-csv-column-names'
import replaceWithNullIfAllPropertiesAreNull from './replace-with-null'
import { LocalDate } from '@js-joda/core' import { LocalDate } from '@js-joda/core'
import labels from '../../i18n/en/settings' import labels from '../../i18n/en/settings'
@@ -74,17 +74,6 @@ function validateHeaders(headers) {
function putNullForEmptySymptoms(data) { function putNullForEmptySymptoms(data) {
data.forEach(replaceWithNullIfAllPropertiesAreNull) data.forEach(replaceWithNullIfAllPropertiesAreNull)
function replaceWithNullIfAllPropertiesAreNull(obj) {
Object.keys(obj).forEach((key) => {
if (!isObject(obj[key])) return
if (Object.values(obj[key]).every((val) => val === null)) {
obj[key] = null
return
}
replaceWithNullIfAllPropertiesAreNull(obj[key])
})
}
} }
function getDbType(modelProperties, path) { function getDbType(modelProperties, path) {
+12
View File
@@ -0,0 +1,12 @@
const isObject = (obj) => obj === Object(obj)
export default function replaceWithNullIfAllPropertiesAreNull(obj) {
Object.keys(obj).forEach((key) => {
if (!isObject(obj[key])) return
if (Object.values(obj[key]).every((val) => val === null)) {
obj[key] = null
return
}
replaceWithNullIfAllPropertiesAreNull(obj[key])
})
}
-1
View File
@@ -35,7 +35,6 @@
"@react-native-community/push-notification-ios": "^1.8.0", "@react-native-community/push-notification-ios": "^1.8.0",
"csvtojson": "^2.0.8", "csvtojson": "^2.0.8",
"i18next": "^21.8.14", "i18next": "^21.8.14",
"isobject": "^4.0.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"nodejs-mobile-react-native": "^0.6.2", "nodejs-mobile-react-native": "^0.6.2",
"object-path": "^0.11.4", "object-path": "^0.11.4",
+36
View File
@@ -0,0 +1,36 @@
import replaceWithNullIfAllPropertiesAreNull from '../lib/import-export/replace-with-null'
import chai from 'chai'
const expect = chai.expect
describe('replaceWithNullIfAllPropertiesAreNull', () => {
it('when data object has no null values, data object remains unchanged', () => {
const initialData = {
bleeding: { exclude: false, value: 2 },
date: '2021-10-08',
}
const obj = { ...initialData }
replaceWithNullIfAllPropertiesAreNull(obj)
expect(obj).to.deep.equal(initialData)
})
it('when data object has nested object with all values null, nested object is replaced with null', () => {
const initialData = {
bleeding: { exclude: null, value: null },
date: '2021-10-08',
}
const obj = { ...initialData }
const expectedData = { bleeding: null, date: '2021-10-08' }
replaceWithNullIfAllPropertiesAreNull(obj)
expect(obj).to.deep.equal(expectedData)
})
it('when data object is empty, data object remains unchanged', () => {
const obj = {}
replaceWithNullIfAllPropertiesAreNull(obj)
expect(obj).to.deep.equal({})
})
})