I'm writing tests for a directive that basically expand over it's container to reach the full width of the browser window.
To exemplify this I'll write some sample code.
HTML in the page:
<div style="width: 800px; margin: 0 auto;">
<full-width></full-width>
</div>
The directive then replace the fullWidth directive with:
<div class="full-width">
<div ng-transclude=""></div>
</div>
And assign margins to the element, like this:
var sideOffset = element[0].offsetLeft*-1;
element.css('margin-left', sideOffset+'px')
element.css('margin-right', sideOffset+'px')
Now, the directive works perfectly fine, but when I try to test the offset with:
describe('Directive: fullWidth', function () {
beforeEach(module('myApp'))
var element,
scope
beforeEach(inject(function ($rootScope) {
scope = $rootScope.$new()
}))
it('should have the same right and left margin', inject(function ($compile) {
element = angular.element('<tt-full-width-section></tt-full-width-section>');
element = $compile(element)(scope)
var leftMargin = element.css('margin-left')
console.log(leftMargin)
console.log(element)
}))
})
I get a nice 0px. Also inspecting the logged element[0].offsetLeft results in 0.
Any idea on how can I (if possible) tell Karma (Jasmine?) to render the div so I can check the offset?
Based on daveoncode suggestion, I made some changes to the test, and we're improving.
However, the directive doesn't seems to work in the test.
I still get 0px as margin-left while having 265px of offsetLeft
it('should have the same right and left margin', inject(function ($compile) {
element = angular.element(
' <div style="width:50%; margin: 0 auto;">' +
' <full-width></full-width>' +
' </div>'
);
element = $compile(element)(scope)
angular.element(document).find('body').append(element);
var el2 = element.find('div')
var leftMargin = el2.css('margin-left')
var rightMargin = el2.css('margin-right')
console.log(leftMargin, el2)
}