def scrape_web(path: str, file: str) -> None: init_data = JsonFile(path, file) arguments = init_data.load() number_of_elements = len(arguments["search"]) for index in range(number_of_elements): try: search_name = arguments["search"][index] web_request = requests.get(arguments["url"] + "/currencies/" + search_name) content = BeautifulSoup(web_request.content, 'lxml') table = content.findChildren('table')[0] rows = table.find_all('td') information = (search_name, ) + format_table(rows) current_coin = Coin(*information) if index == number_of_elements - 1: print(current_coin) else: print(current_coin, end="\n\n") file = current_coin.time + ".json" path = "out/" + current_coin.name coin_info = current_coin.__dict__ result = JsonFile(path, file) result.save(coin_info) except Exception as error: print(f"Error: {error}")
def main(): coke = Product('Coke', 1.00) validator = CoinValidator() vending_machine = VendingMachine(coke, validator, coke.price) coin = Coin(5.670) vending_machine.insert_coins(coin) print(vending_machine.DISPLAY) vending_machine.insert_coins(coin) vending_machine.insert_coins(coin) print(vending_machine.DISPLAY) vending_machine.insert_coins(coin) print(vending_machine.DISPLAY)
def add(self): ''' PostgresSQL' e verileri ekler. Args: Parametre almaz Return: Return değeri yoktur. ''' for i, coin in enumerate(self.coins): row = Coin(symbol=coin.get('symbol'), price=coin.get('price'), timestamp=datetime.now()) self.db.session.add(row) self.db.session.commit() # Ekleme işlemini gerçekleştirir. print("Veriler veritabanına eklendi\n")
def step_impl(context, amount, coin_type): coin = Coin(COINS[coin_type]['weight'], COINS[coin_type]['diameter']) for x in range(amount): context.vending_machine.insert_coins(coin)
def test_coin_validate_can_identify_weight_of_a_quarter(self): coin = Coin(5.670, 0.955) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert isinstance(actual_value, Quarter)
def test_coin_validate_an_unidentified_coin(self): coin = Coin(0.0, 0.0) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert actual_value == "UnIdentified Coin"
def test_coin_validate_can_identify_diameter_a_penny(self): coin = Coin(2.5, 0.0) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert actual_value == "UnIdentified Coin"
def test_coin_validate_can_identify_weight_of_a_penny(self): coin = Coin(2.5, .75) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert isinstance(actual_value, Penny)
def test_coin_validate_can_identify_diameter_of_a_nickle(self): coin = Coin(5.000, 0.0) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert actual_value == "UnIdentified Coin"
def test_should_return_equals_when_same_measure(self): self.assertTrue(TestsFixture.COIN_1.__eq__(Coin(Measure(1, 1))))
def test_coin_validate_can_identify_weight_of_a_dime(self): coin = Coin(2.268, 0.705) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert isinstance(actual_value, Dime)
def test_coin_validate_can_measure_diameter_of_quarter(self): coin = Coin(5.670, 0.0) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert actual_value == "UnIdentified Coin"
def get_change(self, amount): coin = Coin(Measure(1, 1)) quantity = int( ceil(amount / self.__coin_converter.to_money(coin).get_value())) return [Coin(Measure(1, 1)) for _ in range(quantity)]
def to_money(self, coin: Coin): return self.__money_map[coin.get_measure()]
class TestsFixture(object): MEASURE_1 = Measure(1, 1) MEASURE_2 = Measure(1, 2) MEASURE_3 = Measure(2, 1) INVALID_COIN_MEASURE = Measure(1, 4) COIN_1 = Coin(MEASURE_1) COIN_2 = Coin(MEASURE_2) COIN_3 = Coin(MEASURE_3) INVALID_COIN = Coin(INVALID_COIN_MEASURE) MONEY_VALUE_1 = 0.05 MONEY_VALUE_2 = 0.1 MONEY_VALUE_3 = 0.25 MONEY_NAME_1 = "NICKEL" MONEY_NAME_2 = "DIME" MONEY_NAME_3 = "QUARTER" INVALID_MONEY_NAME = "PENNY" MONEY_1 = Money(MONEY_NAME_1, MONEY_VALUE_1, MEASURE_1) MONEY_2 = Money(MONEY_NAME_2, MONEY_VALUE_2, MEASURE_2) MONEY_3 = Money(MONEY_NAME_3, MONEY_VALUE_3, MEASURE_3) INVALID_MONEY = Money(INVALID_MONEY_NAME, 0, INVALID_COIN_MEASURE) MONEY_MAP = { MEASURE_1: MONEY_1, MEASURE_2: MONEY_2, MEASURE_3: MONEY_3, INVALID_COIN_MEASURE: INVALID_MONEY } VALID_COINS = [COIN_1, COIN_2, COIN_3] INVALID_COINS = [INVALID_COIN] CURRENT_CHANGE = [COIN_3, COIN_3, COIN_3, COIN_3, COIN_3, COIN_3] NO_COINS_MSG = 'INSERT_COIN' AMOUNT_TPL = 'Current amount: %.2f$' THANKS_MSG = 'THANK YOU' PRICE_MSG = 'PRICE' SOLD_OUT_MSG = 'SOLD OUT' EXACT_CHANGE_MSG = 'EXACT CHANGE ONLY' DISPLAY = Display(NO_COINS_MSG, AMOUNT_TPL, PRICE_MSG, THANKS_MSG, SOLD_OUT_MSG, EXACT_CHANGE_MSG) COIN_CONVERTER = CoinConverter(MONEY_MAP) COIN_INVENTORY = CoinInventory(CURRENT_CHANGE, COIN_CONVERTER) PRODUCT_NAME_1 = 'Cola' PRODUCT_NAME_2 = 'Chips' PRODUCT_NAME_3 = 'Candy' PRODUCT_PRICE_1 = 1 PRODUCT_PRICE_2 = 0.5 PRODUCT_PRICE_3 = 0.65 PRODUCT_STOCK_1 = 3 PRODUCT_STOCK_2 = 0 PRODUCT_STOCK_3 = 1 PRODUCT_1 = Product(PRODUCT_NAME_1, PRODUCT_PRICE_1, PRODUCT_STOCK_1) PRODUCT_2 = Product(PRODUCT_NAME_2, PRODUCT_PRICE_2, PRODUCT_STOCK_2) PRODUCT_3 = Product(PRODUCT_NAME_3, PRODUCT_PRICE_3, PRODUCT_STOCK_3) PRODUCTS = [PRODUCT_1, PRODUCT_2, PRODUCT_3] PRODUCT_INVENTORY = ProductInventory(PRODUCTS) PRODUCT_MANAGER = ProductManager(PRODUCT_INVENTORY)
def test_coin_validate_can_identify_weight_of_a_nickle(self): coin = Coin(5.000, .835) validator = CoinValidator() actual_value = validator.calculate_coin(coin) assert isinstance(actual_value, Nickel)
def create_coin(payment): weight = COINS_VALUE[payment] diameter = COINS_DIAMETER[weight] coin = Coin(weight, diameter) return coin
def test_should_return_same_hash_for_same_object(self): self.assertEqual(TestsFixture.COIN_1.__hash__(), Coin(Measure(1, 1)).__hash__()) if __name__ == '__main__': unittest.main()