import {
  kaufArtikels,
  kaufArtikel,
  createKaufArtikel,
  updateKaufArtikel,
  deleteKaufArtikel,
} from './kaufArtikels'

// Generated boilerplate tests do not account for all circumstances
// and can fail without adjustments, e.g. Float.
//           Please refer to the RedwoodJS Testing Docs:
//       https://redwoodjs.com/docs/testing#testing-services
// https://redwoodjs.com/docs/testing#jest-expect-type-considerations

describe('kaufArtikels', () => {
  scenario('returns all kaufArtikels', async (scenario) => {
    const result = await kaufArtikels()

    expect(result.length).toEqual(Object.keys(scenario.kaufArtikel).length)
  })

  scenario('returns a single kaufArtikel', async (scenario) => {
    const result = await kaufArtikel({ id: scenario.kaufArtikel.one.id })

    expect(result).toEqual(scenario.kaufArtikel.one)
  })

  scenario('creates a kaufArtikel', async (scenario) => {
    const result = await createKaufArtikel({
      input: {
        kauf_id: scenario.kaufArtikel.two.kauf_id,
        artikel_id: scenario.kaufArtikel.two.artikel_id,
        anzahl: 8696596,
      },
    })

    expect(result.kauf_id).toEqual(scenario.kaufArtikel.two.kauf_id)
    expect(result.artikel_id).toEqual(scenario.kaufArtikel.two.artikel_id)
    expect(result.anzahl).toEqual(8696596)
  })

  scenario('updates a kaufArtikel', async (scenario) => {
    const original = await kaufArtikel({
      id: scenario.kaufArtikel.one.id,
    })
    const result = await updateKaufArtikel({
      id: original.id,
      input: { anzahl: 785481 },
    })

    expect(result.anzahl).toEqual(785481)
  })

  scenario('deletes a kaufArtikel', async (scenario) => {
    const original = await deleteKaufArtikel({
      id: scenario.kaufArtikel.one.id,
    })
    const result = await kaufArtikel({ id: original.id })

    expect(result).toEqual(null)
  })
})
