Skip to content

Commit

Permalink
Merge pull request #1157 from LD4P/findnode
Browse files Browse the repository at this point in the history
Removes find node function from resource validator constructor.
  • Loading branch information
justinlittman committed Aug 3, 2019
2 parents d688793 + 8af7144 commit dcb4d3f
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 13 deletions.
11 changes: 5 additions & 6 deletions __tests__/ResourceValidator.test.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright 2019 Stanford University see LICENSE for license

import Validator from 'ResourceValidator'
import { findObjectAtPath } from 'selectors/resourceSelectors'

let resource
let resourceTemplates
Expand Down Expand Up @@ -50,7 +49,7 @@ beforeEach(() => {

describe('validate()', () => {
it('when no properties are mandatory', () => {
const results = new Validator({ resource, entities: { resourceTemplates } }, findObjectAtPath).validate()
const results = new Validator({ resource, entities: { resourceTemplates } }).validate()

expect(results[0]).toEqual({})
expect(results[1]).toEqual([])
Expand All @@ -59,15 +58,15 @@ describe('validate()', () => {
it('when a property is mandatory and provided', () => {
resourceTemplates['resourceTemplate:Monograph:Instance'].propertyTemplates[0].mandatory = 'true'
resource['resourceTemplate:Monograph:Instance']['http://id.loc.gov/ontologies/bibframe/title'].items = [{ content: 'bar' }]
const results = new Validator({ resource, entities: { resourceTemplates } }, findObjectAtPath).validate()
const results = new Validator({ resource, entities: { resourceTemplates } }).validate()

expect(results[0]).toEqual({})
expect(results[1]).toEqual([])
})

it('when a property is mandatory and not provided', () => {
resourceTemplates['resourceTemplate:Monograph:Instance'].propertyTemplates[0].mandatory = 'true'
const results = new Validator({ resource, entities: { resourceTemplates } }, findObjectAtPath).validate()
const results = new Validator({ resource, entities: { resourceTemplates } }).validate()

expect(results[0]).toEqual({
resource: {
Expand All @@ -91,7 +90,7 @@ describe('validate()', () => {
it('when a nested resource is mandatory and provided', () => {
resourceTemplates['resourceTemplate:Monograph:Instance'].propertyTemplates[0].mandatory = 'true'
resource['resourceTemplate:Monograph:Instance']['http://id.loc.gov/ontologies/bibframe/title'].abcdCode = { 'resourceTemplate:bf2:Title': {} }
const results = new Validator({ resource, entities: { resourceTemplates } }, findObjectAtPath).validate()
const results = new Validator({ resource, entities: { resourceTemplates } }).validate()

expect(results[0]).toEqual({})
expect(results[1]).toEqual([])
Expand All @@ -101,7 +100,7 @@ describe('validate()', () => {
// Make barcode mandatory
resourceTemplates['resourceTemplate:Monograph:Instance'].propertyTemplates[1].mandatory = 'true'
resource['resourceTemplate:Monograph:Instance']['http://id.loc.gov/ontologies/bibframe/itemPortion'].abcdCode = { 'resourceTemplate:bf2:Identifiers:Barcode': {} }
const results = new Validator({ resource, entities: { resourceTemplates } }, findObjectAtPath).validate()
const results = new Validator({ resource, entities: { resourceTemplates } }).validate()

expect(results[0]).toEqual({
resource: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,9 @@ describe('RDF from literal property templates', () => {
})
describe('three values, 1 default', () => {
it('defaultLiteral only', async () => {
expect.assertions(10)
expect.assertions(11)
await pupExpect(page).toClick('a[href="/editor"]', { text: 'test literal, repeatable, required, default literal only (no URI)' })
await pupExpect(page).toMatch('mydefaultvalue')
await pupExpect(page).toFill('input[placeholder=\'literal, repeatable, required, default literal only, default language\']', 'another')
await page.keyboard.press('Enter')
await pupExpect(page).toFill('input[placeholder=\'literal, repeatable, required, default literal only, default language\']', 'yet another')
Expand Down
9 changes: 4 additions & 5 deletions src/ResourceValidator.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { getResourceTemplate } from 'selectors/resourceSelectors'
import { getResourceTemplate, findObjectAtPath } from 'selectors/resourceSelectors'
import _ from 'lodash'

export default class Validator {
constructor(selectorReducer, findNode) {
constructor(selectorReducer) {
this.selectorReducer = selectorReducer
this.findNode = findNode
this.errorState = {}
this.errors = []
}
Expand Down Expand Up @@ -54,7 +53,7 @@ export default class Validator {
}

validateMandatoryProperty(reduxPath, labelPath) {
const propertyNode = this.findNode(this.selectorReducer, reduxPath)
const propertyNode = findObjectAtPath(this.selectorReducer, reduxPath)
if (propertyNode.items) {
if (_.isEmpty(propertyNode.items)) this.addError(reduxPath, labelPath, 'Required')
} else if (_.isEmpty(propertyNode)) {
Expand All @@ -63,7 +62,7 @@ export default class Validator {
}

validateNestedResourceProperty(reduxPath, labelPath, propertyTemplate) {
const propertyNode = this.findNode(this.selectorReducer, reduxPath)
const propertyNode = findObjectAtPath(this.selectorReducer, reduxPath)
propertyTemplate.valueConstraint.valueTemplateRefs.forEach((resourceTemplateId) => {
Object.keys(propertyNode).forEach((key) => {
const newReduxPath = [...reduxPath, key, resourceTemplateId]
Expand Down
2 changes: 1 addition & 1 deletion src/reducers/inputs.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { findObjectAtPath } from 'selectors/resourceSelectors'

export const validate = (state) => {
const newState = { ...state }
const result = new Validator(newState, findObjectAtPath).validate()
const result = new Validator(newState).validate()
newState.editor.resourceValidationErrors = result[0]
newState.editor.errors = result[1]
return newState
Expand Down

0 comments on commit dcb4d3f

Please sign in to comment.