Search code examples
javascriptangularjscountrepeaterprotractor

Protractor: Return Repeater Count from Prototype


I have this behavior which I can't understand:

Cart.prototype.getCouponsCount = function() {

    // Loop through all rows of coupons currently available in the cart
    ele.cartCouponsList.count().then(function(count) {

        console.log("Amount of items in cart:", count);
        return count;
    });
};

When called like this:

var Cart = require("../../../../lib/cartlib");
var cart = new Cart();

expect(cart.getCouponsCount()).toBe(2);

Returns undefined, but in console I can see the correct coupon amount being printed. So it's just not returning the count back.

Similarly I have this working for the getText() method, therefore why I can't understand why the count() method would behave differently.

Working method:

Cart.prototype.getEvent = function(row) {

    var cartHistory = new Cart();
    var parent = cartHistory.getCartCoupon(row);

    var child = parent.element(by.binding("selection.event.name"))
        .getText().then(function(e) {

            console.log(e);
            return e;
        });
};

Anyone can point me in the right direction?


Solution

  • There is no return from the function, add it:

    Cart.prototype.getCouponsCount = function() {
    
        // HERE 
        return ele.cartCouponsList.count().then(function(count) {
    
            console.log("Amount of items in cart:", count);
            return count;
        });
    };