Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
H
hypha
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
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
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
ots
hypha
Commits
54daa10d
Commit
54daa10d
authored
6 years ago
by
Todd Dembrey
Browse files
Options
Downloads
Patches
Plain Diff
Add tests for the enhanced field behaviour
parent
73d58362
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
opentech/apply/stream_forms/fields.py
+1
-1
1 addition, 1 deletion
opentech/apply/stream_forms/fields.py
opentech/apply/stream_forms/files.py
+5
-1
5 additions, 1 deletion
opentech/apply/stream_forms/files.py
opentech/apply/stream_forms/tests.py
+87
-2
87 additions, 2 deletions
opentech/apply/stream_forms/tests.py
with
93 additions
and
4 deletions
opentech/apply/stream_forms/fields.py
+
1
−
1
View file @
54daa10d
...
@@ -22,7 +22,7 @@ class MultiFileInput(ClearableFileInput):
...
@@ -22,7 +22,7 @@ class MultiFileInput(ClearableFileInput):
is_initial
(
file
)
for
file
in
value
is_initial
(
file
)
for
file
in
value
)
)
def
render
(
self
,
name
,
value
,
attrs
=
None
):
def
render
(
self
,
name
,
value
,
attrs
=
dict
()
):
if
self
.
multiple
:
if
self
.
multiple
:
attrs
[
'
multiple
'
]
=
'
multiple
'
attrs
[
'
multiple
'
]
=
'
multiple
'
...
...
This diff is collapsed.
Click to expand it.
opentech/apply/stream_forms/files.py
+
5
−
1
View file @
54daa10d
...
@@ -26,7 +26,11 @@ class StreamFieldFile(File):
...
@@ -26,7 +26,11 @@ class StreamFieldFile(File):
return
self
.
filename
return
self
.
filename
def
__eq__
(
self
,
other
):
def
__eq__
(
self
,
other
):
return
self
.
filename
==
other
.
filename
and
self
.
size
==
other
.
size
if
isinstance
(
other
,
File
):
return
self
.
filename
==
other
.
filename
and
self
.
size
==
other
.
size
# Rely on the other object to know how to check equality
# Could cause infinite loop if the other object is unsure how to compare
return
other
.
__eq__
(
self
)
def
_get_file
(
self
):
def
_get_file
(
self
):
if
getattr
(
self
,
'
_file
'
,
None
)
is
None
:
if
getattr
(
self
,
'
_file
'
,
None
)
is
None
:
...
...
This diff is collapsed.
Click to expand it.
opentech/apply/stream_forms/tests.py
+
87
−
2
View file @
54daa10d
# from django.test import TestCase
from
django.core.files.uploadedfile
import
SimpleUploadedFile
from
django.test
import
TestCase
# Create your tests here.
from
faker
import
Faker
from
.files
import
StreamFieldFile
from
.fields
import
MultiFileField
,
MultiFileInput
fake
=
Faker
()
def
make_files
(
number
):
file_names
=
[
f
'
{
fake
.
word
()
}
_
{
i
}
'
for
i
in
range
(
3
)]
files
=
[
StreamFieldFile
(
SimpleUploadedFile
(
name
,
b
'
Some File Content
'
),
filename
=
name
)
for
name
in
file_names
]
return
files
class
TestMultiFileInput
(
TestCase
):
widget
=
MultiFileInput
()
def
test_renders_multiple_attr
(
self
):
html
=
self
.
widget
.
render
(
''
,
[])
self
.
assertIn
(
'
multiple
'
,
html
)
def
test_renders_multiple_files
(
self
):
files
=
make_files
(
3
)
html
=
self
.
widget
.
render
(
''
,
files
)
for
file
in
files
:
self
.
assertIn
(
file
.
filename
,
html
)
def
test_handles_files
(
self
):
field_name
=
'
testing
'
files
=
make_files
(
3
)
files_data
=
{
field_name
:
files
}
data
=
self
.
widget
.
value_from_datadict
({},
files_data
,
field_name
)
self
.
assertEqual
(
data
[
'
files
'
],
files
)
def
test_no_delete
(
self
):
data
=
self
.
widget
.
value_from_datadict
({},
{},
''
)
self
.
assertFalse
(
data
[
'
cleared
'
])
def
test_delete
(
self
):
field_name
=
'
testing
'
field_id
=
self
.
widget
.
clear_checkbox_name
(
field_name
)
+
'
-
'
form_data
=
{
field_id
+
'
0
'
:
'
on
'
,
field_id
+
'
4
'
:
'
on
'
,
}
data
=
self
.
widget
.
value_from_datadict
(
form_data
,
{},
field_name
)
self
.
assertEqual
(
data
[
'
cleared
'
],
{
0
,
4
})
class
TestMultiFileField
(
TestCase
):
field
=
MultiFileField
()
def
multi_file_value
(
self
,
files
=
list
(),
cleared
=
set
()):
return
{
'
files
'
:
files
,
'
cleared
'
:
cleared
,
}
def
test_returns_files_if_no_change
(
self
):
files
=
make_files
(
3
)
cleaned
=
self
.
field
.
clean
(
self
.
multi_file_value
(),
files
)
self
.
assertEqual
(
files
,
cleaned
)
def
test_returns_new_files
(
self
):
files
=
make_files
(
3
)
cleaned
=
self
.
field
.
clean
(
self
.
multi_file_value
(
files
=
files
),
None
)
self
.
assertEqual
(
files
,
cleaned
)
def
test_returns_inital_and_files
(
self
):
initial_files
=
make_files
(
3
)
new_files
=
make_files
(
3
)
cleaned
=
self
.
field
.
clean
(
self
.
multi_file_value
(
files
=
new_files
),
initial_files
)
self
.
assertEqual
(
initial_files
+
new_files
,
cleaned
)
def
test_returns_nothing_all_cleared
(
self
):
initial_files
=
make_files
(
3
)
cleaned
=
self
.
field
.
clean
(
self
.
multi_file_value
(
cleared
=
range
(
3
)),
initial_files
)
self
.
assertEqual
([],
cleaned
)
def
test_returns_something_some_cleared
(
self
):
initial_files
=
make_files
(
3
)
cleaned
=
self
.
field
.
clean
(
self
.
multi_file_value
(
cleared
=
[
0
,
2
]),
initial_files
)
self
.
assertEqual
([
initial_files
[
1
]],
cleaned
)
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