// const fixtures = require('../fixtures/fixtures')

const UserMock = require('../mocks/User')

const notFoundError = new Error()
notFoundError.name = 'NotFoundError'
notFoundError.status = 404

const build = fixtures => {
  const models = {
    User: {},
    Collection: {
      find: jest.fn(id => findMock(id, 'collections', fixtures)),
    },
    Fragment: {
      find: jest.fn(id => findMock(id, 'fragments', fixtures)),
    },
  }
  UserMock.find = jest.fn(id => findMock(id, 'users', fixtures))
  models.User = UserMock
  return models
}

const findMock = (id, type, fixtures) => {
  const foundObj = Object.values(fixtures[type]).find(
    fixtureObj => fixtureObj.id === id,
  )
  if (foundObj === undefined) return Promise.reject(notFoundError)
  return Promise.resolve(foundObj)
}
module.exports = { build }