
var handler = require('./index').handler
var assert = require('assert')

describe('Get state', () => {
  it('should get one', done => {
    handler({
      body: {
        "type": "Get state",
        "input": {
          "Property name": "Users/1/Foo"
        }
      }
    }, null, (data) => {
      assert.deepEqual(data, { _id: '1', Foo: 'Bar' })
      done()
    })
  })

  it('should get one2', done => {
    handler({
      body: {
        type: 'Get state',
        input: {
          'Property name': 'Users/1'
        }
      }
    }, null, (data) => {
      assert.deepEqual(data, { _id: '1', Foo: 'Bar', id: '1', Bax: { Hello: 'World' } })
      done()
    })
  })

  it('should get many', done => {
    handler({
      body: {
        type: 'Get state',
        input: {
          'Properties': [
            {
              'Property name': 'Users/1/Bax'
            }
          ]
        }
      }
    }, null, (data) => {
      assert.deepEqual(data, [ { _id: '1', Bax: { Hello: 'World' } } ])
      done()
    })
  })

  it('should query with conditions', done => {
    handler({
      body: {
        type: 'Get state',
        input: {
          'Property name': 'Users',
          'Conditions': [
            {
              Left: {
                type: 'Access state',
                input: {
                  'Property name': 'Foo/Hello'
                }
              },
              Operator: 'Equal',
              Right: 'World'
            }
          ]
        }
      }
    }, null, (data) => {
      assert.deepEqual(data, [ { _id: '1', Bax: { Hello: 'World' } } ])
      done()
    })
  })
})
