Skip to content

Preserve imported annotation on approval & Add SeriesImport model #93

Preserve imported annotation on approval & Add SeriesImport model

Preserve imported annotation on approval & Add SeriesImport model #93

GitHub Actions / Mocha test results succeeded Jul 24, 2024 in 0s

562 passed, 0 failed and 0 skipped

Tests passed successfully

✅ test-results.json

562 tests were completed in 21s with 562 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
test/func/alias.js 8✅ 116ms
test/func/area.js 3✅ 2ms
test/func/author-credit.js 4✅ 40ms
test/func/entity.js 5✅ 23ms
test/func/externalServiceOauth.js 4✅ 6ms
test/func/identifier.js 4✅ 31ms
test/func/language.js 3✅ 19ms
test/func/relationship.js 4✅ 93ms
test/func/relationshipAttributes.js 4✅ 35ms
test/func/set.js 16✅ 27ms
test/func/work.js 2✅ 2ms
test/testAchievementType.js 1✅ 3ms
test/testAchievementUnlock.js 1✅ 2ms
test/testAlias.js 1✅ 2ms
test/testAliasSet.js 4✅ 19ms
test/testAnnotation.js 1✅ 4ms
test/testArea.js 3✅ 10ms
test/testAuthor.js 7✅ 71ms
test/testAuthorRevision.js 1✅ 3ms
test/testDisambiguation.js 1✅ 2ms
test/testEdition.js 7✅ 100ms
test/testEditionGroup.js 4✅ 38ms
test/testEditionGroupRevision.js 1✅ 3ms
test/testEditionRevision.js 1✅ 2ms
test/testEditor.js 1✅ 9ms
test/testEditorEntityVisits.js 1✅ 2ms
test/testEditorType.js 1✅ 2ms
test/testEntity.js 1✅ 3ms
test/testExternalServiceOauth.js 1✅ 3ms
test/testGender.js 1✅ 2ms
test/testIdentifier.js 1✅ 2ms
test/testIdentifierSet.js 4✅ 13ms
test/testIdentifierType.js 1✅ 3ms
test/testLanguage.js 1✅ 2ms
test/testLanguageSet.js 4✅ 19ms
test/testModule.js 3✅ 5ms
test/testPublisher.js 4✅ 39ms
test/testPublisherRevision.js 1✅ 3ms
test/testRelationship.js 2✅ 14ms
test/testRelationshipAttributes.js 1✅ 3ms
test/testRelationshipAttributeSet.js 4✅ 15ms
test/testRelationshipAttributeType.js 1✅ 2ms
test/testRelationshipSet.js 4✅ 18ms
test/testRelationshipType.js 2✅ 8ms
test/testRevision.js 1✅ 4ms
test/testSeries.js 5✅ 43ms
test/testSeriesOrderingType.js 1✅ 2ms
test/testSeriesRevision.js 1✅ 3ms
test/testTitleType.js 1✅ 3ms
test/testTitleUnlock.js 1✅ 2ms
test/testUserCollection.js 2✅ 9ms
test/testWork.js 4✅ 35ms
test/testWorkRevision.js 1✅ 3ms
test/util.js 14✅ 1ms
test/validators/test-alias.js 38✅ 6ms
test/validators/test-annotation-section.js 10✅ 1ms
test/validators/test-author.js 58✅ 7ms
test/validators/test-edition-group.js 22✅ 5ms
test/validators/test-edition.js 103✅ 13ms
test/validators/test-identifier.js 36✅ 3ms
test/validators/test-name-section.js 27✅ 1ms
test/validators/test-publisher.js 44✅ 6ms
test/validators/test-series.js 25✅ 4ms
test/validators/test-submission-section.js 10✅ 1ms
test/validators/test-work.js 29✅ 4ms

✅ test/func/alias.js

updateAliasSet
  ✅ should allow only one primary alias per language
  ✅ should allow only the default alias to be primary for that language
  ✅ should error if a set of aliases is passed with no default
  ✅ should return a new set if changes are made to the aliases in the set
  ✅ should return a new set if the default alias is changed
  ✅ should return a set with one alias if one alias is added to an empty set
  ✅ should return null if all null/empty sets are passed
  ✅ should return the old set if no changes are made

