0

I created an array with objects, array size of 10; in my testing phase I need to enter all 10 array elements with objects; every data will be updated by a button click.

it('22 should create 10 new leads with valid inputs', function(){

        asyncLoop({
            length : 10,
            functionToLoop : function(loop, i){

                newLeadButton.click().then(function() {
                    expect(browser.getLocationAbsUrl()).toMatch('/create');

                    firstNameField.sendKeys(    leadArray2[i+1].firstName    );
                    lastNameField.sendKeys(     leadArray2[i+1].lastName     );
                    meetingTimeField.sendKeys(  leadArray2[i+1].meetingTime  );
                    emailField.sendKeys(        leadArray2[i+1].email        );
                    mobileField.sendKeys(       leadArray2[i+1].mobileNumber );
                    phoneField.sendKeys(        leadArray2[i+1].phoneNumber  );
                    closeDateField.sendKeys(    leadArray2[i+1].closeDate    );
                    address1Field.sendKeys(     leadArray2[i+1].address1     );
                    address2Field.sendKeys(     leadArray2[i+1].address2     );
                    cityField.sendKeys(         leadArray2[i+1].city         );

                    createLeadButton.click().then(function() {
                        expect(browser.getLocationAbsUrl()).toMatch('/lead');
                        expect(leadListElems.count()).toMatch(i+6);
                        loop();
                    });
                });
            },
            callback : function(){
                expect(leadListElems.count()).toMatch(14);
            }    

        });

    });
// http://stackoverflow.com/questions/4288759/asynchronous-for-cycle-in-javascript
    var asyncLoop = function(o){
        var i=-1;

        var loop = function(){
            i++;
            if(i==o.length){o.callback(); return;}
            o.functionToLoop(loop, i);
        } 
        loop();//init
    }

The issue in this code is that my first array element is not printed, and I require help in printing all 10 array elements with their objects.

var leadArray2=[


        {
            firstName     :  '1',
            lastName      :  '1',
            meetingTime   :  '01/12/2016 10:00 am',
            email         :  'yokname1@gmail.com',
            mobileNumber  :  '9876543210',
            phoneNumber   :  '7894561230', 
            closeDate     :  '01/01/2018',
            address1      :  'Address Line 1 A', 
            address2      :  'Address Line 1 B', 
            city          :  'City 1'
        }, 
        {
            firstName     :  '2',
            lastName      :  '2',
            meetingTime   :  '02/12/2016 11:00 am',
            email         :  'yokname2@gmail.com',
            mobileNumber  :  '9876543211',
            phoneNumber   :  '7894561231', 
            closeDate     :  '02/01/2017',
            address1      :  'Address Line 2 A', 
            address2      :  'Address Line 2 B', 
            city          :  'City 2'
        }, ...................];
Armali
  • 18,255
  • 14
  • 57
  • 171
Yokesh Varadhan
  • 1,636
  • 4
  • 21
  • 47
  • 3
    You are calling `o.functionToLoop(loop, i);` where `ì = 0` and you are getting `leadArray2[i+1]`, so you are getting element 1, instead of 0. – jjimenez Oct 09 '15 at 06:55
  • 1
    @jjimenez I think you can post it as an answer. – alecxe Oct 09 '15 at 13:36

1 Answers1

0

You are calling o.functionToLoop(loop, i); where i = 0 and you are getting leadArray2[i+1], so you are getting element 1, instead of 0.

jjimenez
  • 853
  • 1
  • 7
  • 18