Exemplo n.º 1
0
def test_place(db_session, client, loginned_user):
    # Given
    product = Product(
        name='라즈베리파이3 모델B', price=56000, detail='모델B')
    db_session.add(product)
    cart = Cart(product=product, user=loginned_user, quantity=1)
    db_session.add(cart)
    db_session.commit()

    # When
    response = client.post(url_for('order.place'), data={
        'shipping_info.receiver.name': 'Guni',
        'shipping_info.receiver.phone': '010-0000-0000',
        'shipping_info.address.zip_code': '00000',
        'shipping_info.address.address1': '관악구',
        'shipping_info.address.address2': '대한민국 서울',
        'shipping_info.message': '빨리 가져다 주셔요',
    })

    # Then
    assert response.status_code == 302
    order = db_session.query(Order).first()
    assert order.orderer == loginned_user
    assert order.shipping_info.receiver.name == 'Guni'
    assert order.shipping_info.receiver.phone == '010-0000-0000'
    assert order.shipping_info.address.zip_code == '00000'
    assert order.shipping_info.address.address1 == '관악구'
    assert order.shipping_info.address.address2 == '대한민국 서울'
    assert order.shipping_info.message == '빨리 가져다 주셔요'
    assert order.get_total_amounts() == 56000
    assert order.state == OrderState.PAYMENT_WAITING
def test_save(db_session, loginned_user, product):
    # Given
    cart = Cart(user=loginned_user, product=product, quantity=5)

    # When
    SqlCartRepository(db_session).save(cart)

    # Then
    assert db_session.query(Cart).count() == 1
Exemplo n.º 3
0
def test_cart(db_session, loginned_user, product):
    cart = Cart(product=product, quantity=4, user=loginned_user)
    db_session.add(cart)
    db_session.commit()

    get_cart = db_session.query(Cart).filter_by(
        product=product, quantity=4, user=loginned_user
    ).first()
    assert get_cart.id is cart.id
def test_delete_by_user(db_session, loginned_user, product):
    cart = Cart(user=loginned_user, product=product, quantity=5)
    db_session.add(cart)
    assert db_session.query(Cart).count() == 1

    # When
    SqlCartRepository(db_session).delete_by_user(loginned_user)

    # Then
    assert db_session.query(Cart).count() == 0
def test_find_by_user(db_session, loginned_user, product):
    # Given
    cart = Cart(user=loginned_user, product=product, quantity=5)
    db_session.add(cart)

    # When
    carts = SqlCartRepository(db_session).find_by_user(loginned_user)

    # Then
    assert len(carts) == 1
Exemplo n.º 6
0
def test_add_GIVEN_existing_same_product_THEN_add_quantity(
        db_session, add_cart_service, product, loginned_user):
    # Given
    existing_cart = Cart(product_id=product.id,
                         quantity=1,
                         user_id=loginned_user.id)
    db_session.add(existing_cart)
    db_session.commit()

    cart = Cart(product_id=product.id, quantity=2, user_id=loginned_user.id)

    # When
    add_cart_service.add(loginned_user, cart)

    # Then
    cart_query = db_session.query(Cart).filter(
        Cart.user_id == loginned_user.id, Cart.product_id == product.id)
    assert cart_query.count() == 1
    assert cart_query.first().quantity == 3
Exemplo n.º 7
0
def add_cart(add_cart_service: AddCartService = Provide[Container.add_cart_service]):
    try:
        product_id = int(request.form.get('product_id'))
        quantity = int(request.form.get('quantity'))
    except ValueError as e:
        raise InternalServerError('Invalid Value: ' + str(e))
    cart = Cart(user_id=current_user.id,
                product_id=product_id, quantity=quantity)
    add_cart_service.add(current_user, cart)
    return redirect(url_for('cart.confirm'))
Exemplo n.º 8
0
def test_add(db_session, add_cart_service, product, loginned_user):
    cart = Cart(product_id=product.id, quantity=2, user_id=loginned_user.id)

    # When
    add_cart_service.add(loginned_user, cart)

    # Then
    cart_query = db_session.query(Cart).filter(
        Cart.user_id == loginned_user.id)
    assert cart_query.count() == 1
    assert cart_query.first().quantity == 2
def test_find_by_user_GIVEN_other_user_THEN_nothing(db_session, loginned_user,
                                                    product):
    # Given
    cart = Cart(user=loginned_user, product=product, quantity=5)
    db_session.add(cart)
    other_user = User(username='******', password='******')

    # When
    carts = SqlCartRepository(db_session).find_by_user(other_user)

    # Then
    assert len(carts) == 0
Exemplo n.º 10
0
def test_add_GIVEN_existing_other_product(db_session, add_cart_service,
                                          product, loginned_user):
    # Given
    other_product = Product(name='다른 과자', price=2000, detail='음..')
    db_session.add(other_product)
    db_session.commit()
    other_cart = Cart(product_id=other_product.id,
                      quantity=1,
                      user_id=loginned_user.id)
    db_session.add(other_cart)
    db_session.commit()

    cart = Cart(product_id=product.id, quantity=2, user_id=loginned_user.id)

    # When
    add_cart_service.add(loginned_user, cart)

    # Then
    cart_query = db_session.query(Cart).filter(
        Cart.user_id == loginned_user.id, Cart.product_id == product.id)
    assert cart_query.count() == 1
    assert cart_query.first().quantity == 2
def test_place_order(pre_data_db_session, place_order_service, shipping_info):
    # Given
    product = pre_data_db_session.query(Product).first()
    orderer = pre_data_db_session.query(User).first()
    cart = Cart(product=product, user=orderer, quantity=1)
    pre_data_db_session.add(cart)

    # When
    order = place_order_service.place_order(orderer, shipping_info)

    # Then
    assert order.orderer == orderer
    assert order.shipping_info.receiver.phone == shipping_info.receiver.phone
    assert order.shipping_info.receiver.name == shipping_info.receiver.name
    assert order.state == OrderState.PAYMENT_WAITING
    assert len(order.order_lines) == 1
Exemplo n.º 12
0
def test_confirm(db_session, client, captured_templates, loginned_user):
    # Given
    product = Product(
        name='라즈베리파이3 모델B', price=56000, detail='모델B')
    db_session.add(product)
    db_session.commit()
    cart = Cart(product_id=product.id, quantity=1, user_id=loginned_user.id)
    db_session.add(cart)
    db_session.commit()

    # When
    response = client.get(url_for('cart.confirm'))

    # Then
    assert response.status_code == 200
    template, context = captured_templates[0]
    assert template.name == 'cart/order_confirm.html.j2'
    assert context['orderer'] == loginned_user
    assert len(context['carts']) == 1
    assert context['carts'][0].product_id == product.id