Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
CaosDB Crawler
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
caosdb
Software
CaosDB Crawler
Commits
79cfabed
Commit
79cfabed
authored
1 year ago
by
Florian Spreckelsen
Browse files
Options
Downloads
Patches
Plain Diff
TST: Add unit test for properties from dict converter
parent
29475a37
No related branches found
Branches containing commit
No related tags found
Tags containing commit
2 merge requests
!178
FIX: #96 Better error output for crawl.py script.
,
!163
F dict heuristic
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
unittests/test_converters.py
+125
-6
125 additions, 6 deletions
unittests/test_converters.py
with
125 additions
and
6 deletions
unittests/test_converters.py
+
125
−
6
View file @
79cfabed
...
...
@@ -39,15 +39,16 @@ from caoscrawler.converters import (Converter, ConverterValidationError,
DictIntegerElementConverter
,
DirectoryConverter
,
FloatElementConverter
,
IntegerElementConverter
,
JSONFileConverter
,
ListElementConverter
,
MarkdownFileConverter
,
YAMLFileConverter
,
ListElementConverter
,
MarkdownFileConverter
,
PropertiesFromDictConverter
,
YAMLFileConverter
,
_AbstractScalarValueElementConverter
,
handle_value
,
replace_variables
)
from
caoscrawler.crawl
import
Crawler
from
caoscrawler.scanner
import
(
_load_definition_from_yaml_dict
,
create_converter_registry
,
create_transformer_registry
,
load_definition
)
from
caoscrawler.stores
import
GeneralStore
from
caoscrawler.stores
import
GeneralStore
,
RecordStore
from
caoscrawler.structure_elements
import
(
BooleanElement
,
DictElement
,
Directory
,
File
,
FloatElement
,
IntegerElement
,
ListElement
,
...
...
@@ -72,8 +73,8 @@ def converter_registry():
"
DictElement
"
:
{
"
converter
"
:
"
DictElementConverter
"
,
"
package
"
:
"
caoscrawler.converters
"
},
"
Heuristic
DictElement
"
:
{
"
converter
"
:
"
Heuristic
DictConverter
"
,
"
PropertiesFrom
DictElement
"
:
{
"
converter
"
:
"
PropertiesFrom
DictConverter
"
,
"
package
"
:
"
caoscrawler.converters
"
},
"
TextElement
"
:
{
...
...
@@ -665,8 +666,126 @@ def test_create_path_value(converter_registry):
assert
values
[
"
Test.path
"
]
==
"
/a
"
def
test_
dict_heurist
ic_basic
():
def
test_
properties_from_d
ic
t
_basic
(
converter_registry
):
"""
Test that a record with the correct name and properties is created, and
that the children are still created correctly.
"""
# TODO definitions with blacklist and named references
pfdc
=
PropertiesFromDictConverter
(
definition
=
{
"
type
"
:
"
DictElement
"
,
"
match
"
:
"
.*
"
,
"
record_from_dict
"
:
{
"
variable_name
"
:
"
MyRec
"
,
"
parents
"
:
[
"
DictRT1
"
,
"
DictRT2
"
],
"
properties_blacklist
"
:
[
"
blacklisted_int
"
,
"
blacklisted_ref
"
],
"
references
"
:
{
"
authors
"
:
{
"
parents
"
:
[
"
Person
"
]
}
}
}
},
name
=
"
Test
"
,
converter_registry
=
converter_registry
)
# TODO: Tests for Dict with skalars, dict with lists, dict with reference,
# dict with list of references, dict with reference with reference, named
# reference
values
=
GeneralStore
()
records
=
RecordStore
()
test_dict_element
=
DictElement
(
"
TestDictElement
"
,
{
"
a
"
:
5
,
"
b
"
:
[
"
a
"
,
"
b
"
,
"
c
"
],
"
scalar_ref
"
:
{
"
a
"
:
23
,
"
blacklisted_int
"
:
42
},
"
list_ref
"
:
[
{
"
c
"
:
True
},
{
"
c
"
:
False
}
],
"
ref_with_ref
"
:
{
"
a
"
:
789
,
"
ref_in_ref
"
:
{
"
b
"
:
"
something
"
}
},
"
blacklisted_int
"
:
-
123
,
"
blacklisted_ref
"
:
{
"
a
"
:
25
},
"
author
"
:
{
"
full_name
"
:
"
Some Author
"
}
})
pfdc
.
create_records
(
values
=
values
,
records
=
records
,
element
=
test_dict_element
)
assert
"
MyRec
"
in
records
my_rec
=
records
[
"
MyRec
"
]
assert
isinstance
(
my_rec
,
db
.
Record
)
# scalar prop
assert
my_rec
.
get_property
(
"
a
"
)
is
not
None
assert
my_rec
.
get_property
(
"
a
"
).
value
==
5
# list prop
assert
my_rec
.
get_property
(
"
b
"
)
is
not
None
assert
len
(
my_rec
.
get_property
(
"
b
"
).
value
)
==
3
for
elt
in
[
"
a
"
,
"
b
"
,
"
c
"
]:
assert
elt
in
my_rec
.
get_property
(
"
b
"
).
value
# scalar ref
assert
my_rec
.
get_property
(
"
scalar_ref
"
)
is
not
None
referenced
=
my_rec
.
get_property
(
"
scalar_ref
"
).
value
assert
isinstance
(
referenced
,
db
.
Record
)
assert
len
(
referenced
.
parents
)
==
1
assert
"
scalar_ref
"
in
[
par
.
name
for
par
in
referenced
.
parents
]
assert
referenced
.
get_property
(
"
a
"
)
is
not
None
assert
referenced
.
get_property
(
"
a
"
).
value
==
23
# blacklisted
assert
referenced
.
get_property
(
"
blacklisted_int
"
)
is
None
# list of ref
assert
my_rec
.
get_property
(
"
list_ref
"
)
is
not
None
assert
isinstance
(
my_rec
.
get_property
(
"
list_ref
"
).
value
,
list
)
assert
len
(
my_rec
.
get_property
(
"
list_ref
"
).
value
)
==
2
for
rec
in
my_rec
.
get_property
(
"
list_ref
"
).
value
:
assert
isinstance
(
rec
,
db
.
Record
)
assert
len
(
rec
.
parents
)
==
1
assert
"
list_ref
"
in
[
par
.
name
for
par
in
rec
.
parents
]
assert
rec
.
get_property
(
"
c
"
)
is
not
None
assert
type
(
rec
.
get_property
(
"
c
"
))
is
bool
assert
True
in
[
rec
.
get_property
(
"
c
"
).
value
for
rec
in
my_rec
.
get_property
(
"
list_ref
"
).
value
]
assert
False
in
[
rec
.
get_property
(
"
c
"
).
value
for
rec
in
my_rec
.
get_property
(
"
list_ref
"
).
value
]
# ref with ref
assert
my_rec
.
get_property
(
"
ref_with_ref
"
)
is
not
None
outer_rec
=
my_rec
.
get_property
(
"
ref_with_ref
"
).
value
assert
isinstance
(
outer_rec
,
db
.
Record
)
assert
len
(
outer_rec
.
parents
)
==
1
assert
"
ref_with_ref
"
in
[
par
.
name
for
par
in
outer_rec
.
parents
]
assert
outer_rec
.
get_property
(
"
a
"
)
is
not
None
assert
outer_rec
.
get_property
(
"
a
"
).
value
==
789
assert
outer_rec
.
get_property
(
"
ref_in_ref
"
)
is
not
None
inner_rec
=
outer_rec
.
get_property
(
"
ref_in_ref
"
).
value
assert
isinstance
(
inner_rec
,
db
.
Record
)
assert
len
(
inner_rec
.
parents
)
==
1
assert
"
ref_in_ref
"
in
[
par
.
name
for
par
in
inner_rec
.
parents
]
assert
inner_rec
.
get_property
(
"
b
"
)
is
not
None
assert
inner_rec
.
get_property
(
"
b
"
).
value
==
"
something
"
# blacklisted
assert
my_rec
.
get_property
(
"
blacklisted_int
"
)
is
None
assert
my_rec
.
get_property
(
"
blacklisted_ref
"
)
is
None
# named reference property
assert
my_rec
.
get_property
(
"
author
"
)
is
not
None
author_rec
=
my_rec
.
get_property
(
"
author
"
).
value
assert
isinstance
(
author_rec
,
db
.
Record
)
assert
len
(
author_rec
.
parents
)
==
1
assert
"
Person
"
in
[
par
.
name
for
par
in
author_rec
.
parents
]
assert
author_rec
.
get_property
(
"
full_name
"
)
is
not
None
assert
author_rec
.
get_property
(
"
full_name
"
).
value
==
"
Some Author
"
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment