const app = require('vn-loopback/server/server');

describe('loopback model address', () => {
    let createdAddressId;

    afterAll(async done => {
        let client = await app.models.Client.findById(101);

        await app.models.Address.destroyById(createdAddressId);
        await client.updateAttribute('isEqualizated', false);

        done();
    });

    describe('observe()', () => {
        it('should throw an error when deactivating a consignee if its the default address', async() => {
            let error;
            let address = await app.models.Address.findById(1);

            await address.updateAttribute('isActive', false)
                .catch(e => {
                    error = e;

                    expect(error.message).toEqual('The default consignee can not be unchecked');
                });

            expect(error).toBeDefined();
        });

        it('should set isEqualizated to true of a given Client to trigger any new address to have it', async() => {
            let client = await app.models.Client.findById(101);

            expect(client.isEqualizated).toBeFalsy();

            await client.updateAttribute('isEqualizated', true);

            let newAddress = await app.models.Address.create({
                clientFk: 101,
                agencyModeFk: 5,
                city: 'here',
                isActive: true,
                mobile: '555555555',
                nickname: 'Test address',
                phone: '555555555',
                postalCode: '00000',
                provinceFk: 1,
                street: 'Test address'
            });

            expect(newAddress.isEqualizated).toBeTruthy();

            createdAddressId = newAddress.id;
        });
    });
});