An open API service indexing awesome lists of open source software.

https://github.com/avh4/dropbox-mock.js

Test double for Dropbox API
https://github.com/avh4/dropbox-mock.js

Last synced: 3 months ago
JSON representation

Test double for Dropbox API

Awesome Lists containing this project

README

        

[![Build Status](https://secure.travis-ci.org/avh4/dropbox-mock.js.svg)](http://travis-ci.org/avh4/dropbox-mock.js)
[![Stability: 2 - unstable](http://img.shields.io/badge/stability-unstable-yellow.svg)](http://nodejs.org/api/documentation.html#documentation_stability_index)

## Usage

```bash
npm install --save-dev dropbox-mock
```

Global test setup:

```javascript
global.Dropbox = new (require('dropbox-mock'))();
global.Dropbox.allowAppKey('FAKE-KEY-FOR-TEST');
```

When creating the Dropbox Client in test, you need to use the same app key that you allowed in the global test setup above.

```javascript
new Dropbox.Client({key: 'FAKE-KEY-FOR-TEST'});
```

After exercising code that should have created records, you can inspect the fake Dropbox datastore:

```javascript
global.Dropbox['MyTable']; // => yields the stored object
```

## Currently supported APIs

- `new Dropbox.Client`
- `Client.authenticate()`
- `Client.isAuthenticated()`
- `Client.getDatastoreManager()`
- `DatatstoreManager.openDefaultDatastore(callback)`
- `Datastore.getTable(name)`
- `Datastore.recordsChanged.addListener(callback)` (must be manually triggered by your test)
- `Table.query()` (no params)
- `Table.insert(record)`
- `Record.get(fieldName)`
- `Record.deleteRecord()`
- `Record.getId()`
- `Record.update()`

Pull requests are welcome.

## Examples

### Table.query()

```javascript
global.Dropbox = new (require('dropbox-mock'))();
global.Dropbox.allowAppKey('FAKE-KEY-FOR-TEST');
global.Dropbox['MyTable'] = [ { name: "Record 1", value: 1 } ];
// call subject method that queries MyTable
```

### Table.insert(record)

```javascript
global.Dropbox = new (require('dropbox-mock'))();
global.Dropbox.allowAppKey('FAKE-KEY-FOR-TEST');
// call subject method that should insert records
expect(global.Dropbox['MyTable']).to.equal(expectedRecords);
```

### Datastore.recordsChanged.addListener(callback)

```javascript
global.Dropbox = new (require('dropbox-mock'))();
global.Dropbox.allowAppKey('FAKE-KEY-FOR-TEST');
// call subject method that should register a listener
global.Dropbox.triggerRecordsChanged();
// verify subject performed an action in response to a recordsChanged event
```