import assert from 'assert'
import migration36 from '../../../app/scripts/migrations/036'

describe('migration #36', function () {
  it('should update the version metadata', function (done) {
    const oldStorage = {
      meta: {
        version: 35,
      },
      data: {},
    }

    migration36
      .migrate(oldStorage)
      .then((newStorage) => {
        assert.deepEqual(newStorage.meta, {
          version: 36,
        })
        done()
      })
      .catch(done)
  })

  it('should remove privacyMode if featureFlags.privacyMode was false', function (done) {
    const oldStorage = {
      meta: {},
      data: {
        PreferencesController: {
          featureFlags: {
            privacyMode: false,
          },
        },
      },
    }

    migration36
      .migrate(oldStorage)
      .then((newStorage) => {
        assert.deepEqual(newStorage.data.PreferencesController, {
          featureFlags: {},
        })
        done()
      })
      .catch(done)
  })

  it('should remove privacyMode if featureFlags.privacyMode was true', function (done) {
    const oldStorage = {
      meta: {},
      data: {
        PreferencesController: {
          featureFlags: {
            privacyMode: true,
          },
        },
      },
    }

    migration36
      .migrate(oldStorage)
      .then((newStorage) => {
        assert.deepEqual(newStorage.data.PreferencesController, {
          featureFlags: {},
        })
        done()
      })
      .catch(done)
  })

  it('should NOT change any state if privacyMode does not exist', function (done) {
    const oldStorage = {
      meta: {},
      data: {
        PreferencesController: {
          migratedPrivacyMode: true,
          featureFlags: {},
        },
      },
    }

    migration36
      .migrate(oldStorage)
      .then((newStorage) => {
        assert.deepEqual(newStorage.data, oldStorage.data)
        done()
      })
      .catch(done)
  })

  it('should NOT change any state if PreferencesController is missing', function (done) {
    const oldStorage = {
      meta: {},
      data: {},
    }

    migration36
      .migrate(oldStorage)
      .then((newStorage) => {
        assert.deepEqual(newStorage.data, oldStorage.data)
        done()
      })
      .catch(done)
  })

  it('should NOT change any state if featureFlags is missing', function (done) {
    const oldStorage = {
      meta: {},
      data: {
        PreferencesController: {},
      },
    }

    migration36
      .migrate(oldStorage)
      .then((newStorage) => {
        assert.deepEqual(newStorage.data, oldStorage.data)
        done()
      })
      .catch(done)
  })
})