diff --git a/components/Grid.vue b/components/Grid.vue
new file mode 100644
index 0000000..a991e15
--- /dev/null
+++ b/components/Grid.vue
@@ -0,0 +1,19 @@
+
+
+ {{ dataSource }}
+
+
+
+
+
+
diff --git a/pages/films/index.vue b/pages/films/index.vue
index 9c5480e..73805ef 100644
--- a/pages/films/index.vue
+++ b/pages/films/index.vue
@@ -3,19 +3,25 @@
Ghibli films
- {{ films }}
+
diff --git a/test/Grid.spec.js b/test/Grid.spec.js
new file mode 100644
index 0000000..4f012fd
--- /dev/null
+++ b/test/Grid.spec.js
@@ -0,0 +1,23 @@
+import { mount } from "@vue/test-utils";
+import Grid from "@/components/Grid";
+import mockFilms from "./fake-films.json";
+
+describe("Grid", () => {
+ it("tests props", () => {
+ expect(Grid.props).toMatchObject({
+ dataSource: {
+ type: Array,
+ required: true
+ }
+ });
+ });
+
+ it("should render Grid instance", () => {
+ const wrapper = mount(Grid, {
+ propsData: {
+ dataSource: mockFilms
+ }
+ });
+ expect(JSON.parse(wrapper.text())).toEqual(mockFilms);
+ });
+});
diff --git a/test/index.spec.js b/test/index.spec.js
index 3158fc5..0c72af5 100644
--- a/test/index.spec.js
+++ b/test/index.spec.js
@@ -1,4 +1,4 @@
-import { mount } from "@vue/test-utils";
+import { mount, shallowMount } from "@vue/test-utils";
import axios from "axios";
import FilmsView from "@/pages/films";
import mockFilms from "./fake-films.json";
@@ -14,7 +14,7 @@ describe("Films page", () => {
});
it("should get films from Ghibli API", async () => {
- let wrapper = mount(FilmsView, {
+ let wrapper = shallowMount(FilmsView, {
mocks: {
$axios: axios
}
@@ -25,13 +25,13 @@ describe("Films page", () => {
);
// Init page with mocked asyncData
- wrapper = mount(FilmsView, {
+ wrapper = shallowMount(FilmsView, {
mocks: {
films: (await wrapper.vm.$options.asyncData(wrapper.vm)).films,
$axios: axios
}
});
- expect(JSON.parse(wrapper.find(".films").text())).toEqual(mockFilms);
+ expect(wrapper.findComponent({ name: "Grid" }).exists()).toBe(true);
});
});