✅ test/func/area.js

recursivelyGetAreaParentsWithNames
  ✅ should return all levels when checkAllLevels is true
  ✅ should return an array of areas with their names, sorted by type
  ✅ should work when calling parents() on an Area model

✅ test/func/author-credit.js

fetchOrCreateCredit
  ✅ should create a single author credit if called twice
updateCreateCredit
  ✅ should return a new credit if the credit is updated
  ✅ should return the original credit if changed, and then reverted
  ✅ should return the original credit if the credit is unchanged

✅ test/func/entity.js

getEntity
  ✅ should return an entity
  ✅ should return an entity with extra relations
  ✅ should return the target entity for a redirected bbid
recursivelyGetRedirectBBID
  ✅ should return a multiple-step redirected bbid
  ✅ should return a single-step redirected bbid

✅ test/func/externalServiceOauth.js

deleteOauthToken
  ✅ should delete oauth token
getOauthToken
  ✅ should return oauth token
saveOauthToken
  ✅ should save oauth token and return the saved token
updateOauthToken
  ✅ should update oauth token

✅ test/func/identifier.js

updateIdentifierSet
  ✅ should return a new set if changes are made to the identifiers in the set
  ✅ should return a set with one identifier if one identifier is added to an empty set
  ✅ should return null if all null/empty sets are passed
  ✅ should return the old set if no changes are made

✅ test/func/language.js

updateLanguageSet
  ✅ should return a set with one language if one language is added to an empty set
  ✅ should return null if all null/empty sets are passed
  ✅ should return the old set if no changes are made

✅ test/func/relationship.js

updateRelationshipSet
  ✅ should return a new set if changes are made to the relationships in the set
  ✅ should return an empty object if all null/empty sets are passed
  ✅ should return an object with two entries if one relationship is added to an empty set
  ✅ should return the old set if no changes are made

✅ test/func/relationshipAttributes.js

updateRelationshipAttributeSet
  ✅ should return a new set if changes are made to the attributes in the set
  ✅ should return a set with one attribute if one attribute is added to an empty set
  ✅ should return null if all null/empty sets are passed
  ✅ should return the old set if no changes are made

✅ test/func/set.js

createNewSetWithItems
  ✅ should error out if non-existent unchanged items are provided
  ✅ should return a new set with one item if an item is added
  ✅ should return a new set with two items if an item is added to an existing unchanged item
  ✅ should return null if no items are provided
getAddedItems
  ✅ should return a single element when one element is different
  ✅ should return a single element when one element is different and duplicated
  ✅ should return an empty list for two arrays of identical objects
getRemovedItems
  ✅ should return a single element when one element is different
  ✅ should return a single element when one element is different and duplicated
  ✅ should return an empty list for two arrays of identical objects
getUnchangedItems
  ✅ should return a single element when one duplicated element is the same
  ✅ should return a single element when one element is different
  ✅ should return all objects for two arrays of identical objects
removeItemsFromSet
  ✅ should return a single element when one element is different
  ✅ should return a single element when one element is different and duplicated
  ✅ should return an empty list for two arrays of identical objects

✅ test/func/work.js

loadAuthorNames
  ✅ should return an array of objects with appropriate keys when the list of workBBIDs is not empty
  ✅ should return an empty array if the list of workBBIDs is empty

✅ test/testAchievementType.js

AchievementType model
  ✅ should return a JSON object with correct keys when saved

✅ test/testAchievementUnlock.js

AchievementUnlock model
  ✅ should return a JSON object with correct keys when saved

✅ test/testAlias.js

Alias model
  ✅ should return a JSON object with correct keys when saved

✅ test/testAliasSet.js

AliasSet model
  ✅ should have an empty list of aliases when none are attached
  ✅ should have have an alias when one is set
  ✅ should have have two aliases when two are set
  ✅ should return a JSON object with correct keys when saved

✅ test/testAnnotation.js

Annotation model
  ✅ should return a JSON object with correct keys when saved

