This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/tests/test_rate.py

81 lines
3.0 KiB
Python
Raw Normal View History

2018-10-15 09:21:21 +00:00
from decimal import Decimal
2018-06-10 16:47:49 +00:00
from distutils.version import StrictVersion
import pytest
from ereuse_devicehub.db import db
from ereuse_devicehub.resources.device.models import Computer, Desktop, HardDrive, Processor, \
RamModule
2019-04-23 19:30:08 +00:00
from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, \
FunctionalityRange
from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, \
BenchmarkProcessor, EreusePrice, RateComputer, TestVisual
2018-08-08 19:25:53 +00:00
from tests import conftest
2018-06-10 16:47:49 +00:00
2018-08-08 19:25:53 +00:00
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
2018-07-14 14:41:22 +00:00
def test_workbench_rate_db():
2019-04-23 19:30:08 +00:00
rate = RateComputer(processor=0.1,
ram=1.0,
graphic_card=0.1,
data_storage=4.1,
version=StrictVersion('1.0'),
device=Computer(serial_number='24', chassis=ComputerChassis.Tower))
2018-06-10 16:47:49 +00:00
db.session.add(rate)
db.session.commit()
@pytest.mark.xfail(reason='AggreagteRate only takes data from WorkbenchRate as for now')
def test_rate_workbench_then_manual():
2019-04-23 19:30:08 +00:00
"""Checks that a new Rate is generated with a new rate
value when a TestVisual is performed after performing a
RateComputer.
2019-04-23 19:30:08 +00:00
The new Rate needs to be computed by the values of
the appearance and funcitonality grade of TestVisual.
"""
pass
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_rate():
2019-04-23 19:30:08 +00:00
"""Test generating an Rate for a given PC / components /
RateComputer ensuring results and relationships between
pc - rate - RateComputer - price.
"""
2018-10-18 08:09:10 +00:00
pc = Desktop(chassis=ComputerChassis.Tower)
hdd = HardDrive(size=476940)
hdd.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8))
cpu = Processor(cores=2, speed=3.4)
cpu.events_one.add(BenchmarkProcessor(rate=27136.44))
pc.components |= {
hdd,
RamModule(size=4096, speed=1600),
RamModule(size=2048, speed=1067),
cpu
}
2019-04-23 19:30:08 +00:00
# Add test visual with functionality and appearance range
visual_test = TestVisual()
visual_test.appearance_range = AppearanceRange.A
visual_test.functionality_range = FunctionalityRange.A
pc.events_one.add(visual_test)
rate, price = RateComputer.compute(pc)
2019-04-23 19:30:08 +00:00
# TODO why events_one?? how to rewrite correctly this tests??
events = pc.events
price = next(e for e in events if isinstance(e, EreusePrice))
2018-10-15 09:21:21 +00:00
assert price.price == Decimal('92.2001')
assert price.retailer.standard.amount == Decimal('40.9714')
assert price.platform.standard.amount == Decimal('18.8434')
assert price.refurbisher.standard.amount == Decimal('32.3853')
assert price.price >= price.retailer.standard.amount \
+ price.platform.standard.amount \
+ price.refurbisher.standard.amount
2018-10-15 09:21:21 +00:00
assert price.retailer.warranty2.amount == Decimal('55.3085')
assert price.platform.warranty2.amount == Decimal('25.4357')
assert price.refurbisher.warranty2.amount == Decimal('43.7259')
assert price.warranty2 == Decimal('124.47')