user318722
user318722

Reputation: 215

Need Help to write a jasmine spec

Hello I am trying to write a jasmine test for a backbone view and one of its function. I want to test the correct behavior of the function in the case a user checks a checkbox in the rendered view then submit.

Here is the tests :

describe("buildCI()", function() {
    describe("with a category selection allowed's quidget model", function() {
        it("returns a CoacheeIssue model with the selected categories", function() {
            selection_allowed = true;
            lcc_selection_allowed = false;

            var view = new Rails3DeviseRspecCucumber.Views.CategoryPicker({
                collection: categoriesCollection,
                answers: answers,
                category_ids: category_ids,
                credentials: credentialsCollection,
                user_hash: user_hash,
                selection_allowed: selection_allowed,
                lcc_selection_allowed: lcc_selection_allowed  
            });
            // render the view so we can manipulate its DOM elements
            view.render();
            elDebug = $(view.$el);
            // Check programmatically a category checkbox
            $(elDebug.find('input.category-checkbox#5061c6a48624da6f4100000a')[0]).prop('checked', true);
            // call the buildCI() function and check the result
            result = view.buildCI();
            console.log(result);
            expect(result.get('categories')).toContain('category one');
            expect(result.get('categories')).not.toContain('category two');
        })
    })

Unfortunately the test fails with this message : Expected [ ] to contain 'category one'. I know it is not a coding error, because it is working in live, I would just like to know how to test it.

Here is the function :

buildCI: () ->
# prepare the category_ids and categories (names) attributes
if @selection_allowed
  selectedCategories = []
  for checkbox in $('input.category-checkbox')
    checkboxEl = $(checkbox)
    if checkbox.checked
      selectedCategories.push(_.find(@collection.models, (model) ->
        model.id == checkboxEl.attr('id')
        ))
  category_names = _.map(selectedCategories, (category) -> category.get('name'))
  category_ids = _.map(selectedCategories, (category) -> category.get('_id'))
else
  category_names = _.map(@collection.models, (category) -> category.get('name'))
  category_ids = _.map(@collection.models, (category) -> category.get('_id'))
return new Rails3DeviseRspecCucumber.Models.CoacheeIssue({ 
      is_solved: false, status: 'active', solution_value_estimate: '',
      answers: @answers, categories: category_names, category_ids: category_ids
    })

Thanks in advance

Upvotes: 1

Views: 119

Answers (1)

Mike Edwards
Mike Edwards

Reputation: 21

Is your selector too strict? I notice that it is:

$(elDebug.find('input.category-checkbox#5061c6a48624da6f4100000a')[0]).prop('checked', true);

but perhaps you only want it to be just:

$(elDebug.find('input.category-checkbox')[0]).prop('checked', true);

Upvotes: 1

Related Questions