✅ test/testArea.js

Area model
  ✅ should return a JSON object with correct keys when saved
AreaType model
  ✅ should be fetched as relationship when fetching Area
  ✅ should return a JSON object with correct keys when saved

✅ test/testAuthor.js

Author model
  ✅ should return a JSON object with correct keys when saved
  ✅ should return a JSON object with empty collections array
  ✅ should return a JSON object with related collections if there exist any
  ✅ should return the master revision when multiple revisions exist
Author model with Author Credits
  ✅ should return the associated Author Credits for an Author
  ✅ should return the associated Edition Groups using creditedEditionGroups method
  ✅ should return the associated Editions using creditedEditions method

✅ test/testAuthorRevision.js

AuthorRevision model
  ✅ should return a JSON object with correct keys when saved

✅ test/testDisambiguation.js

Disambiguation model
  ✅ should return a JSON object with correct keys when saved

✅ test/testEdition.js

Edition model
  ✅ should automatically create an Edition Group editionGroupBbid has been unset in existing Edition
  ✅ should automatically create an Edition Group if none has been passed
  ✅ should return a JSON object with correct keys when saved
  ✅ should return a JSON object with empty collections array
  ✅ should return a JSON object with related collections if there exist any
  ✅ should return the master revision when multiple revisions exist
  ✅ should set the same Author Credit on auto-created Edition Group

✅ test/testEditionGroup.js

EditionGroup model
  ✅ should return a JSON object with correct keys when saved
  ✅ should return a JSON object with empty collections array
  ✅ should return a JSON object with related collections if there exist any
  ✅ should return the master revision when multiple revisions exist

✅ test/testEditionGroupRevision.js

EditionGroupRevision model
  ✅ should return a JSON object with correct keys when saved

✅ test/testEditionRevision.js

EditionRevision model
  ✅ should return a JSON object with correct keys when saved

✅ test/testEditor.js

Editor model
  ✅ should return a JSON object with correct keys when saved

✅ test/testEditorEntityVisits.js

EditorEntityVisits model
  ✅ should return a JSON object with correct keys when saved

✅ test/testEditorType.js

EditorType model
  ✅ should return a JSON object with correct keys when saved

✅ test/testEntity.js

Entity model
  ✅ should return a JSON object with correct keys when saved

✅ test/testExternalServiceOauth.js

ExternalServiceOauth model
  ✅ should return a JSON object with correct keys when saved

✅ test/testGender.js

Gender model
  ✅ should return a JSON object with correct keys when saved

✅ test/testIdentifier.js

Identifier model
  ✅ should return a JSON object with correct keys when saved

✅ test/testIdentifierSet.js

IdentifierSet model
  ✅ should have an empty list of identifiers when none are attached
  ✅ should have have an identifier when one is set
  ✅ should have have two identifiers when two are set
  ✅ should return a JSON object with correct keys when saved

✅ test/testIdentifierType.js

IdentifierType model
  ✅ should return a JSON object with correct keys when saved

✅ test/testLanguage.js

Language model
  ✅ should return a JSON object with correct keys when saved

✅ test/testLanguageSet.js

LanguageSet model
  ✅ should have an empty list of languages when none are attached
  ✅ should have have a language when one is set
  ✅ should have have two languages when two are set
  ✅ should return a JSON object with correct keys when saved

✅ test/testModule.js

Module
  ✅ should have a bookshelf property with a knex property
  ✅ should have bookshelf and utils properties
  ✅ should return one model for each file in the models directory

✅ test/testPublisher.js

Publisher model
  ✅ should return a JSON object with correct keys when saved
  ✅ should return a JSON object with empty collections array
  ✅ should return a JSON object with related collections if there exist any
  ✅ should return the master revision when multiple revisions exist

✅ test/testPublisherRevision.js

PublisherRevision model
  ✅ should return a JSON object with correct keys when saved

✅ test/testRelationship.js

Relationship model
  ✅ should return a JSON object with correct keys when saved
  ✅ should return a relationship with it's attributes when one is set

✅ test/testRelationshipAttributes.js

