Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/edtoken/micro-shop
micro-shop
https://github.com/edtoken/micro-shop
Last synced: about 2 months ago
JSON representation
micro-shop
- Host: GitHub
- URL: https://github.com/edtoken/micro-shop
- Owner: edtoken
- Created: 2015-10-29T14:53:24.000Z (about 9 years ago)
- Default Branch: gh-pages
- Last Pushed: 2015-11-03T11:49:02.000Z (about 9 years ago)
- Last Synced: 2023-02-26T03:51:54.028Z (almost 2 years ago)
- Language: JavaScript
- Homepage: http://edtoken.github.io/micro-shop/
- Size: 414 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Техническое задание
Есть product двух типов:
a) MainProduct extends Product
б) UpsellProduct extends ProductДля каждого товара из группы Main существует UpsellSpecification объект.
Product {
id: integer,
price: float,
stockItems: integer,
name: string
}UpsellProduct extend Product {
upsellSpecifications: [UpsellAvailabalitySpecification]
}Каждый объект из группы main может иметь связь к объектам upsell product через UpsellAvailabalitySpecification.
Два разных MainProduct могут иметь связь с одним и тем же upsellProduct через разные UpsellAvailabalitySpecification
UpsellAvailabalitySpecification {
upsellProduct: UpsellProduct,
mainProduct: MainProduct
itemsInCart: integer, //items in cart of the mainProduct after upsell become available to be added in this cart
totalCartPrice: float //total cart amount of all product after upsell become available to be added in cart
}Задание: спроектировать объект Cart, соответствующий следующим требованиям:
1) Метод добавления продукта в корзину с указанием quantity.
2) Метод удаления продукта
3) Метод изменения quantity продукта.
4) Корзина не должна давать возможности добавлять конкретный UpsellProduct до момента пока корзина не соответствует условиям соответствующего UpsellAvailabalitySpecification
5) UpsellProduct может добавляться только с quantity = 1
6) При достижении Cart требований одного из UpsellAvailabalitySpecification, должен срабатывать триггер и вызываться подписчик ShowUpsellPopup.showUpsellInformation(upsell), но только
если upsell еще не добавлен в CartShowUpsellPopup {
showUpsellInformation: function(upsell) {}
}7) В любой момент времени объект Cart должен находиться в валидном состоянии.
8) Реализовать метод sync() для синхронизации с сервером.