import { haveText, html, test } from '../../utils'
test('basic drag sorting works',
[html`
`],
async ({ get }) => {
get('ul li').eq(0).should(haveText('foo'))
get('ul li').eq(1).should(haveText('bar'))
get('ul li').eq(2).should(haveText('baz'))
await get('#1').drag('#3')
get('ul li').eq(0).should(haveText('bar'))
get('ul li').eq(1).should(haveText('baz'))
get('ul li').eq(2).should(haveText('foo'))
await get('#3').drag('#1')
get('ul li').eq(0).should(haveText('bar'))
get('ul li').eq(1).should(haveText('foo'))
get('ul li').eq(2).should(haveText('baz'))
},
)
test('can use a custom handle',
[html`
- handle - foo
- handle - bar
`],
async ({ get }) => {
get('ul li').eq(0).should(haveText('handle - foo'))
get('ul li').eq(1).should(haveText('handle - bar'))
await get('#1 span').drag('#2')
get('ul li').eq(0).should(haveText('handle - bar'))
get('ul li').eq(1).should(haveText('handle - foo'))
},
)
test('can move items between groups',
[html`
`],
async ({ get }) => {
get('ul li').eq(0).should(haveText('foo'))
get('ul li').eq(1).should(haveText('bar'))
get('ol li').eq(0).should(haveText('oof'))
get('ol li').eq(1).should(haveText('rab'))
await get('#1').drag('#4')
get('ul li').eq(0).should(haveText('bar'))
get('ol li').eq(0).should(haveText('oof'))
get('ol li').eq(1).should(haveText('foo'))
get('ol li').eq(2).should(haveText('rab'))
},
)
test('sort handle method',
[html`
`],
async ({ get }) => {
await get('#1').drag('#3')
get('h1').should(haveText('1-2'))
await get('#3').drag('#1')
get('h1').should(haveText('3-2'))
},
)
test('can access key and position in handler',
[html`
`],
async ({ get }) => {
await get('#1').drag('#3')
get('h1').should(haveText('2-1'))
await get('#3').drag('#1')
get('h1').should(haveText('2-3'))
},
)
test('can use custom sortablejs configuration',
[html`
`],
async ({ get }) => {
get('ul li').eq(0).should(haveText('foo'))
get('ul li').eq(1).should(haveText('bar'))
get('ul li').eq(2).should(haveText('baz'))
await get('#1').drag('#3')
get('ul li').eq(0).should(haveText('foo'))
get('ul li').eq(1).should(haveText('bar'))
get('ul li').eq(2).should(haveText('baz'))
await get('#3').drag('#1')
get('ul li').eq(0).should(haveText('baz'))
get('ul li').eq(1).should(haveText('foo'))
get('ul li').eq(2).should(haveText('bar'))
},
)
test('works with Livewire morphing',
[html`
`],
async ({ get }) => {
await get('#1').drag('#3')
// This is the easiest way I can think of to assert the order of HTML comments doesn't change...
get('ul').should('have.html', `\n \n \n bar\n baz\n \n foo`)
},
)