Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Romain Courteaud
slapos.core
Commits
25d2fc6b
Commit
25d2fc6b
authored
Sep 27, 2022
by
Romain Courteaud
🐸
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapos_erp5: WIP test for variated resource on open order...
parent
b76b2aa3
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
147 additions
and
3 deletions
+147
-3
master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5VirtualMasterScenario.py
...mponents/test.erp5.testSlapOSERP5VirtualMasterScenario.py
+147
-3
No files found.
master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5VirtualMasterScenario.py
View file @
25d2fc6b
...
...
@@ -149,7 +149,7 @@ class TestSlapOSVirtualMasterScenario(DefaultScenarioMixin):
# 3 (can reduce to 2) assignment, 1 instance tree, 1 compute node, 1 software installation
# 1 software instance
# 2 credential request
related_object_list
=
project
.
Base_getRelatedObjectList
()
related_object_list
=
project
.
Base_getRelatedObjectList
(
**
{
'category.category_strict_membership'
:
1
}
)
assert
len
(
related_object_list
)
==
9
,
[
x
.
getRelativeUrl
()
for
x
in
related_object_list
]
self
.
stepcheckERP5Consistency
()
...
...
@@ -159,7 +159,8 @@ class TestSlapOSVirtualMasterScenario(DefaultScenarioMixin):
assert
last_message
is
None
,
last_message
def
test_open_order_scenario
(
self
):
def
test_open_order_with_service_scenario
(
self
):
# create a default project
project
=
self
.
addProject
()
person
=
self
.
portal
.
person_module
.
newContent
(
...
...
@@ -256,4 +257,147 @@ class TestSlapOSVirtualMasterScenario(DefaultScenarioMixin):
# after accept, an email is send containing the reset link
last_message
=
self
.
portal
.
MailHost
.
_last_message
assert
last_message
is
None
,
last_message
\ No newline at end of file
assert
last_message
is
None
,
last_message
def
test_open_order_with_software_product_scenario
(
self
):
# create a default project
project
=
self
.
addProject
()
person
=
self
.
portal
.
person_module
.
newContent
(
portal_type
=
"Person"
,
default_email_coordinate_text
=
'a@example.org'
,
)
organisation
=
self
.
portal
.
organisation_module
.
newContent
(
portal_type
=
"Organisation"
)
sale_trade_condition
=
self
.
portal
.
sale_trade_condition_module
.
newContent
(
portal_type
=
"Sale Trade Condition"
,
reference
=
'slapos_ultimate_trade_condition'
,
# XXX hardcoded
specialise
=
"business_process_module/slapos_ultimate_business_process"
)
sale_trade_condition
.
newContent
(
portal_type
=
"Trade Model Line"
,
reference
=
"VAT"
,
resource
=
"service_module/slapos_tax"
,
base_application
=
"base_amount/invoicing/taxable"
,
trade_phase
=
"slapos/tax"
,
price
=
0.2
,
quantity
=
1.0
,
membership_criterion_base_category
=
(
'price_currency'
,),
membership_criterion_category
=
(
'price_currency/currency_module/EUR'
,)
)
sale_trade_condition
.
validate
()
software_product
=
self
.
portal
.
software_product_module
.
newContent
(
portal_type
=
"Software Product"
,
title
=
"foo software product"
,
follow_up_value
=
project
,
quantity_unit
=
'time/month'
,
)
software_product
.
newContent
(
portal_type
=
"Software Product Release Variation"
,
title
=
"my super release"
)
software_product
.
newContent
(
portal_type
=
"Software Product Type Variation"
,
title
=
"my super type"
)
software_product
.
validate
()
for
_
in
range
(
1
):
hosting_subscription
=
self
.
portal
.
hosting_subscription_module
.
newContent
(
portal_type
=
"Hosting Subscription"
,
# XXX hardcoded
ledger
=
"automated"
,
)
hosting_subscription
.
validate
()
start_date
=
hosting_subscription
.
HostingSubscription_calculateSubscriptionStartDate
()
# create open order
open_sale_order
=
self
.
portal
.
open_sale_order_module
.
newContent
(
portal_type
=
"Open Sale Order"
,
ledger
=
hosting_subscription
.
getLedger
(),
destination_project_value
=
project
,
source_value
=
organisation
,
source_section_value
=
organisation
,
destination_value
=
person
,
destination_section_value
=
person
,
destination_decision_value
=
person
,
price_currency
=
'currency_module/EUR'
,
payment_mode
=
"payzen"
,
start_date
=
start_date
,
# Ensure stop date value is higher than start date
# it will be updated by OpenSaleOrder_updatePeriod
stop_date
=
start_date
+
1
,
specialise_value
=
sale_trade_condition
)
resource_vcl
=
list
(
software_product
.
getVariationCategoryList
(
omit_individual_variation
=
0
))
resource_vcl
.
sort
()
open_order_line
=
open_sale_order
.
newContent
(
portal_type
=
"Open Sale Order Line"
,
#quantity=10,
#price=2,
resource_value
=
software_product
,
aggregate_value
=
[
hosting_subscription
,
# XXX instance tree instead
project
],
variation_category_list
=
resource_vcl
# XXX constraint
#software_type_value=software_type,
#software_release_value=software_release,
)
base_id
=
'path'
cell_key
=
list
(
open_order_line
.
getCellKeyList
(
base_id
=
base_id
))[
0
]
#cell_key_list.sort()
open_order_cell
=
open_order_line
.
newCell
(
base_id
=
base_id
,
portal_type
=
'Open Sale Order Cell'
,
*
cell_key
)
open_order_cell
.
edit
(
mapped_value_property_list
=
[
'price'
,
'quantity'
],
price
=
3
,
quantity
=
4
,
predicate_category_list
=
cell_key
,
variation_category_list
=
cell_key
)
open_sale_order
.
order
()
open_sale_order
.
validate
()
self
.
tic
()
# XXX Do this for every scenario tests
self
.
logout
()
for
_
in
range
(
20
):
self
.
stepCallAlarmList
()
self
.
tic
()
self
.
login
()
# Ensure no unexpected object has been created
# destination project:
# 1 open order
# 2 accounting transaction
# 1 packing list
# 7 simulation mvt
# aggregate:
# 1 invoice line
# 1 packing list line
# 1 open order line
# related_object_list = project.Base_getRelatedObjectList(**{'category.category_strict_membership': 1})
# XXX XXX XXX assert len(related_object_list) == 14, [x.getRelativeUrl() for x in related_object_list]
self
.
stepcheckERP5Consistency
()
# after accept, an email is send containing the reset link
last_message
=
self
.
portal
.
MailHost
.
_last_message
assert
last_message
is
None
,
last_message
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment