rewrite some tests to rate v2 structure
This commit is contained in:
parent
2108526cec
commit
7bb514d23c
|
@ -3,22 +3,25 @@ from distutils.version import StrictVersion
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from ereuse_devicehub.client import UserClient
|
||||||
from ereuse_devicehub.db import db
|
from ereuse_devicehub.db import db
|
||||||
from ereuse_devicehub.resources.device.models import Computer, Desktop, HardDrive, Processor, \
|
from ereuse_devicehub.resources.device.models import Computer, Desktop, HardDrive, Processor, \
|
||||||
RamModule
|
RamModule
|
||||||
from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, \
|
from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, \
|
||||||
FunctionalityRange
|
FunctionalityRange
|
||||||
from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, \
|
from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, \
|
||||||
BenchmarkProcessor, EreusePrice, RateComputer, TestVisual
|
BenchmarkProcessor, RateComputer, TestVisual, Snapshot
|
||||||
|
from ereuse_devicehub.resources.event.rate.workbench.v1_0 import CannotRate
|
||||||
from tests import conftest
|
from tests import conftest
|
||||||
|
from tests.conftest import file
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
|
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
|
||||||
def test_workbench_rate_db():
|
def test_workbench_rate_db():
|
||||||
rate = RateComputer(processor=0.1,
|
rate = RateComputer(processor=0.1,
|
||||||
ram=1.0,
|
ram=1.0,
|
||||||
graphic_card=0.1,
|
|
||||||
data_storage=4.1,
|
data_storage=4.1,
|
||||||
|
graphic_card=0.1,
|
||||||
version=StrictVersion('1.0'),
|
version=StrictVersion('1.0'),
|
||||||
device=Computer(serial_number='24', chassis=ComputerChassis.Tower))
|
device=Computer(serial_number='24', chassis=ComputerChassis.Tower))
|
||||||
db.session.add(rate)
|
db.session.add(rate)
|
||||||
|
@ -64,9 +67,8 @@ def test_rate():
|
||||||
pc.events_one.add(visual_test)
|
pc.events_one.add(visual_test)
|
||||||
rate, price = RateComputer.compute(pc)
|
rate, price = RateComputer.compute(pc)
|
||||||
|
|
||||||
# TODO why events_one?? how to rewrite correctly this tests??
|
# events = pc.events
|
||||||
events = pc.events
|
# price = next(e for e in events if isinstance(e, EreusePrice))
|
||||||
price = next(e for e in events if isinstance(e, EreusePrice))
|
|
||||||
assert price.price == Decimal('92.2001')
|
assert price.price == Decimal('92.2001')
|
||||||
assert price.retailer.standard.amount == Decimal('40.9714')
|
assert price.retailer.standard.amount == Decimal('40.9714')
|
||||||
assert price.platform.standard.amount == Decimal('18.8434')
|
assert price.platform.standard.amount == Decimal('18.8434')
|
||||||
|
@ -78,3 +80,43 @@ def test_rate():
|
||||||
assert price.platform.warranty2.amount == Decimal('25.4357')
|
assert price.platform.warranty2.amount == Decimal('25.4357')
|
||||||
assert price.refurbisher.warranty2.amount == Decimal('43.7259')
|
assert price.refurbisher.warranty2.amount == Decimal('43.7259')
|
||||||
assert price.warranty2 == Decimal('124.47')
|
assert price.warranty2 == Decimal('124.47')
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_rate_if_no_workbench(user: UserClient):
|
||||||
|
"""
|
||||||
|
Checks if compute a rate from snapshot software is not from Workbench
|
||||||
|
"""
|
||||||
|
# Upload a basic snapshot
|
||||||
|
device_no_wb = file('basic.snapshot')
|
||||||
|
# Change snapshot software source
|
||||||
|
device_no_wb['software'] = 'Web'
|
||||||
|
del device_no_wb['uuid']
|
||||||
|
del device_no_wb['elapsed']
|
||||||
|
del device_no_wb['components']
|
||||||
|
# Try to compute rate
|
||||||
|
user.post(device_no_wb, res=Snapshot)
|
||||||
|
# How to assert CannotRate Exception
|
||||||
|
assert CannotRate
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_rate_if_no_visual_test(user: UserClient):
|
||||||
|
"""
|
||||||
|
Checks if a rate is calculated from a snapshot without visual test
|
||||||
|
"""
|
||||||
|
# Upload a basic snapshot
|
||||||
|
device = file('basic.snapshot')
|
||||||
|
# Delete snapshot device events
|
||||||
|
del device['device']['events']
|
||||||
|
user.post(device, res=Snapshot)
|
||||||
|
# How to assert CannotRate Exception
|
||||||
|
assert CannotRate
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_rate_if_device_is_not_computer(user: UserClient):
|
||||||
|
"""
|
||||||
|
Checks if a rate is calculated from a device that is not a computer.
|
||||||
|
"""
|
||||||
|
# Upload a basic snapshot of a device type
|
||||||
|
device = file('keyboard.snapshot')
|
||||||
|
user.post(device, res=Snapshot)
|
||||||
|
assert CannotRate
|
||||||
|
|
|
@ -13,11 +13,12 @@ from ereuse_devicehub.db import db
|
||||||
from ereuse_devicehub.devicehub import Devicehub
|
from ereuse_devicehub.devicehub import Devicehub
|
||||||
from ereuse_devicehub.resources.device import models as m
|
from ereuse_devicehub.resources.device import models as m
|
||||||
from ereuse_devicehub.resources.device.exceptions import NeedsId
|
from ereuse_devicehub.resources.device.exceptions import NeedsId
|
||||||
|
from ereuse_devicehub.resources.device.models import SolidStateDrive
|
||||||
from ereuse_devicehub.resources.device.sync import MismatchBetweenProperties, \
|
from ereuse_devicehub.resources.device.sync import MismatchBetweenProperties, \
|
||||||
MismatchBetweenTagsAndHid
|
MismatchBetweenTagsAndHid
|
||||||
from ereuse_devicehub.resources.enums import ComputerChassis, SnapshotSoftware
|
from ereuse_devicehub.resources.enums import ComputerChassis, SnapshotSoftware
|
||||||
from ereuse_devicehub.resources.event.models import BenchmarkProcessor, \
|
from ereuse_devicehub.resources.event.models import BenchmarkProcessor, \
|
||||||
EraseSectors, Event, Snapshot, SnapshotRequest, RateComputer, Rate, TestVisual, BenchmarkDataStorage
|
EraseSectors, Event, Snapshot, SnapshotRequest, RateComputer, TestVisual, BenchmarkDataStorage
|
||||||
from ereuse_devicehub.resources.tag import Tag
|
from ereuse_devicehub.resources.tag import Tag
|
||||||
from ereuse_devicehub.resources.user.models import User
|
from ereuse_devicehub.resources.user.models import User
|
||||||
from tests.conftest import file
|
from tests.conftest import file
|
||||||
|
@ -241,7 +242,6 @@ def test_snapshot_tag_inner_tag(tag_id: str, user: UserClient, app: Devicehub):
|
||||||
b = file('basic.snapshot')
|
b = file('basic.snapshot')
|
||||||
b['device']['tags'] = [{'type': 'Tag', 'id': tag_id}]
|
b['device']['tags'] = [{'type': 'Tag', 'id': tag_id}]
|
||||||
|
|
||||||
# TODO fix assert fail expected 3 and len(snapshot['events']) == 2; why? need param perform??
|
|
||||||
snapshot_and_check(user, b,
|
snapshot_and_check(user, b,
|
||||||
event_types=(
|
event_types=(
|
||||||
RateComputer.t,
|
RateComputer.t,
|
||||||
|
@ -316,19 +316,18 @@ def test_erase_privacy_standards(user: UserClient):
|
||||||
BenchmarkDataStorage.t,
|
BenchmarkDataStorage.t,
|
||||||
BenchmarkProcessor.t
|
BenchmarkProcessor.t
|
||||||
), perform_second_snapshot=True)
|
), perform_second_snapshot=True)
|
||||||
# TODO fix order snapshot[events] ?? cause change in every execution?? why KeyError??
|
erase = next(e for e in snapshot['events'] if e['type'] == EraseSectors.t)
|
||||||
assert '2018-06-01T07:12:06+00:00' == snapshot['events'][0]['endTime']
|
assert '2018-06-01T07:12:06+00:00' == erase['endTime']
|
||||||
storage, *_ = snapshot['components']
|
storage = next(e for e in snapshot['components'] if e['type'] == SolidStateDrive.t)
|
||||||
assert storage['type'] == 'SolidStateDrive', 'Components must be ordered by input order'
|
|
||||||
storage, _ = user.get(res=m.Device, item=storage['id']) # Let's get storage events too
|
storage, _ = user.get(res=m.Device, item=storage['id']) # Let's get storage events too
|
||||||
# order: creation time descending
|
# order: creation time ascending
|
||||||
# TODO fix same order for storage['events']??
|
erasure1, benchmark_data_storage1, _snapshot1, erasure2, benchmark_data_storage2, _snapshot2 = storage['events']
|
||||||
erasure1, benchmark_data_storage1, _snapshot1, benchmark_data_storage2, erasure2, _snapshot2 = storage['events']
|
|
||||||
assert erasure1['type'] == erasure2['type'] == 'EraseSectors'
|
assert erasure1['type'] == erasure2['type'] == 'EraseSectors'
|
||||||
assert benchmark_data_storage1['type'] == benchmark_data_storage2['type'] == 'BenchmarkDataStorage'
|
assert benchmark_data_storage1['type'] == benchmark_data_storage2['type'] == 'BenchmarkDataStorage'
|
||||||
assert _snapshot1['type'] == _snapshot2['type'] == 'Snapshot'
|
assert _snapshot1['type'] == _snapshot2['type'] == 'Snapshot'
|
||||||
get_snapshot, _ = user.get(res=Event, item=_snapshot2['id'])
|
get_snapshot, _ = user.get(res=Event, item=_snapshot2['id'])
|
||||||
assert get_snapshot['events'][0]['endTime'] == '2018-06-01T07:12:06+00:00'
|
assert get_snapshot['events'][0]['endTime'] == '2018-06-01T07:12:06+00:00'
|
||||||
|
# TODO events order are different between snapshots
|
||||||
assert snapshot == get_snapshot
|
assert snapshot == get_snapshot
|
||||||
erasure, _ = user.get(res=Event, item=erasure1['id'])
|
erasure, _ = user.get(res=Event, item=erasure1['id'])
|
||||||
assert len(erasure['steps']) == 2
|
assert len(erasure['steps']) == 2
|
||||||
|
|
Reference in New Issue