import { StageComponent } from "aurelia-testing"; import { bootstrap } from "aurelia-bootstrapper"; describe("the Aurelia Materialize CSS CardImageElement", () => { let sut; beforeEach(() => sut = StageComponent .withResources("./../../../../base/dist/amd/components/card/cardImageElement") .inView("")); afterEach(() => sut.dispose()); it("must add the class 'card-image' to the given element on attached", done => // arrange sut.manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) // act .then(() => sut.attached()) // assert .then(() => expect(sut.element.classList).toContain("card-image")) .then(done)); it("must remove the class 'card-image' from the given element on detached", done => // arrange sut .manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) .then(() => sut.attached()) .then(() => expect(sut.element.classList).toContain("card-image")) // act .then(() => sut.detached()) // assert .then(() => expect(sut.element.classList).not.toContain("card-image")) .then(done)); it("must add the class 'card-title' to the title element on attached", done => // arrange sut.manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) // act .then(() => sut.attached()) // assert .then(() => expect(sut.viewModel.titleElement.classList).toContain("card-title")) .then(done)); it("must remove the class 'card-title' from the title element on detached", done => // arrange sut .manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) .then(() => sut.attached()) .then(() => expect(sut.viewModel.titleElement.classList).toContain("card-title")) // act .then(() => sut.detached()) // assert .then(() => expect(sut.viewModel.titleElement.classList).not.toContain("card-title")) .then(done)); it("must set the imageUrl on the imageElement on attached", done => // arrange sut.inView("") .manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) // act .then(() => sut.attached()) // assert .then(() => expect(sut.viewModel.imageElement.src).toContain("http://some.uri/img.png")) .then(done)); it("must clear the imageUrl on the imageElement on detached", done => // arrange sut.inView("") .manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) .then(() => sut.attached()) .then(() => expect(sut.viewModel.imageElement.src).toEqual("http://some.uri/img.png")) // act .then(() => sut.detached()) // assert .then(() => expect(sut.viewModel.imageElement.src).toEqual("")) .then(done)); it("must set the title on the titleElement on attached", done => // arrange sut.inView("") .manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) // act .then(() => sut.attached()) // assert .then(() => expect(sut.viewModel.titleElement.textContent).toEqual("some title")) .then(done)); it("must clear the title on the titleElement on detached", done => // arrange sut.inView("") .manuallyHandleLifecycle() .create(bootstrap) .then(() => sut.bind()) .then(() => { sut.viewModel.element = sut.element; sut.viewModel.titleElement = document.querySelectorAll("[ref='titleElement']")[0]; sut.viewModel.imageElement = document.querySelectorAll("[ref='imageElement']")[0]; }) .then(() => sut.attached()) .then(() => expect(sut.viewModel.titleElement.textContent).toEqual("some title")) // act .then(() => sut.detached()) // assert .then(() => expect(sut.viewModel.titleElement.textContent).toEqual("")) .then(done)); });