yandex-music-api/tests/test_product.py

195 行
7.5 KiB
Python

from yandex_music import Product
class TestProduct:
product_id = 'ru.yandex.mobile.music.1month.autorenewable.native.web.notrial.restricted.cache.99'
type = 'subscription'
common_period_duration = 'P1M'
description = None
duration = 30
trial_duration = 0
feature = 'basic-music'
debug = False
plus = False
cheapest = True
title = 'КиноПоиск HD'
family_sub = False
fb_image = ''
fb_name = 'kinopoisk-plus'
family = False
features = ['basic-music']
available = None
trial_available = None
trial_period_duration = 'P1M'
intro_period_duration = 'P1Y'
start_period_duration = 'P1M'
vendor_trial_available = None
button_text = None
button_additional_text = None
payment_method_types = None
def test_expected_values(self, product, price, licence_text_part):
assert product.product_id == self.product_id
assert product.type == self.type
assert product.common_period_duration == self.common_period_duration
assert product.duration == self.duration
assert product.trial_duration == self.trial_duration
assert product.price == price
assert product.feature == self.feature
assert product.debug == self.debug
assert product.plus == self.plus
assert product.cheapest == self.cheapest
assert product.title == self.title
assert product.family_sub == self.family_sub
assert product.fb_image == self.fb_image
assert product.fb_name == self.fb_name
assert product.family == self.family
assert product.features == self.features
assert product.description == self.description
assert product.available == self.available
assert product.trial_available == self.trial_available
assert product.trial_period_duration == self.trial_period_duration
assert product.intro_period_duration == self.intro_period_duration
assert product.intro_price == price
assert product.start_period_duration == self.start_period_duration
assert product.start_price == price
assert product.licence_text_parts == [licence_text_part]
assert product.vendor_trial_available == self.vendor_trial_available
assert product.button_text == self.button_text
assert product.button_additional_text == self.button_additional_text
assert product.payment_method_types == self.payment_method_types
def test_de_json_none(self, client):
assert Product.de_json({}, client) is None
def test_de_list_none(self, client):
assert Product.de_list({}, client) == []
def test_de_json_required(self, client, price):
json_dict = {
'product_id': self.product_id,
'type': self.type,
'common_period_duration': self.common_period_duration,
'duration': self.duration,
'trial_duration': self.trial_duration,
'price': price.to_dict(),
'feature': self.feature,
'debug': self.debug,
'plus': self.plus,
}
product = Product.de_json(json_dict, client)
assert product.product_id == self.product_id
assert product.type == self.type
assert product.common_period_duration == self.common_period_duration
assert product.duration == self.duration
assert product.trial_duration == self.trial_duration
assert product.price == price
assert product.feature == self.feature
assert product.debug == self.debug
assert product.plus == self.plus
def test_de_json_all(self, client, price, licence_text_part):
json_dict = {
'product_id': self.product_id,
'type': self.type,
'common_period_duration': self.common_period_duration,
'duration': self.duration,
'trial_duration': self.trial_duration,
'price': price.to_dict(),
'feature': self.feature,
'debug': self.debug,
'plus': self.plus,
'features': self.features,
'description': self.description,
'available': self.available,
'trial_available': self.trial_available,
'vendor_trial_available': self.vendor_trial_available,
'button_text': self.button_text,
'button_additional_text': self.button_additional_text,
'cheapest': self.cheapest,
'payment_method_types': self.payment_method_types,
'title': self.title,
'family': self.family,
'family_sub': self.family_sub,
'fb_image': self.fb_image,
'fb_name': self.fb_name,
'trial_period_duration': self.trial_period_duration,
'intro_period_duration': self.intro_period_duration,
'intro_price': price.to_dict(),
'start_period_duration': self.start_period_duration,
'start_price': price.to_dict(),
'licence_text_parts': [licence_text_part.to_dict()],
}
product = Product.de_json(json_dict, client)
assert product.product_id == self.product_id
assert product.type == self.type
assert product.common_period_duration == self.common_period_duration
assert product.duration == self.duration
assert product.trial_duration == self.trial_duration
assert product.price == price
assert product.feature == self.feature
assert product.debug == self.debug
assert product.plus == self.plus
assert product.cheapest == self.cheapest
assert product.title == self.title
assert product.family_sub == self.family_sub
assert product.fb_image == self.fb_image
assert product.fb_name == self.fb_name
assert product.family == self.family
assert product.features == self.features
assert product.description == self.description
assert product.available == self.available
assert product.trial_available == self.trial_available
assert product.trial_period_duration == self.trial_period_duration
assert product.intro_period_duration == self.intro_period_duration
assert product.intro_price == price
assert product.start_period_duration == self.start_period_duration
assert product.start_price == price
assert product.licence_text_parts == [licence_text_part]
assert product.vendor_trial_available == self.vendor_trial_available
assert product.button_text == self.button_text
assert product.button_additional_text == self.button_additional_text
assert product.payment_method_types == self.payment_method_types
def test_equality(self, price):
a = Product(
self.product_id,
self.type,
self.common_period_duration,
self.duration,
self.trial_duration,
price,
self.feature,
self.debug,
self.plus,
)
b = Product(
'',
self.type,
self.common_period_duration,
self.duration,
self.trial_duration,
price,
self.feature,
self.debug,
self.plus,
)
c = Product(
self.product_id,
self.type,
self.common_period_duration,
self.duration,
self.trial_duration,
price,
self.feature,
self.debug,
self.plus,
)
assert a != b
assert hash(a) != hash(b)
assert a == c