Relationship Attribute model
  ✅ should return a JSON object with correct keys when saved

✅ test/testRelationshipAttributeSet.js

RelationshipAttributeSet model
  ✅ should have an empty list of attributes when none are attached
  ✅ should have have a relationship attribute when one is set
  ✅ should have have two relationship attributes when two are set
  ✅ should return a JSON object with correct keys when saved

✅ test/testRelationshipAttributeType.js

RelationshipAttributeType model
  ✅ should return a JSON object with correct keys when saved

✅ test/testRelationshipSet.js

RelationshipSet model
  ✅ should have an empty list of relationships when none are attached
  ✅ should have have a relationship when one is set
  ✅ should have have two relationships when two are set
  ✅ should return a JSON object with correct keys when saved

✅ test/testRelationshipType.js

RelationshipType model
  ✅ should return a JSON object with correct keys when saved
  ✅ should return attribute type associated with the relationship type

✅ test/testRevision.js

Revision model
  ✅ should return a JSON object with correct keys when saved

✅ test/testSeries.js

Series model
  ✅ should allow to update the series ordering type
  ✅ should return a JSON object with correct keys when saved
  ✅ should return a JSON object with empty collections array
  ✅ should return a JSON object with related collections
  ✅ should return the master revision when multiple revisions exist

✅ test/testSeriesOrderingType.js

SeriesOrderingType model
  ✅ should return a JSON object with correct keys when saved

✅ test/testSeriesRevision.js

SeriesRevision model
  ✅ should return a JSON object with correct keys when saved

✅ test/testTitleType.js

TitleType model
  ✅ should return a JSON object with correct keys when saved

✅ test/testTitleUnlock.js

TitleUnlock model
  ✅ should return a JSON object with correct keys when saved

✅ test/testUserCollection.js

UserCollection model
  ✅ should return a JSON object with itemCount when saved and fetched with withItemCount flag
  ✅ should return a JSON object without itemCount when saved and fetched without withItemCount flag

✅ test/testWork.js

Work model
  ✅ should return a JSON object with correct keys when saved
  ✅ should return a JSON object with empty collections array
  ✅ should return a JSON object with related collections
  ✅ should return the master revision when multiple revisions exist

✅ test/testWorkRevision.js

WorkRevision model
  ✅ should return a JSON object with correct keys when saved

✅ test/util.js

Utils formatDate
  ✅ should allow negative years for full date and with missing month and/or day
  ✅ should return null when passed an invalid date object
  ✅ should return the date as ISO 8601 for a date object with missing month
  ✅ should return the date as ISO 8601 for a date object with missing month and day
  ✅ should return the date as ISO 8601 for a date object with year equal to zero
  ✅ should return the date as ISO 8601 for a full date object
Utils parseDate
  ✅ should allow BCE dates as extended ISO 8601-2004 date string
  ✅ should allow partial BCE dates as extended ISO 8601-2004 with missing day
  ✅ should allow partial BCE dates as extended ISO 8601-2004 with missing day and month
  ✅ should allow partial dates with missing day
  ✅ should allow partial dates with missing day and month
  ✅ should return an array of 3 null values when passed an invalid string (other than ISO 8601)
  ✅ should return the date as an array of 3 values when passed a full ISO 8601 date string
  ✅ should return the date as an array of 3 values when passed an extended ISO 8601-2004 date string

✅ test/validators/test-alias.js

validateAlias* functions validateAlias
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass a valid Object with a default flag
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid language
  ✅ should reject an Object with an invalid name
  ✅ should reject an Object with an invalid primary
  ✅ should reject an Object with an invalid sort name
  ✅ should reject any other non-null data type
validateAlias* functions validateAliasDefault
  ✅ should pass a null value
  ✅ should pass any boolean value
  ✅ should reject any non-boolean value
validateAlias* functions validateAliases
  ✅ should pass an empty Immutable.Map
  ✅ should pass an empty Object
  ✅ should pass an Immutable.Map of valid Immutable.Maps
  ✅ should pass an Object of two valid Objects
  ✅ should reject a null value
  ✅ should reject an Immutable.Map containing one invalid Immutable.Map
  ✅ should reject an Object containing one invalid Object
  ✅ should reject any other non-null data type
