import * as React from "react" import * as renderer from "react-test-renderer" import { GetBookStatusFromBook, BOOK_RECENT_ACTITY_ENUM } from "../utils" import { BookItem, BookThumbnail } from ".." import { AuthorItemWithSubLabel } from "../../Author" const Book = { categories: [ "Y", "EROTIC" ], synopsis: "hi", viewCount: 10, title: "Friend:Small Bedroom", thumbnailImage: "https://static.jamplay.world/book/5aed7c5408b04600106590e6/3ef1645b-db3f-4bbd-b098-886598db1753.blob.jpg", _id: "5aef338e08b04600106b27bf", lastEpisodePublishedAt: "2018-05-06t09:08:56.434z", author: { name: "สกิลพิมพ์เต่าคลาน", profilePicture: null, _id: "5ae0ac46b991e40012a36bb5" }, publishedAt: "2018-05-05T09:42:53.557Z", episodes: [ { publishedAt: "2018-05-06T16:56:40.617Z" } ] } const BookNormal = { categories: [ "TEEN", "ROMANTIC" ], title: "นายคาสโนว่าปะทะยัยซ่าส์สุดสวย", thumbnailImage: "https://static.jamplay.world/book/59f05c1c5905644d284c0a81/6de3f418-93d4-48f8-877f-7a79a7f18289.blob.jpg", _id: "59f05c1c5905644d284c0a81", viewCount: 18, synopsis: "เรื่องวุ่นๆ กรุ่นไอรักหวานฉ่ำ เมื่อคู่กัดที่ไม่เคยถูกชะตากันเลยสักนิด ต้องตกกระไดพลอยโจนมาใช้ชีวิตอยู่ร่วมบ้านกันชั่วคราว!?", author: { name: "หัวสมองตีบตัน", profilePicture: null, _id: "59a84f2505a03c70b873ffce" }, lastEpisodePublishedAt: "2017-10-31T09:48:00.746Z", publishedAt: "2017-10-31T09:42:12.200Z", episodes: [ { publishedAt: "2017-10-31T09:48:00.746Z" } ] } const BookNewEpisodeFallBack = { categories: [ "TEEN", "Y" ], title: "ยัยโรคจิต(?)inฮาเร็มสระว่ายน้ำ", thumbnailImage: "https://static.jamplay.world/book/5acf34078b7c1b000f9637b9/c59488c1-74f1-4ead-b616-99f88e44b01f.blob.jpg", _id: "5aeec59dcc245a000f2ce546", viewCount: 24, episodeCount: 2, synopsis: `\'ยัยโรคจิต...\'\nบอกว่าไม่ได้โรคจิตไงย้าา -_-^\nฉันไม่ได้โรคจิตแค่เป็นอาการที่คลั่งผู้ชายหล่อๆและ...\n ซิกแพค>๐<\nเห็นมั้ยล่ะว่า...โรคจิต=_=\nและเมื่อ\'ยัยโรคจิต\'โดนลากมาอยู่ใน\' ฮาเร็มสะว่ายน้ำ\'ที่มีแต่ผู้ชายหล่อๆเล่นน้ำอวดซิกแพคเนี่ย...\nขอสามคำ!!!\nพัง แน่ นอน>^<`, author: { name: "Jejvxzjjzz", profilePicture: "https://static.jamplay.world/author/5abdf461f3311e0012d951f0/2e7cb4af-f252-4abd-8ad7-4e14853321b2.blob.jpg", _id: "5abdf461f3311e0012d951f0" }, lastEpisodePublishedAt: "2018-05-06T09:08:56.434Z", publishedAt: "2018-04-21T13:17:40.124Z", episodes: [ { publishedAt: "2018-05-06T09:08:56.434Z" } ] } const BookNewEpisode = { categories: [ "TEEN", "Y" ], title: "ยัยโรคจิต(?)inฮาเร็มสระว่ายน้ำ", thumbnailImage: "https://static.jamplay.world/book/5acf34078b7c1b000f9637b9/c59488c1-74f1-4ead-b616-99f88e44b01f.blob.jpg", _id: "5aeec59dcc245a000f2ce546", viewCount: 24, episodeCount: 2, synopsis: `\'ยัยโรคจิต...\'\nบอกว่าไม่ได้โรคจิตไงย้าา -_-^\nฉันไม่ได้โรคจิตแค่เป็นอาการที่คลั่งผู้ชายหล่อๆและ...\n ซิกแพค>๐<\nเห็นมั้ยล่ะว่า...โรคจิต=_=\nและเมื่อ\'ยัยโรคจิต\'โดนลากมาอยู่ใน\' ฮาเร็มสะว่ายน้ำ\'ที่มีแต่ผู้ชายหล่อๆเล่นน้ำอวดซิกแพคเนี่ย...\nขอสามคำ!!!\nพัง แน่ นอน>^<`, author: { name: "Jejvxzjjzz", profilePicture: "https://static.jamplay.world/author/5abdf461f3311e0012d951f0/2e7cb4af-f252-4abd-8ad7-4e14853321b2.blob.jpg", _id: "5abdf461f3311e0012d951f0" }, publishedAt: "2018-04-21T13:17:40.124Z", lastEpisodePublishedAt: "2018-05-06T09:08:56.434Z", } const DATE_TO_USE = 1526016422793 Date.now = jest.fn().mockReturnValue(DATE_TO_USE) as any describe("BookItem test" , () => { it("should หนังสือที่ publish มาภายใน 7 วันต้องเป้นหนังสือออกใหม่เท่านั้น (NEW_RELEASE) ", () => { expect(GetBookStatusFromBook(Book as any)).toEqual(BOOK_RECENT_ACTITY_ENUM.NEW_RELEASE.value) }) it("should หนังสือที่ publish มาภายใน 7 วัน และมีตอนออกใหม่ ต้องเป็น หนังสืออกใหม่เท่านั้น (NEW_RELEASE)", () => { expect(GetBookStatusFromBook(Book as any)).toEqual(BOOK_RECENT_ACTITY_ENUM.NEW_RELEASE.value) }) it("should หนังสือที่ publish เกิน 7 วันต้องกลายเป็นหนังสือปกติ (NONE)", () => { expect(GetBookStatusFromBook(BookNormal as any)).toEqual(BOOK_RECENT_ACTITY_ENUM.NONE.value) }) it("should หนังสือที่ publish episode ใหม่หลังจาก 7 วันต้องเป็น หนังสือที่มีการออกตอนใหม่ (NEW_EPISODE)", () => { expect(GetBookStatusFromBook(BookNewEpisode)).toEqual(BOOK_RECENT_ACTITY_ENUM.NEW_EPISODE.value) }) it("should หนังสือที่ publish episode ใหม่หลังจาก 7 วันต้องเป็น หนังสือที่มีการออกตอนใหม่ (NEW_EPISODE)", () => { expect(GetBookStatusFromBook(BookNewEpisodeFallBack)).toEqual(BOOK_RECENT_ACTITY_ENUM.NEW_EPISODE.value) }) it("should render placeholder on loading props", () => { const tree = renderer.create() const root = tree.root /** * Should pass loading props to Bookthumbnail */ root.find((node) => { return node.type === (BookThumbnail as any) && node.props.loading === true }) /** * Should pass loading props * to AuthorItemWithSublabel */ root.find((node) => { return node.type === (AuthorItemWithSubLabel as any) && node.props.loading === true }) }) })