def test_bidding_home(self): category = MarketCategory.objects.all()[0] subcategory = MarketSubCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 4", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop=self.shop, title="Coin From USA 1905 (PCGS 50)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("300.00")) lot.save() item = Item(shop=self.shop, title="Item", description="an item", price="10.0", category=category, subcategory=subcategory, qty=2, weight="2.0") item.save() response = self.client.post(reverse("bidding_home"), {'email': "*****@*****.**"}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302) # param = { # 'about': about, # 'home': # { # 'title': home.title, # 'body': home.body, # 'image': home.image # }, # 'last_post': last_post, # 'mailing_list': block_mailing_list, # 'new_items': new_items, # 'page_title': 'Home', # 'page_description': striptags(home.body), # 'sessions': new_sessions, # } response = self.client.get(reverse("bidding_home"), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200)
def load_from_oasis(bbl, owner_name=None): # ensure bbl does not exist if Lot.objects.filter(bbl=bbl).count() > 0: print 'Lot with bbl %s already exists!' % bbl return oasis_data = get_oasis_data(bbl) (x, y) = get_coordinates_from_response(oasis_data) (lon, lat) = convert_coordinates_to_lon_lat(x, y) if not owner_name: owner_name = oasis_data['OwnerName'] try: owner = Owner.objects.get(name=owner_name) except Exception: owner = Owner.objects.get(oasis_name=owner_name) lot = Lot( address=oasis_data['Address'], area=oasis_data['Area'], area_acres=str(convert_sq_ft_to_acres(oasis_data['Area'])), bbl=bbl, block=oasis_data['Block'], borough=oasis_data['BoroughName'], centroid=Point(float(lon), float(lat)), city_council_district=oasis_data['CityCouncilDistrict'], lot=oasis_data['Lot'], owner=owner, police_precinct=oasis_data['PolicePrecinct'], zipcode=oasis_data['ZipCode'] ) lot.save() print 'Successfully added lot %s.' % bbl
def test_lot_sold(self): """ """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 1", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop = self.shop, title = "Coin From Rusia 1901 (PCGS 60)", description = "rare coin", category = category, date_time = now, weight = "5", session=auction, starting_bid=decimal.Decimal("10.00"), reserve=decimal.Decimal("0.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") bidder = User.objects.filter(username="******").get() cart = Cart(shop=self.shop, bidder=bidder) cart.save() #Check that lot is still active... self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!") self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!") my_bid = decimal.Decimal("19.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount $19.00. This value should be allowed...") lot = Lot.objects.get(id=lot.id) self.assertNotEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should have at least one bid!") logging.info("waiting to auction session finish...") while not lot.session.finished(): time.sleep(1) logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.reserve_has_been_met(), True , "Failed, reserved has not been met!") self.assertEqual(lot.bid_actual.bid_amount, my_bid , "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid)) self.assertEqual(lot.bid_actual.bidder.username, "test" , "Failed, wrong bidder won!") self.assertEqual(lot.is_active(), False, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state) self.assertEqual(lot.is_didnt_sell(), False, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state) self.assertEqual(lot.is_sold(), True, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state)
def create_new_lot(self, parcel, lots): print "Creating new lot for %s" % str(parcel.bbl) borough, owner, known_use_certainty, known_use_locked, known_use = ( None, None, None, None, None ) boroughs = list(set([l.borough for l in lots])) if len(boroughs) == 1: borough = boroughs[0] else: print "\t * Couldn't pick a borough", boroughs, lots raise Exception("Not able to pick borough, something's weird!") owners = list(set([l.owner for l in lots])) if len(owners) == 1: owner = owners[0] else: print "\t * Couldn't pick an owner", owners known_use_certainties = list(set([l.known_use_certainty for l in lots])) if len(known_use_certainties) == 1: known_use_certainty = known_use_certainties[0] else: print "\t * Couldn't pick a known_use_certainty", known_use_certainties known_use_lockeds = list(set([l.known_use_locked for l in lots])) if len(known_use_lockeds) == 1: known_use_locked = known_use_lockeds[0] else: print "\t * Couldn't pick a known_use_locked", known_use_lockeds known_uses = list(set([l.known_use for l in lots])) if len(known_uses) == 1: known_use = known_uses[0] else: print "\t * Couldn't pick a known_use", known_uses known_use_certainty = 0 known_use_locked = False newlot = Lot( centroid=parcel.geom.centroid, polygon=parcel.geom, address_line1=parcel.address, postal_code=parcel.zipcode, state_province='NY', country='USA', added_reason='Created for duplicate lots during import', bbl=None, # Another lot might be using this bbl, handle it later block=parcel.block, lot_number=parcel.lot_number, borough=borough, owner=owner, known_use=known_use, known_use_certainty=known_use_certainty, known_use_locked=known_use_locked, ) newlot.save() return newlot
def load_lots(self, lots_file): lots = csv.DictReader(lots_file) for lot in lots: actual_use = lot['actual_use'] centroid = self.get_centroid(lot['centroid']) parcel = None polygon = None gutterspace = False if not centroid: continue if not actual_use and not lot['accessible'] == 't': gutterspace = True if actual_use.lower().startswith('gutterspace'): gutterspace = True try: parcel = self.get_parcel(centroid=centroid, bbl=lot['bbl']) polygon = parcel.geom except Parcel.DoesNotExist: print "No parcel for lot %s. That's okay, adding." % lot['bbl'] except Parcel.MultipleObjectsReturned: print '* TOO MANY Parcels returned for lot %s. Skipping.' % lot['bbl'] continue except ValueError: print '* No bbl or centroid for lot %s. Skipping.' % lot['bbl'] continue newlot = Lot( address_line1=lot['address'], borough=lot['borough'], bbl=lot['bbl'], block=lot['block'], lot_number=lot['lot'], state_province='NY', country='USA', postal_code=lot['zipcode'], centroid=self.get_centroid(lot['centroid']), polygon=polygon, known_use=self.get_use(**lot), known_use_certainty=9, known_use_locked=True, accessible=lot['accessible'] == 't', name=self.get_name(**lot), parcel=parcel, added_reason='Imported from 596 Acres Classic', gutterspace=gutterspace, ) newlot.save() if actual_use.startswith('Garden'): try: self.add_steward_project(newlot, actual_use=lot['actual_use']) except ValueError: print "Couldn't add steward project for lot:", newlot, actual_use continue
def test_lot_didnt_sell(self): """ Check that a lot get state DIDN'T SELL when there no bidding... """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 2", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop = self.shop, title = "Coin From Argentina 1890 (PCGS 60)", description = "rare coin", category = category, date_time = now, weight = "5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("0.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") #Check that lot is still active... self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!") self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!") my_bid = decimal.Decimal("90.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed: this bid is not valid...") self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!") logging.info("waiting to auction session finish...") while not lot.session.finished(): time.sleep(1) logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.reserve_has_been_met(), False , "Failed, the reserved price should not be reached!") self.assertEqual(lot.bid_actual, None , "Failed: There were no bids! ") self.assertEqual(lot.is_active(), False, "Failed: The lot could not be active, the lot finished and there were no bids!") self.assertEqual(lot.is_sold(), False, "Failed: The lot could not be sold, there were no bids!") self.assertEqual(lot.is_didnt_sell(), True, "Failed: The lot wasn't sell!")
def handle(self, *args, **options): with open(options['file'], newline='') as csv_file: reader = csv.reader(csv_file) casa = LotType.objects.get(name='Casa') lote = LotType.objects.get(name='Lote') for row in reader: if row[0] in ['', 'M', '0']: continue lot = Lot(name='M' + row[0].zfill(2) + '-L' + row[1].zfill(2), address=row[4]) if row[5] == 'Casa': lot.lot_type = casa else: lot.lot_type = lote if row[15] != '': lot.details = 'Mascotas: ' + row[15] if row[2].strip() != '': contact, created = Contact.objects.get_or_create( name__exact=row[2], defaults={'name': row[2]}) if row[6] != '': contact.phone_number = row[6] if row[11] != '': contact.details = 'Porfesión: ' + row[11] contact.save() lot.owner = contact # we need to save lots so we can save many-to-many associations lot.save() if row[3].strip() != '': values = row[2].split(' - ') contact, created = Contact.objects.get_or_create( name__exact=values[0], defaults={ 'name': values[0], 'details': 'Arrendatario' }) if len(values) > 1: contact.phone_number = values[1] contact.save() lot.contacts.add(contact) if row[8].strip() != '': contact, created = Contact.objects.get_or_create( name__exact=row[8], defaults={'name': row[8]}) if row[9] != '': contact.phone_number = row[9] if row[12] != '': contact.details = 'Porfesión: ' + row[12] contact.save() lot.contacts.add(contact)
def test_lot_still_active(self): """ Check that nothing happend to those lots that aren't finished yet when cron is executed """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 4", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop=self.shop, title="Coin From USA 1905 (PCGS 50)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("300.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") my_bid = decimal.Decimal("120.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bidhistory_set.all().count(), 1 , "Failed: The lot should not have any bid yet!") logging.info("don't wait for auction session to finish...") #Check that lot is still active... lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!") logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!") self.assertEqual(lot.bid_actual.bid_amount, my_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid)) self.assertEqual(lot.bid_actual.bidder.username, "test" , "Failed, wrong bidder won!") self.assertEqual(lot.is_sold(), False, "Failed: The lot state is wrong, should be ACTIVE but it is %s" % lot.state)
def create_lot(basereg, address, **defaults): parcel = find_parcel(basereg, address) if not parcel: return None polygon = parcel.geometry centroid = polygon.centroid lot = Lot(centroid=centroid, polygon=polygon, parcel=parcel, **defaults) lot.polygon_area = lot.calculate_polygon_area() lot.polygon_width = lot.calculate_polygon_width() try: lot.zoning_district = BaseDistrict.objects.get( geometry__contains=lot.centroid, ) except (BaseDistrict.DoesNotExist, BaseDistrict.MultipleObjectsReturned): pass lot.save() return lot
def create(request): if request.method == 'GET': form = LotsForm() return render(request, 'lots/create.html', context={'form': form}) elif request.method == 'POST': lot = Lot() lot.author = request.user lot.set_price = 0 form = LotsForm(request.POST, request.FILES, instance=lot) if form.is_valid(): lot = form.save() lot.image = request.FILES['image'] lot.save() async_tags = async_to_sync(tags_of_images.images_tags, force_new_loop=True) async_tags(lot) return redirect(f"/lots/lot/{lot.id}") else: return render(request, 'lots/create.html', context={'form': form})
def get_or_create_lot(self, bbl, parcel, row): try: return Lot.objects.get(bbl=bbl), False except Lot.DoesNotExist: print '\t\tNo lot found for %s. Creating.' % bbl kwargs = dict(self.lot_kwargs) kwargs.update({ 'address_line1': parcel.address, 'bbl': bbl, 'borough': borough_number[int(row['Boro'])], 'block': get_int(row['Block']), 'centroid': parcel.geom.centroid, 'known_use': self.get_use(), 'lot_number': get_int(row['Lot']), 'owner': Owner.objects.get_or_create(name=parcel.ownername)[0], 'polygon': parcel.geom, 'postal_code': row['Zip'], }) lot = Lot(**kwargs) lot.save() return lot, True
def create_lot(basereg, address, **defaults): parcel = find_parcel(basereg, address) if not parcel: return None polygon = parcel.geometry centroid = polygon.centroid lot = Lot( centroid=centroid, polygon=polygon, parcel=parcel, **defaults ) lot.polygon_area = lot.calculate_polygon_area() lot.polygon_width = lot.calculate_polygon_width() try: lot.zoning_district = BaseDistrict.objects.get( geometry__contains=lot.centroid, ) except (BaseDistrict.DoesNotExist, BaseDistrict.MultipleObjectsReturned): pass lot.save() return lot
def test_urls_access(self): context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) shop = Shop.objects.all()[0] category = MarketCategory.objects.all()[0] HTTP_HOST = shop.default_dns now = datetime.datetime.now() tomorrow = now + datetime.timedelta(days=1) auction = AuctionSession(shop=shop, title="Auction Session Nr 0", description="-- no desc --", start=now, end=tomorrow) auction.save() lot = Lot(shop=shop, title="Coin From Egypt 1905 (PCGS 60)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("10.00"), reserve=decimal.Decimal("0.00")) lot.save() item = Item(shop=shop, title="Coin From Rusia 1917 (PCGS 60)", description="rare coin", category=category, date_time=now, weight="5", qty="10", price=decimal.Decimal("150")) item.save() user = shop.admin # response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to view lot") # success = self.client.login(username=user.username, password="******") self.assertEqual(success, True, "Login failed") ############# CUSTOMERS ################ response = self.client.get(reverse("home_admin"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach home_admin") response = self.client.get(reverse("customers"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers") response = self.client.get(reverse("customers_overview"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_overview") response = self.client.get(reverse("customers_profiles"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_profiles") response = self.client.get(reverse("customers_sold_items"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_sold_items") response = self.client.get(reverse("customers_payments"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_payments") response = self.client.get(reverse("customers_shipments"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_shipments") response = self.client.get(reverse("customers_wish_lists"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_wish_list") # response = self.client.get(reverse("customers_send_notification"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") response = self.client.get(reverse("customers_mailing_list"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_mailing_list") response = self.client.get(reverse("customers_export_mailinglist"), HTTP_HOST=HTTP_HOST) self.assertEqual( response.status_code, 200, "Failed when trying to reach customers_export_mailinglist") ######### WEBSTORE ############ response = self.client.get(reverse("web_store"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store") response = self.client.get(reverse("web_store_overview"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_overview") response = self.client.get(reverse("web_store_marketing"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_marketing") response = self.client.get(reverse("web_store_shows"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_shows") # response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_theme") response = self.client.get(reverse("web_store_pages"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_pages") response = self.client.get(reverse("web_store_blogs"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_blogs") response = self.client.get(reverse("web_store_navigation"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_navigation") # response = self.client.get(reverse("web_store_show_go"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") # # response = self.client.get(reverse("web_store_show_not_go"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") # # response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") ######### INVENTORY ########## response = self.client.get(reverse("inventory"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory") response = self.client.get(reverse("inventory_overview"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_overview") response = self.client.get(reverse("inventory_items"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_items") response = self.client.get(reverse("inventory_items_import"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_items_import") response = self.client.get(reverse("inventory_lots"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_lots") response = self.client.get(reverse("inventory_auctions"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_auctions") response = self.client.get(reverse("inventory_categorize"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_categorize") ######## ACCOUNT ######### response = self.client.get(reverse("account"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach account") response = self.client.get(reverse("account_profile"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach account_profile") response = self.client.get(reverse("account_password"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach account_password") response = self.client.get(reverse("add_profile_photo"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 302, "Failed when trying to reach add_profile_photo") response = self.client.get(reverse("preferences"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach preferences")
def test_lot_didnt_sell2(self): """ Check that a lot get state DIDN'T SELL when there are no biddings that reach the reserve price """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 3", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop=self.shop, title = "Coin From Brasil 1900 (PCGS 60)", description = "rare coin", category = category, date_time = now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("300.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") #Check that lot is still active... self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!") self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!") #1) Trying To BID wrong my_bid = decimal.Decimal("90.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed: this bid is not valid...") self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!") #2) First valid bid, but don't reach the reserve price my_bid = decimal.Decimal("120.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bidhistory_set.all().count(), 1 , "Failed: The lot should have 1 bid!") #3) Second valid bid, but neither reach the reserve price my_bid = decimal.Decimal("290.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bidhistory_set.all().count(), 2 , "Failed: The lot should have 2 bids!") logging.info("waiting to auction session finish...") while not lot.session.finished(): time.sleep(1) logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.reserve_has_been_met(), False , "Failed, the reserved price should not be reached!") self.assertEqual(lot.bid_actual.bid_amount, my_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid)) self.assertEqual(lot.bid_actual.bidder.username, "test" , "Failed, wrong bidder won!") self.assertEqual(lot.is_sold(), False, "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s" % lot.state) self.assertEqual(lot.is_didnt_sell(), True, "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s" % lot.state)
def test_lot_sold(self): """ """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 1", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop=self.shop, title="Coin From Rusia 1901 (PCGS 60)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("10.00"), reserve=decimal.Decimal("0.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") bidder = User.objects.filter(username="******").get() cart = Cart(shop=self.shop, bidder=bidder) cart.save() #Check that lot is still active... self.assertEqual(lot.is_active(), True, "Failed: The lot should be active!") self.assertEqual(lot.bidhistory_set.all().count(), 0, "Failed: The lot should not have any bid yet!") my_bid = decimal.Decimal("19.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual( response.status_code, 302, "Failed when trying to bid a valid amount $19.00. This value should be allowed..." ) lot = Lot.objects.get(id=lot.id) self.assertNotEqual(lot.bidhistory_set.all().count(), 0, "Failed: The lot should have at least one bid!") logging.info("waiting to auction session finish...") while not lot.session.finished(): time.sleep(1) logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.reserve_has_been_met(), True, "Failed, reserved has not been met!") self.assertEqual( lot.bid_actual.bid_amount, my_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid)) self.assertEqual(lot.bid_actual.bidder.username, "test", "Failed, wrong bidder won!") self.assertEqual( lot.is_active(), False, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state) self.assertEqual( lot.is_didnt_sell(), False, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state) self.assertEqual( lot.is_sold(), True, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state)
def test_urls_access(self): context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) shop = Shop.objects.all()[0] category = MarketCategory.objects.all()[0] HTTP_HOST = shop.default_dns now = datetime.datetime.now() tomorrow = now + datetime.timedelta(days=1) auction = AuctionSession(shop=shop, title="Auction Session Nr 0", description="-- no desc --", start=now, end=tomorrow) auction.save() lot = Lot(shop = shop, title = "Coin From Egypt 1905 (PCGS 60)", description = "rare coin", category = category, date_time = now, weight = "5", session=auction, starting_bid=decimal.Decimal("10.00"), reserve=decimal.Decimal("0.00")) lot.save() item = Item(shop = shop, title = "Coin From Rusia 1917 (PCGS 60)", description = "rare coin", category = category, date_time = now, weight = "5", qty = "10", price = decimal.Decimal("150")) item.save() user = shop.admin # response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to view lot") # success = self.client.login(username=user.username, password="******") self.assertEqual(success, True, "Login failed") ############# CUSTOMERS ################ response = self.client.get(reverse("home_admin"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach home_admin") response = self.client.get(reverse("customers"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers") response = self.client.get(reverse("customers_overview"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_overview") response = self.client.get(reverse("customers_profiles"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_profiles") response = self.client.get(reverse("customers_sold_items"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_sold_items") response = self.client.get(reverse("customers_payments"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_payments") response = self.client.get(reverse("customers_shipments"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_shipments") response = self.client.get(reverse("customers_wish_lists"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_wish_list") # response = self.client.get(reverse("customers_send_notification"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") response = self.client.get(reverse("customers_mailing_list"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_mailing_list") response = self.client.get(reverse("customers_export_mailinglist"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_export_mailinglist") ######### WEBSTORE ############ response = self.client.get(reverse("web_store"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store") response = self.client.get(reverse("web_store_overview"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_overview") response = self.client.get(reverse("web_store_marketing"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_marketing") response = self.client.get(reverse("web_store_shows"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_shows") # response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_theme") response = self.client.get(reverse("web_store_pages"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_pages") response = self.client.get(reverse("web_store_blogs"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_blogs") response = self.client.get(reverse("web_store_navigation"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_navigation") # response = self.client.get(reverse("web_store_show_go"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") # # response = self.client.get(reverse("web_store_show_not_go"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") # # response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST) # self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount") ######### INVENTORY ########## response = self.client.get(reverse("inventory"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory") response = self.client.get(reverse("inventory_overview"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_overview") response = self.client.get(reverse("inventory_items"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_items") response = self.client.get(reverse("inventory_items_import"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_items_import") response = self.client.get(reverse("inventory_lots"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_lots") response = self.client.get(reverse("inventory_auctions"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_auctions") response = self.client.get(reverse("inventory_categorize"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_categorize") ######## ACCOUNT ######### response = self.client.get(reverse("account"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach account") response = self.client.get(reverse("account_profile"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach account_profile") response = self.client.get(reverse("account_password"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach account_password") response = self.client.get(reverse("add_profile_photo"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 302, "Failed when trying to reach add_profile_photo") response = self.client.get(reverse("preferences"), HTTP_HOST=HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to reach preferences")
def test_bidding_views(self): now = datetime.datetime.now() tomarrow = now + datetime.timedelta(days=1) category = MarketCategory.objects.all()[0] subcategory = MarketSubCategory.objects.all()[0] item = Item(shop=self.shop, title="My Unique Item", description="the description of my unique item", price="10.0", category=category, subcategory=subcategory, qty=2, weight="2.0") item.save() auction = AuctionSession(shop=self.shop, title="Test Session", description="-- no desc --", start=now, end=tomarrow) auction.save() lot = Lot(shop=self.shop, title="Coin From USA 1905 (PCGS 50)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("300.00")) lot.save() response = self.client.get(reverse("bidding_about_us"), HTTP_HOST=self.HTTP_HOST) self.assertContains( response, "Nam est mauris, pretium eu imperdiet ut, iaculis sit amet sapien", count=None, status_code=200, msg_prefix='') response = self.client.get(reverse("bidding_auctions_id", args=[auction.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context['sessions']), 1) response = self.client.get(reverse("bidding_blog"), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_buy_now", args=[item.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302) #bidding_search page = Page(shop=self.shop, name_link="somewhere", title="Page Title", body="This is the page content") page.save() response = self.client.get(reverse("bidding_page", args=[page.name_link]), HTTP_HOST=self.HTTP_HOST) self.assertContains(response, "Page Title", count=None, status_code=200, msg_prefix='') self.assertContains(response, "This is the page content", count=None, status_code=200, msg_prefix='') response = self.client.get(reverse("bidding_sitemap"), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) #self.assertContains(response, "Page Title", count=None, status_code=200, msg_prefix='') response = self.client.get(reverse("bidding_for_sale"), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_map", args=[self.shop.about.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_view_history_lot", args=[lot.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.post(reverse("bidding_view_history_lot", args=[lot.id]), {'amount': '10.00'}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_view_item", args=[item.id]), HTTP_HOST=self.HTTP_HOST) self.assertContains(response, "My Unique Item", count=None, status_code=200, msg_prefix='') post = Post(shop=self.shop, title="This is my first blog post", body="some content here") post.save() self.assertEqual(post.views, 0) response = self.client.get(reverse("bidding_view_post", args=[post.id]), HTTP_HOST=self.HTTP_HOST) self.assertContains(response, "This is my first blog post", count=None, status_code=200, msg_prefix='') post = Post.objects.filter(id=post.id)[0] self.assertEqual(post.views, 1)
def test_bidding_views(self): now = datetime.datetime.now() tomarrow = now + datetime.timedelta(days=1) category = MarketCategory.objects.all()[0] subcategory = MarketSubCategory.objects.all()[0] item = Item(shop=self.shop, title="My Unique Item", description="the description of my unique item", price="10.0", category=category, subcategory=subcategory, qty=2, weight="2.0") item.save() auction = AuctionSession(shop=self.shop, title="Test Session", description="-- no desc --", start=now, end=tomarrow) auction.save() lot = Lot(shop=self.shop, title="Coin From USA 1905 (PCGS 50)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("300.00")) lot.save() response = self.client.get(reverse("bidding_about_us"), HTTP_HOST=self.HTTP_HOST) self.assertContains(response, "Nam est mauris, pretium eu imperdiet ut, iaculis sit amet sapien", count=None, status_code=200, msg_prefix='') response = self.client.get(reverse("bidding_auctions_id", args=[auction.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context['sessions']), 1) response = self.client.get(reverse("bidding_blog"), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_buy_now", args=[item.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302) #bidding_search page = Page(shop=self.shop, name_link="somewhere", title="Page Title", body="This is the page content") page.save() response = self.client.get(reverse("bidding_page", args=[page.name_link]), HTTP_HOST=self.HTTP_HOST) self.assertContains(response, "Page Title", count=None, status_code=200, msg_prefix='') self.assertContains(response, "This is the page content", count=None, status_code=200, msg_prefix='') response = self.client.get(reverse("bidding_sitemap"), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) #self.assertContains(response, "Page Title", count=None, status_code=200, msg_prefix='') response = self.client.get(reverse("bidding_for_sale"), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_map", args=[self.shop.about.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_view_history_lot", args=[lot.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.post(reverse("bidding_view_history_lot", args=[lot.id]), {'amount': '10.00' },HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200) response = self.client.get(reverse("bidding_view_item", args=[item.id]), HTTP_HOST=self.HTTP_HOST) self.assertContains(response, "My Unique Item", count=None, status_code=200, msg_prefix='') post = Post(shop=self.shop, title="This is my first blog post", body="some content here") post.save() self.assertEqual(post.views, 0) response = self.client.get(reverse("bidding_view_post", args=[post.id]), HTTP_HOST=self.HTTP_HOST) self.assertContains(response, "This is my first blog post" , count=None, status_code=200, msg_prefix='') post = Post.objects.filter(id=post.id)[0] self.assertEqual(post.views, 1)
def test_lot_still_active(self): """ Check that nothing happend to those lots that aren't finished yet when cron is executed """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 4", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop=self.shop, title="Coin From USA 1905 (PCGS 50)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("300.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") my_bid = decimal.Decimal("120.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual( response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bidhistory_set.all().count(), 1, "Failed: The lot should not have any bid yet!") logging.info("don't wait for auction session to finish...") #Check that lot is still active... lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.is_active(), True, "Failed: The lot should be active!") logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.is_active(), True, "Failed: The lot should be active!") self.assertEqual( lot.bid_actual.bid_amount, my_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid)) self.assertEqual(lot.bid_actual.bidder.username, "test", "Failed, wrong bidder won!") self.assertEqual( lot.is_sold(), False, "Failed: The lot state is wrong, should be ACTIVE but it is %s" % lot.state)
def test_lot_didnt_sell2(self): """ Check that a lot get state DIDN'T SELL when there are no biddings that reach the reserve price """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 3", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop=self.shop, title="Coin From Brasil 1900 (PCGS 60)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("300.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") #Check that lot is still active... self.assertEqual(lot.is_active(), True, "Failed: The lot should be active!") self.assertEqual(lot.bidhistory_set.all().count(), 0, "Failed: The lot should not have any bid yet!") #1) Trying To BID wrong my_bid = decimal.Decimal("90.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed: this bid is not valid...") self.assertEqual(lot.bidhistory_set.all().count(), 0, "Failed: The lot should not have any bid yet!") #2) First valid bid, but don't reach the reserve price my_bid = decimal.Decimal("120.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual( response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bidhistory_set.all().count(), 1, "Failed: The lot should have 1 bid!") #3) Second valid bid, but neither reach the reserve price my_bid = decimal.Decimal("290.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual( response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bidhistory_set.all().count(), 2, "Failed: The lot should have 2 bids!") logging.info("waiting to auction session finish...") while not lot.session.finished(): time.sleep(1) logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.reserve_has_been_met(), False, "Failed, the reserved price should not be reached!") self.assertEqual( lot.bid_actual.bid_amount, my_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid)) self.assertEqual(lot.bid_actual.bidder.username, "test", "Failed, wrong bidder won!") self.assertEqual( lot.is_sold(), False, "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s" % lot.state) self.assertEqual( lot.is_didnt_sell(), True, "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s" % lot.state)
def test_lot_didnt_sell(self): """ Check that a lot get state DIDN'T SELL when there no bidding... """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() now_plus_10 = now + datetime.timedelta(seconds=5) auction = AuctionSession(shop=self.shop, title="Auction Session Nr 2", description="-- no desc --", start=now, end=now_plus_10) auction.save() lot = Lot(shop=self.shop, title="Coin From Argentina 1890 (PCGS 60)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("100.00"), reserve=decimal.Decimal("0.00")) lot.save() success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") #Check that lot is still active... self.assertEqual(lot.is_active(), True, "Failed: The lot should be active!") self.assertEqual(lot.bidhistory_set.all().count(), 0, "Failed: The lot should not have any bid yet!") my_bid = decimal.Decimal("90.00") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed: this bid is not valid...") self.assertEqual(lot.bidhistory_set.all().count(), 0, "Failed: The lot should not have any bid yet!") logging.info("waiting to auction session finish...") while not lot.session.finished(): time.sleep(1) logging.info("Running cron...") cron.minute_update() lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.reserve_has_been_met(), False, "Failed, the reserved price should not be reached!") self.assertEqual(lot.bid_actual, None, "Failed: There were no bids! ") self.assertEqual( lot.is_active(), False, "Failed: The lot could not be active, the lot finished and there were no bids!" ) self.assertEqual( lot.is_sold(), False, "Failed: The lot could not be sold, there were no bids!") self.assertEqual(lot.is_didnt_sell(), True, "Failed: The lot wasn't sell!")
def import_contacts(self, client): Contact.objects.all().delete() Lot.objects.all().delete() sheet = client.open("Vecinos y sugerencias").worksheet( "DATOS DE RESIDENTES") # Extract and print all of the values records = sheet.get_all_records() casa = LotType.objects.get(name='Casa') lote = LotType.objects.get(name='Lote') for row in records: if row['M'] in ['', 'M', '0']: continue lot = Lot(name='M' + str(row['M']).zfill(2) + '-L' + str(row['L']).zfill(2), address=row['Dirección']) if row['Tipo'] == 'Casa': lot.lot_type = casa else: lot.lot_type = lote if row['MASCOTAS'] != '': lot.details = 'Mascotas: ' + row['MASCOTAS'] if row['PROPIETARIOS'].strip() != '': contact, created = Contact.objects.get_or_create( name__exact=row['PROPIETARIOS'], defaults={'name': row['PROPIETARIOS']}) if row['CELULAR'] != '': contact.phone_number = row['CELULAR'] if row['PROFESION EL'] != '': contact.details = 'Porfesión: ' + row['PROFESION EL'] contact.save() lot.owner = contact # we need to save lots so we can save many-to-many associations lot.save() if row['ARRENDATARIOS'].strip() != '': values = row['ARRENDATARIOS'].split(' - ') contact, created = Contact.objects.get_or_create( name__exact=values[0], defaults={ 'name': values[0], 'details': 'Arrendatario' }) if len(values) > 1: contact.phone_number = values[1] contact.save() lot.contacts.add(contact) if row['ESPOSA (O)'].strip() != '': contact, created = Contact.objects.get_or_create( name__exact=row['ESPOSA (O)'], defaults={'name': row['ESPOSA (O)']}) if row['PROFESION ELLA'] != '': contact.details = 'Porfesión: ' + row['PROFESION ELLA'] contact.save() lot.contacts.add(contact) print("Finished importing contacts")
def test_bidding_place_bid(self): """ """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() tomorrow = now + datetime.timedelta(days=1) # Creates an auction auction = AuctionSession(shop=self.shop, title="Auction Session Nr 0", description="-- no desc --", start=now, end=tomorrow) auction.save() # Creates a lot lot = Lot(shop=self.shop, title="Coin From Egypt 1905 (PCGS 60)", description="rare coin", category=category, date_time=now, weight="5", session=auction, starting_bid=decimal.Decimal("10.00"), reserve=decimal.Decimal("0.00")) lot.save() # Ttry to login success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to view lot") # Check than when is created there is no any bid lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bid_actual, None) # Testing bid increment table increment_calculator = BidderIncrementCalculator() #from 0.01 to 0.99 --> 0.05 #from 1.00 to 4.99 --> 0.25 #from 5.00 to 24.99 --> 0.50 #from 25.00 to 99.99 --> 1.00 #from 100.00 to 249.99 --> 2.50 #from 250.00 to 499.99 --> 5.00 #from 500.00 to 999.99 --> 10.00 #from 1000.00 to 2499.99 --> 25.00 #from 2500.00 to 4999.99 --> 50.00 #from 5000.00 to 99999.99--> 100.00 for i in range(30): lot = Lot.objects.get(id=lot.id) if lot.bid_actual: logging.info("Current Bid: %s" % (lot.bid_actual.bid_amount)) else: logging.info("Starting Bid: %s" % (lot.starting_bid)) min_bid = lot.next_bid_from() (from_price, to_price, inc) = increment_calculator.match_for(min_bid) logging.info( "From: %s To: %s Bid must be grater than %s (increment to be applied %s)" % (from_price, to_price, min_bid, inc)) logging.info("Minimum Bid allowed: %s" % min_bid) # Should not be allowed to bid wrong_bid = min_bid - (min_bid * decimal.Decimal(("0.1"))) logging.info("Testing Invalid Bidding Price: %s" % wrong_bid) response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': wrong_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed: This bid shouldn't be valid!!") # Should be allowed to bid string_format = '%.2f' % (min_bid + (min_bid * decimal.Decimal( ("0.5")))) valid_bid = decimal.Decimal((string_format)) logging.info("Testing Valid Bidding Price: %s" % valid_bid) response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': valid_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual( response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % valid_bid) # Check that last bid is the the currently lot.bid_actual logging.info("Testing Correct Lot.bid_actual: %s" % valid_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual( lot.bid_actual.bid_amount, valid_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, valid_bid))
def test_bidding_place_bid(self): """ """ context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(context) category = MarketCategory.objects.all()[0] now = datetime.datetime.now() tomorrow = now + datetime.timedelta(days=1) # Creates an auction auction = AuctionSession(shop=self.shop, title="Auction Session Nr 0", description="-- no desc --", start=now, end=tomorrow) auction.save() # Creates a lot lot = Lot(shop = self.shop, title = "Coin From Egypt 1905 (PCGS 60)", description = "rare coin", category = category, date_time = now, weight = "5", session=auction, starting_bid=decimal.Decimal("10.00"), reserve=decimal.Decimal("0.00")) lot.save() # Ttry to login success = self.client.login(username='******', password='******') self.assertEqual(success, True, "login failed") response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed when trying to view lot") # Check than when is created there is no any bid lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bid_actual, None) # Testing bid increment table increment_calculator = BidderIncrementCalculator() #from 0.01 to 0.99 --> 0.05 #from 1.00 to 4.99 --> 0.25 #from 5.00 to 24.99 --> 0.50 #from 25.00 to 99.99 --> 1.00 #from 100.00 to 249.99 --> 2.50 #from 250.00 to 499.99 --> 5.00 #from 500.00 to 999.99 --> 10.00 #from 1000.00 to 2499.99 --> 25.00 #from 2500.00 to 4999.99 --> 50.00 #from 5000.00 to 99999.99--> 100.00 for i in range(30): lot = Lot.objects.get(id=lot.id) if lot.bid_actual: logging.info("Current Bid: %s" % (lot.bid_actual.bid_amount)) else: logging.info("Starting Bid: %s" % (lot.starting_bid)) min_bid = lot.next_bid_from() (from_price, to_price, inc) = increment_calculator.match_for(min_bid) logging.info("From: %s To: %s Bid must be grater than %s (increment to be applied %s)" % (from_price, to_price, min_bid, inc)) logging.info("Minimum Bid allowed: %s" % min_bid) # Should not be allowed to bid wrong_bid = min_bid - (min_bid * decimal.Decimal(("0.1"))) logging.info("Testing Invalid Bidding Price: %s" % wrong_bid) response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': wrong_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 200, "Failed: This bid shouldn't be valid!!") # Should be allowed to bid string_format = '%.2f' % (min_bid + (min_bid * decimal.Decimal(("0.5")))) valid_bid = decimal.Decimal((string_format)) logging.info("Testing Valid Bidding Price: %s" % valid_bid) response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': valid_bid}, HTTP_HOST=self.HTTP_HOST) self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % valid_bid) # Check that last bid is the the currently lot.bid_actual logging.info("Testing Correct Lot.bid_actual: %s" % valid_bid) lot = Lot.objects.get(id=lot.id) self.assertEqual(lot.bid_actual.bid_amount, valid_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, valid_bid))