def test_edit_packet_submission_no_changes(self, app, db): """Flash a message if no changes are made in a form submission.""" cultivar = Cultivar() packet = Packet() db.session.add(packet, cultivar) packet.price = Decimal("2.99") packet.quantity = Quantity(value=100, units="seeds") packet.sku = "8675309" cultivar.name = "Foxy" cultivar.common_name = CommonName(name="Foxglove") cultivar.packets.append(packet) db.session.commit() with app.test_client() as tc: rv = tc.post( url_for("seeds.edit_packet", pkt_id=packet.id), data=dict( id=packet.id, price=packet.price, qty_val=str(packet.quantity.value), units=packet.quantity.units, sku=packet.sku, ), follow_redirects=True, ) assert "No changes to" in str(rv.data)
def test_cultivar_bad_slugs(self, app, db): """Return 404 if any slug given does not correspond to a db entry.""" app.config["SHOW_CULTIVAR_PAGES"] = True idx = Index() cn = CommonName() cultivar = Cultivar() db.session.add_all([idx, cn, cultivar]) idx.name = "Perennial Flower" cn.name = "Foxglove" cultivar.name = "Foxy" cultivar.common_name = cn cultivar.description = "Like that Hendrix song." db.session.commit() with app.test_client() as tc: rv = tc.get(url_for("seeds.cultivar", idx_slug=idx.slug, cn_slug=cn.slug, cv_slug="no-biscuit")) assert rv.status_code == 404 with app.test_client() as tc: rv = tc.get(url_for("seeds.cultivar", idx_slug="no_biscuit", cn_slug=cn.slug, cv_slug=cultivar.slug)) assert rv.status_code == 404 with app.test_client() as tc: rv = tc.get(url_for("seeds.cultivar", idx_slug=idx.slug, cn_slug="no-biscuit", cv_slug=cultivar.slug)) assert rv.status_code == 404 with app.test_client() as tc: rv = tc.get(url_for("seeds.cultivar", idx_slug="no-biscuit", cn_slug="no-biscuit", cv_slug="no-biscuit")) assert rv.status_code == 404
def test_add_packet_renders_page(self, app, db): """Render form page given a valid cv_id.""" cultivar = Cultivar() db.session.add(cultivar) cultivar.name = "Foxy" db.session.commit() with app.test_client() as tc: rv = tc.get(url_for("seeds.add_packet", cv_id=cultivar.id)) assert "Add a Packet" in str(rv.data)
def test_validate_sku(self, db): """Raise ValidationError if SKU already exists in db.""" packet = Packet() cultivar = Cultivar() db.session.add_all([packet, cultivar]) packet.sku = '8675309' cultivar.name = 'Jenny' packet.cultivar = cultivar db.session.commit() form = AddPacketForm(cultivar=cultivar) form.sku.data = '8675309' with pytest.raises(ValidationError): form.validate_sku(form.sku)
def foxy_cultivar(): """Generate a Cultivar object based on Foxy Foxglove.""" cultivar = Cultivar() cultivar.name = "Foxy" cultivar.description = "Not to be confused with that Hendrix song." bn = BotanicalName() bn.name = "Digitalis purpurea" cultivar.botanical_name = bn idx = Index() idx.name = "Perennial Flower" cn = CommonName() cn.name = "Foxglove" cn.index = idx cultivar.common_name = cn return cultivar
def test_edit_packet_renders_page(self, app, db): """Render form page with valid pkt_id and no post data.""" cultivar = Cultivar() packet = Packet() db.session.add_all([packet, cultivar]) packet.price = Decimal("2.99") packet.quantity = Quantity(value=100, units="seeds") packet.sku = "8675309" cultivar.name = "Foxy" cultivar.common_name = CommonName(name="Foxglove") cultivar.packets.append(packet) db.session.commit() with app.test_client() as tc: rv = tc.get(url_for("seeds.edit_packet", pkt_id=packet.id)) assert "Edit Packet" in str(rv.data)
def test_select_packet_valid_submission(self, app, db): """Redirect to dest given valid selection.""" cultivar = Cultivar() packet = Packet() db.session.add_all([cultivar, packet]) cultivar.name = "Foxy" cultivar.common_name = CommonName(name="Foxglove") cultivar.packets.append(packet) packet.price = Decimal("1.99") packet.quantity = Quantity(value=100, units="seeds") packet.sku = "8675309" db.session.commit() with app.test_client() as tc: rv = tc.post(url_for("seeds.select_packet", dest="seeds.edit_packet"), data=dict(packet=packet.id)) assert rv.location == url_for("seeds.edit_packet", pkt_id=packet.id, _external=True)
def test_cv_slugs_not_in_cultivar(self, app, db): """Return 404 if slugs return db entries, but entry not in cultivar.""" app.config["SHOW_CULTIVAR_PAGES"] = True idx1 = Index() idx2 = Index() cn1 = CommonName() cn2 = CommonName() cultivar = Cultivar() db.session.add_all([idx1, idx2, cn1, cn2, cultivar]) idx1.name = "Perennial Flower" idx2.name = "Long Hair" cn1.name = "Foxglove" cn2.name = "Persian" cultivar.name = "Foxy" cultivar.common_name = cn1 db.session.commit() with app.test_client() as tc: rv = tc.get(url_for("seeds.cultivar", idx_slug=idx1.slug, cn_slug=cn2.slug, cv_slug=cultivar.slug)) assert rv.status_code == 404 with app.test_client() as tc: rv = tc.get(url_for("seeds.cultivar", idx_slug=idx2.slug, cn_slug=cn1.slug, cv_slug=cultivar.slug)) assert rv.status_code == 404