validateAlias* functions validateAliasLanguage
  ✅ should pass any positive integer value
  ✅ should reject a null value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateAlias* functions validateAliasName
  ✅ should pass any non-empty string value
  ✅ should reject a null value
  ✅ should reject an empty string
  ✅ should reject any non-string value
validateAlias* functions validateAliasPrimary
  ✅ should pass any boolean value
  ✅ should reject a null value
  ✅ should reject any non-boolean value
validateAlias* functions validateAliasSortName
  ✅ should pass any non-empty string value
  ✅ should reject a null value
  ✅ should reject an empty string
  ✅ should reject any non-string value

✅ test/validators/test-annotation-section.js

validateAnnotationSection* functions validateAnnotationSection
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an empty content Immutable.Map
  ✅ should pass an Object with an empty content
  ✅ should reject any other non-null data type
validateAnnotationSection* functions validateAnnotationSectionContent
  ✅ should pass a null value
  ✅ should pass an empty string
  ✅ should pass any non-empty string value
  ✅ should reject any non-string value

✅ test/validators/test-author.js

validateAuthorSection* functions validateAuthorSection
  ✅ should pass a empty value  object
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass any other non-null data type
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid area
  ✅ should reject an Object with an invalid area
  ✅ should reject an Object with an invalid begin date
  ✅ should reject an Object with an invalid end date
  ✅ should reject an Object with an invalid ended flag
  ✅ should reject an Object with an invalid gender
  ✅ should reject an Object with an invalid type
validateAuthorSection* functions validateAuthorSectionBeginArea
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid ID
  ✅ should reject any other non-null data type
validateAuthorSection* functions validateAuthorSectionBeginDate
  ✅ should pass an empty value object
  ✅ should pass an object containing a valid year and month value
  ✅ should pass an object containing a valid year value
  ✅ should pass an object containing a valid year, month and day value
  ✅ should reject all other forms of invalid dates
validateAuthorSection* functions validateAuthorSectionEndArea
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid ID
  ✅ should reject any other non-null data type
validateAuthorSection* functions validateAuthorSectionEndDate
  ✅ should pass if the begin date is empty/undefined/invalid
  ✅ should pass if the begin date occurs before the end one
  ✅ should reject if the begin date occurs after the end one
  ✅ should reject if the end date is invalid
validateAuthorSection* functions validateAuthorSectionEnded
  ✅ should pass a null value
  ✅ should pass any boolean value
  ✅ should reject any non-boolean value
validateAuthorSection* functions validateAuthorSectionGender
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateAuthorSection* functions validateAuthorSectionType
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateAuthorSection* functions validateForm
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an Object with an empty submission section
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid alias editor
  ✅ should reject an Object with an invalid author section
  ✅ should reject an Object with an invalid identifier editor
  ✅ should reject an Object with an invalid name section
  ✅ should reject any other non-null data type

✅ test/validators/test-edition-group.js

validateEditionGroupSection* functions validateEditionGroupSection
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass any other non-null data type
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid type
validateEditionGroupSection* functions validateEditionGroupSectionType
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionGroupSection* functions validateForm
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an Object with an empty submission section
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid alias editor
  ✅ should reject an Object with an invalid Edition Group section
  ✅ should reject an Object with an invalid identifier editor
  ✅ should reject an Object with an invalid name section
  ✅ should reject any other non-null data type

✅ test/validators/test-edition.js

validateEditionSection* functions validateEditionSection
  ✅ should ignore any other non-null data type
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid depth
  ✅ should reject an Object with an invalid edition group
  ✅ should reject an Object with an invalid format
  ✅ should reject an Object with an invalid height
  ✅ should reject an Object with an invalid pages
  ✅ should reject an Object with an invalid publisher
  ✅ should reject an Object with an invalid release date
  ✅ should reject an Object with an invalid status
  ✅ should reject an Object with an invalid weight
  ✅ should reject an Object with an invalid width
  ✅ should reject an Object with invalid languages
