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(<BookItem loading book={BookNormal} />)
    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
    })

  })
})
