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 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 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 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_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_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_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 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)