sonnen-battery-api
Version:
A Node.js package for interacting with Sonnen's Battery API v2
51 lines (40 loc) • 1.57 kB
JavaScript
const chai = require('chai');
const expect = chai.expect;
const sinon = require('sinon');
const axios = require('axios');
const SonnenBatteryAPI = require('../lib/SonnenBatteryAPI');
describe('SonnenBatteryAPI', () => {
let sonnenBattery;
let axiosInstance;
before(() => {
axiosInstance = axios.create();
sonnenBattery = new SonnenBatteryAPI('mock-server-ip', 'mock-server-port', 'mock-auth-token');
sonnenBattery.instance = axiosInstance; // Replace instance with a mock instance
});
afterEach(() => {
sinon.restore();
});
it('should set and get operating mode', async () => {
// Mock a successful PUT request
sinon.stub(axiosInstance, 'put').resolves({ data: { status: 'success' } });
const mode = 'mode_value';
const response = await sonnenBattery.setOperatingMode(mode);
expect(response).to.have.property('status', 'success');
// Mock a successful GET request
sinon.stub(axiosInstance, 'get').resolves({ data: mode });
const fetchedMode = await sonnenBattery.getOperatingMode();
expect(fetchedMode).to.equal(mode);
});
it('should handle errors when setting operating mode', async () => {
// Mock a failed PUT request
sinon.stub(axiosInstance, 'put').rejects({ response: { status: 500, data: { error: 'Internal Server Error' } } });
const mode = 'mode_value';
try {
await sonnenBattery.setOperatingMode(mode);
} catch (error) {
expect(error.response.status).to.equal(500);
expect(error.response.data.error).to.equal('Internal Server Error');
}
});
// Add more test cases for other functions
});