renamem orders
This commit is contained in:
0
orders-events/tests/events/__init__.py
Normal file
0
orders-events/tests/events/__init__.py
Normal file
0
orders-events/tests/events/billing/__init__.py
Normal file
0
orders-events/tests/events/billing/__init__.py
Normal file
43
orders-events/tests/events/billing/test_append_enrollment.py
Normal file
43
orders-events/tests/events/billing/test_append_enrollment.py
Normal file
@@ -0,0 +1,43 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
||||
|
||||
import events.billing.append_enrollment as app
|
||||
|
||||
|
||||
def test_append_enrollment(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
enrollment_id = '945e8672-1d72-45c6-b76c-ac06aa8b52ab'
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': enrollment_id,
|
||||
'sk': 'METADATA#SUBSCRIPTION_COVERED',
|
||||
'billing_day': 6,
|
||||
'created_at': '2025-07-23T18:09:22.785678-03:00',
|
||||
'org_id': 'cJtK9SsnJhKPyxESe7g3DG',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
r = dynamodb_persistence_layer.collection.query(
|
||||
KeyPair('BILLING#ORG#cJtK9SsnJhKPyxESe7g3DG', 'START#2025-05-06#END#2025-06-05')
|
||||
)
|
||||
items = r['items']
|
||||
|
||||
assert items[0]['sk'] == 'START#2025-05-06#END#2025-06-05#SCHEDULE#AUTO_CLOSE'
|
||||
assert (
|
||||
items[1]['sk']
|
||||
== 'START#2025-05-06#END#2025-06-05#ENROLLMENT#945e8672-1d72-45c6-b76c-ac06aa8b52ab'
|
||||
)
|
||||
assert items[2]['sk'] == 'START#2025-05-06#END#2025-06-05'
|
||||
|
||||
print(
|
||||
dynamodb_persistence_layer.collection.get_item(
|
||||
KeyPair(enrollment_id, 'METADATA#SUBSCRIPTION_COVERED')
|
||||
)
|
||||
)
|
||||
69
orders-events/tests/events/billing/test_cancel_enrollment.py
Normal file
69
orders-events/tests/events/billing/test_cancel_enrollment.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dateutils import now
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
||||
|
||||
import events.billing.cancel_enrollment as app
|
||||
from utils import get_billing_period
|
||||
|
||||
enrollment_id = '77055ad7-03e1-4b07-98dc-a2f1a90913ba'
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': enrollment_id,
|
||||
'sk': '0',
|
||||
'user': {
|
||||
'id': '5OxmMjL-ujoR5IMGegQz',
|
||||
'name': 'Sérgio R Siqueira',
|
||||
},
|
||||
'course': {
|
||||
'id': '123',
|
||||
'name': 'pytest',
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def test_cancel_enrollment(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
now_ = now()
|
||||
start_date, end_date = get_billing_period(
|
||||
billing_day=6,
|
||||
date_=now_,
|
||||
)
|
||||
pk = 'BILLING#ORG#cJtK9SsnJhKPyxESe7g3DG'
|
||||
sk = 'START#{start}#END#{end}#ENROLLMENT#{enrollment_id}'.format(
|
||||
start=start_date.isoformat(),
|
||||
end=end_date.isoformat(),
|
||||
enrollment_id=enrollment_id,
|
||||
)
|
||||
# Add up-to-date enrollment item to billing
|
||||
dynamodb_persistence_layer.put_item(
|
||||
item={
|
||||
'id': pk,
|
||||
'sk': sk,
|
||||
'unit_price': 100,
|
||||
'course': {'id': '123', 'name': 'pytest'},
|
||||
'user': {'id': '5OxmMjL-ujoR5IMGegQz', 'name': 'Sérgio R Siqueira'},
|
||||
'enrolled_at': now_,
|
||||
}
|
||||
)
|
||||
|
||||
event['detail']['new_image']['created_at'] = now_.isoformat()
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
r = dynamodb_persistence_layer.collection.query(KeyPair(pk, sk))
|
||||
assert len(r['items']) == 2
|
||||
assert sum(x['unit_price'] for x in r['items']) == 0
|
||||
|
||||
|
||||
def test_cancel_old_enrollment(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event['detail']['new_image']['created_at'] = '2025-06-05T12:13:54.371416+00:00'
|
||||
assert not app.lambda_handler(event, lambda_context) # type: ignore
|
||||
38
orders-events/tests/events/billing/test_close_window.py
Normal file
38
orders-events/tests/events/billing/test_close_window.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dynamodb import (
|
||||
DynamoDBPersistenceLayer,
|
||||
SortKey,
|
||||
TransactKey,
|
||||
)
|
||||
|
||||
import events.billing.close_window as app
|
||||
|
||||
|
||||
def test_close_window(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event = {
|
||||
'detail': {
|
||||
'keys': {
|
||||
'id': 'BILLING#ORG#cJtK9SsnJhKPyxESe7g3DG',
|
||||
'sk': 'START#2025-07-01#END#2025-07-31#SCHEDULE#AUTO_CLOSE',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
r = dynamodb_persistence_layer.collection.get_items(
|
||||
TransactKey('BILLING#ORG#cJtK9SsnJhKPyxESe7g3DG')
|
||||
+ SortKey('START#2025-07-01#END#2025-07-31')
|
||||
+ SortKey('START#2025-07-01#END#2025-07-31#SCHEDULE#AUTO_CLOSE#EXECUTED'),
|
||||
flatten_top=False,
|
||||
)
|
||||
|
||||
assert 's3_uri' in r['START#2025-07-01#END#2025-07-31']
|
||||
assert 'created_at' in r['START#2025-07-01#END#2025-07-31']
|
||||
assert 'updated_at' in r['START#2025-07-01#END#2025-07-31']
|
||||
assert r['START#2025-07-01#END#2025-07-31']['status'] == 'CLOSED'
|
||||
assert 'START#2025-07-01#END#2025-07-31#SCHEDULE#AUTO_CLOSE#EXECUTED' in r
|
||||
@@ -0,0 +1,25 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer
|
||||
|
||||
import events.billing.send_email_on_closing as app
|
||||
|
||||
|
||||
def test_send_email_on_closing(
|
||||
monkeypatch,
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': 'BILLING#ORG#cJtK9SsnJhKPyxESe7g3DG',
|
||||
'sk': 'START#2025-07-01#END#2025-07-31',
|
||||
'status': 'CLOSED',
|
||||
's3_uri': 's3://saladeaula.digital/billing/sample.pdf',
|
||||
},
|
||||
}
|
||||
}
|
||||
monkeypatch.setattr(app.sesv2_client, 'send_email', lambda *args, **kwargs: ...)
|
||||
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
0
orders-events/tests/events/stopgap/__init__.py
Normal file
0
orders-events/tests/events/stopgap/__init__.py
Normal file
30
orders-events/tests/events/stopgap/test_remove_slots.py
Normal file
30
orders-events/tests/events/stopgap/test_remove_slots.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from layercake.dynamodb import PartitionKey
|
||||
|
||||
import events.stopgap.remove_slots as app
|
||||
|
||||
from ...conftest import LambdaContext
|
||||
|
||||
|
||||
def test_remove_slots(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': '9omWNKymwU5U4aeun6mWzZ',
|
||||
'sk': 'generated_items',
|
||||
'create_date': '2024-07-23T20:43:37.303418-03:00',
|
||||
'status': 'SUCCESS',
|
||||
'scope': 'MILTI_USER',
|
||||
}
|
||||
},
|
||||
}
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
result = dynamodb_persistence_layer.collection.query(
|
||||
PartitionKey('vacancies#cJtK9SsnJhKPyxESe7g3DG')
|
||||
)
|
||||
|
||||
assert len(result['items']) == 0
|
||||
24
orders-events/tests/events/stopgap/test_set_as_paid.py
Normal file
24
orders-events/tests/events/stopgap/test_set_as_paid.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
||||
|
||||
import events.stopgap.set_as_paid as app
|
||||
|
||||
|
||||
def test_set_as_paid(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': '9omWNKymwU5U4aeun6mWzZ',
|
||||
}
|
||||
}
|
||||
}
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
doc = dynamodb_persistence_layer.get_item(
|
||||
key=KeyPair('9omWNKymwU5U4aeun6mWzZ', '0'),
|
||||
)
|
||||
assert doc['status'] == 'PAID'
|
||||
27
orders-events/tests/events/test_append_org_id.py
Normal file
27
orders-events/tests/events/test_append_org_id.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, PartitionKey
|
||||
|
||||
import events.append_org_id as app
|
||||
|
||||
|
||||
def test_append_org_id(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': '9omWNKymwU5U4aeun6mWzZ',
|
||||
'cnpj': '15608435000190',
|
||||
'email': 'sergio@somosbeta.com.br',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
r = dynamodb_persistence_layer.collection.query(
|
||||
PartitionKey('9omWNKymwU5U4aeun6mWzZ')
|
||||
)
|
||||
assert 2 == len(r['items'])
|
||||
27
orders-events/tests/events/test_append_user_id.py
Normal file
27
orders-events/tests/events/test_append_user_id.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
||||
|
||||
import events.append_user_id as app
|
||||
|
||||
|
||||
def test_append_user_id(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': '9omWNKymwU5U4aeun6mWzZ',
|
||||
'cpf': '07879819908',
|
||||
'email': 'sergio@somosbeta.com.br',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
r = dynamodb_persistence_layer.collection.get_item(
|
||||
KeyPair('9omWNKymwU5U4aeun6mWzZ', '0')
|
||||
)
|
||||
assert 'user_id' in r
|
||||
28
orders-events/tests/events/test_remove_slots_if_canceled.py
Normal file
28
orders-events/tests/events/test_remove_slots_if_canceled.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, PartitionKey
|
||||
|
||||
import events.remove_slots_if_canceled as app
|
||||
|
||||
|
||||
def test_remove_slots_if_canceled(
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
event = {
|
||||
'detail': {
|
||||
'new_image': {
|
||||
'id': '9omWNKymwU5U4aeun6mWzZ',
|
||||
'status': 'CANCELED',
|
||||
'tenant_id': 'cJtK9SsnJhKPyxESe7g3DG',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||
|
||||
r = dynamodb_persistence_layer.collection.query(
|
||||
PartitionKey('vacancies#cJtK9SsnJhKPyxESe7g3DG')
|
||||
)
|
||||
|
||||
assert len(r['items']) == 0
|
||||
Reference in New Issue
Block a user