validateEditionSection* functions validateEditionSectionDepth
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionSection* functions validateEditionSectionEditionGroup
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass any other non-null data type with no ID
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid ID
validateEditionSection* functions validateEditionSectionFormat
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionSection* functions validateEditionSectionHeight
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionSection* functions validateEditionSectionLanguage
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid value
  ✅ should reject any other non-null data type
validateEditionSection* functions validateEditionSectionLanguages
  ✅ should pass a null value
  ✅ should pass an Array of two valid Objects
  ✅ should pass an empty Array
  ✅ should pass an empty Immutable.List
  ✅ should pass an Immutable.List of valid Immutable.Maps
  ✅ should reject an Array containing one invalid Object
  ✅ should reject an Immutable.List containing one invalid Immutable.Map
  ✅ should reject any other non-null data type
validateEditionSection* functions validateEditionSectionPages
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionSection* functions validateEditionSectionPublisher
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid ID
  ✅ should reject any other non-null data type
validateEditionSection* functions validateEditionSectionReleaseDate
  ✅ should pass an empty value object
  ✅ should pass an object containing a valid year and month value
  ✅ should pass an object containing a valid year value
  ✅ should pass an object containing a valid year, month and day value
  ✅ should reject all other forms of invalid dates
validateEditionSection* functions validateEditionSectionStatus
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionSection* functions validateEditionSectionWeight
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionSection* functions validateEditionSectionWidth
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateEditionSection* functions validateForm
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an Object with an empty author credit editor and AC disabled
  ✅ should pass an Object with an empty submission section
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with a non empty author credit editor and AC disabled
  ✅ should reject an Object with an empty author credit editor
  ✅ should reject an Object with an invalid alias editor
  ✅ should reject an Object with an invalid author credit editor
  ✅ should reject an Object with an invalid edition section
  ✅ should reject an Object with an invalid identifier editor
  ✅ should reject an Object with an invalid name section
  ✅ should reject any other non-null data type

✅ test/validators/test-identifier.js

validateIdentifier* functions validateIdentifier
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid type
  ✅ should reject an Object with an invalid value
  ✅ should reject any other non-null data type
validateIdentifier* functions validateIdentifiers
  ✅ should pass an empty Immutable.Map
  ✅ should pass an empty Object
  ✅ should pass an Immutable.Map of valid Immutable.Maps
  ✅ should pass an Object of two valid Objects
  ✅ should reject a null value
  ✅ should reject an Immutable.Map containing one invalid Immutable.Map
  ✅ should reject an Object containing one invalid Object
  ✅ should reject any other non-null data type
validateIdentifier* functions validateIdentifierType with no type set
  ✅ should pass any positive integer value
  ✅ should reject a null value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateIdentifier* functions validateIdentifierType with type set
  ✅ should pass any positive integer value which is a type ID
  ✅ should reject a null value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject any positive integer value which isn't a type ID
  ✅ should reject zero
validateIdentifier* functions validateIdentifierValue with no type set
  ✅ should pass any non-empty string value
  ✅ should reject a null value
  ✅ should reject an empty string
  ✅ should reject any non-string value
validateIdentifier* functions validateIdentifierValue with type set
  ✅ should pass a non-empty string value that matches the validation regular expression
  ✅ should reject a non-empty string value that doesn't match the validation regular expression
  ✅ should reject a null value
  ✅ should reject an empty string
  ✅ should reject any non-string value

✅ test/validators/test-name-section.js

validateNameSection* functions validateNameSection
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid disambiguation
  ✅ should reject an Object with an invalid language
  ✅ should reject an Object with an invalid name
  ✅ should reject an Object with an invalid sort name
  ✅ should reject any other non-null data type
validateNameSection* functions validateNameSectionDisambiguation
  ✅ should pass a null value
  ✅ should pass an empty string
  ✅ should pass any non-empty string value
  ✅ should reject any non-string value
validateNameSection* functions validateNameSectionLanguage
  ✅ should pass any positive integer value
  ✅ should reject a null value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero
validateNameSection* functions validateNameSectionName
  ✅ should pass any non-empty string value
  ✅ should reject a null value
  ✅ should reject an empty string
  ✅ should reject any non-string value
validateNameSection* functions validateNameSectionSortName
  ✅ should pass any non-empty string value
  ✅ should reject a null value
  ✅ should reject an empty string
  ✅ should reject any non-string value

✅ test/validators/test-publisher.js

validatePublisherSection* functions validateForm
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an Object with an empty submission section
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid alias editor
  ✅ should reject an Object with an invalid identifier editor
  ✅ should reject an Object with an invalid name section
  ✅ should reject an Object with an invalid publisher section
  ✅ should reject any other non-null data type
validatePublisherSection* functions validatePublisherSection
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass any other non-null data type
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid area
  ✅ should reject an Object with an invalid begin date
  ✅ should reject an Object with an invalid end date
  ✅ should reject an Object with an invalid ended flag
  ✅ should reject an Object with an invalid type
validatePublisherSection* functions validatePublisherSectionArea
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid ID
  ✅ should reject any other non-null data type
validatePublisherSection* functions validatePublisherSectionBeginDate
  ✅ should pass an empty value object
  ✅ should pass an object containing a valid year and month value
  ✅ should pass an object containing a valid year value
  ✅ should pass an object containing a valid year, month and day value
  ✅ should reject all other forms of invalid dates
validatePublisherSection* functions validatePublisherSectionEndDate
  ✅ should pass if the begin date is empty/undefined/invalid
  ✅ should pass if the begin date occurs before the end one
  ✅ should reject if the begin date occurs after the end one
  ✅ should reject if the end date is invalid
validatePublisherSection* functions validatePublisherSectionEnded
  ✅ should pass a null value
  ✅ should pass any boolean value
  ✅ should reject any non-boolean value
validatePublisherSection* functions validatePublisherSectionType
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero

✅ test/validators/test-series.js

validateSeriesSection* functions validateForm
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an Object with an empty submission section
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid alias editor
  ✅ should reject an Object with an invalid identifier editor
  ✅ should reject an Object with an invalid name section
  ✅ should reject an Object with an invalid series section
  ✅ should reject any other non-null data type
validateSeriesSection* functions validateSeriesSection
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid ordering type
  ✅ should reject an Object with an invalid series type
  ✅ should reject any other non-null data type
validateSeriesSection* functions validateSeriesSectionEntityType
  ✅ should return false if passed a invalid series type
  ✅ should return true if passed a valid series type
validateSeriesSection* functions validateSeriesSectionOrderingType
  ✅ should pass any positive integer value
  ✅ should reject a null value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero

✅ test/validators/test-submission-section.js

validateSubmissionSection* functions validateSubmissionSection
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an empty note Immutable.Map
  ✅ should pass an Object with an empty note
  ✅ should reject any other non-null data type
validateSubmissionSection* functions validateSubmissionSectionNote
  ✅ should pass a null value
  ✅ should pass an empty string
  ✅ should pass any non-empty string value
  ✅ should reject any non-string value

✅ test/validators/test-work.js

validateWorkSection* functions validateForm
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass an Object with an empty submission section
  ✅ should reject a null value
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid alias editor
  ✅ should reject an Object with an invalid identifier editor
  ✅ should reject an Object with an invalid name section
  ✅ should reject an Object with an invalid work section
  ✅ should reject any other non-null data type
validateWorkSection* functions validateWorkSection
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should pass any other non-null data type
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid language
  ✅ should reject an Object with an invalid type
validateWorkSection* functions validateWorkSectionLanguage
  ✅ should pass a null value
  ✅ should pass a valid Immutable.Map
  ✅ should pass a valid Object
  ✅ should reject an invalid Immutable.Map
  ✅ should reject an Object with an invalid value
  ✅ should reject any other non-null data type
validateWorkSection* functions validateWorkSectionType
  ✅ should pass a null value
  ✅ should pass any positive integer value
  ✅ should reject an negative number
  ✅ should reject any non-number value
  ✅ should reject NaN
  ✅ should reject zero