Page Menu
Home
Sealhub
Search
Configure Global Search
Log In
Files
F996235
disallow-update.subtest.ts
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
disallow-update.subtest.ts
View Options
import
{
App
,
Field
,
Context
,
Collection
}
from
"../../../main"
;
import
assert
from
"assert"
;
import
{
withRunningApp
}
from
"../../../test_utils/with-test-app"
;
import
{
assertThrowsAsync
}
from
"../../../test_utils/assert-throws-async"
;
const
url
=
"/api/v1/collections/constseals"
;
describe
(
"disallow-update"
,
()
=>
{
async
function
setup
(
app
:
App
)
{
class
NullOrFive
extends
Field
{
getTypeName
=
()
=>
"null-or-five"
;
async
isProperValue
(
_
:
Context
,
__
:
any
,
new_value
:
any
)
{
if
(
new_value
===
null
||
new_value
===
5
)
{
return
Field
.
valid
();
}
return
Field
.
invalid
(
"Null or five, you got it?"
);
}
}
Collection
.
fromDefinition
(
app
,
{
name
:
"constseals"
,
fields
:
[
{
name
:
"age"
,
type
:
"disallow-update"
,
params
:
{
target_field
:
{
type
:
"int"
,
params
:
{
min
:
0
,
},
},
},
required
:
true
,
},
{
name
:
"attribute"
,
type
:
"disallow-update"
,
params
:
{
target_field
:
{
type
:
NullOrFive
,
},
},
required
:
true
,
},
],
access_strategy
:
{
default
:
"public"
,
},
});
}
it
(
"Respects target field type"
,
()
=>
withRunningApp
(
async
({
app
,
rest_api
})
=>
{
await
setup
(
app
);
await
assertThrowsAsync
(
()
=>
rest_api
.
post
(
url
,
{
age
:
"abc"
,
attribute
:
5
}),
(
error
)
=>
{
assert
.
deepEqual
(
error
.
response
.
data
.
data
.
age
.
message
,
"Value 'abc' is not a int number format."
);
}
);
}));
it
(
"Respects target field params"
,
()
=>
withRunningApp
(
async
({
app
,
rest_api
})
=>
{
await
setup
(
app
);
await
assertThrowsAsync
(
()
=>
rest_api
.
post
(
url
,
{
age
:
-
2
}),
(
error
)
=>
assert
.
deepEqual
(
error
.
response
.
data
.
data
.
age
.
message
,
"Value should be larger or equal to '0'."
)
);
}));
it
(
"Initially allows to insert a value"
,
()
=>
withRunningApp
(
async
({
app
,
rest_api
})
=>
{
await
setup
(
app
);
await
rest_api
.
post
(
url
,
{
age
:
2
,
attribute
:
5
});
}));
it
(
"Rejects a new value if there's an old value"
,
()
=>
withRunningApp
(
async
({
app
,
rest_api
})
=>
{
await
setup
(
app
);
const
{
id
}
=
await
rest_api
.
post
(
url
,
{
age
:
18
,
attribute
:
null
,
});
await
assertThrowsAsync
(
()
=>
rest_api
.
patch
(
`
${
url
}
/
${
id
}
`
,
{
age
:
21
}),
(
error
)
=>
assert
.
deepEqual
(
error
.
response
.
data
.
data
.
age
.
message
,
"You cannot change previously set value."
)
);
}));
it
(
"Rejects a new value if the old value is `null`"
,
()
=>
withRunningApp
(
async
({
app
,
rest_api
})
=>
{
await
setup
(
app
);
const
{
id
}
=
await
rest_api
.
post
(
url
,
{
age
:
21
,
attribute
:
null
,
});
await
assertThrowsAsync
(
()
=>
rest_api
.
patch
(
`
${
url
}
/
${
id
}
`
,
{
attribute
:
5
}),
(
error
)
=>
assert
.
deepEqual
(
error
.
response
.
data
.
data
.
attribute
.
message
,
"You cannot change previously set value."
)
);
}));
});
File Metadata
Details
Attached
Mime Type
text/x-java
Expires
Tue, Dec 24, 14:02 (1 d, 1 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
557126
Default Alt Text
disallow-update.subtest.ts (2 KB)
Attached To
Mode
rS Sealious
Attached
Detach File
Event Timeline
Log In to Comment