/* * Copyright 2016 balena.io * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { expect } from 'chai'; import * as _ from 'lodash'; import * as messages from '../../lib/shared/messages'; describe('Shared: Messages', function () { beforeEach(function () { this.drives = [ { description: 'My Drive', displayName: '/dev/disk1', }, { description: 'Other Drive', displayName: '/dev/disk2', }, ]; }); it('should contain object properties', function () { expect(_.every(_.map(messages, _.isPlainObject))).to.be.true; }); it('should contain function properties in each category', function () { _.each(messages, (category) => { expect(_.every(_.map(category, _.isFunction))).to.be.true; }); }); describe('.info', function () { describe('.flashComplete()', function () { it('should use singular when there are single results', function () { const msg = messages.info.flashComplete('image.img', this.drives, { failed: 1, successful: 1, }); expect(msg).to.equal( 'image.img was successfully flashed to 1 target and failed to be flashed to 1 target', ); }); it('should use plural when there are multiple results', function () { const msg = messages.info.flashComplete('image.img', this.drives, { failed: 2, successful: 2, }); expect(msg).to.equal( 'image.img was successfully flashed to 2 targets and failed to be flashed to 2 targets', ); }); it('should not contain failed target part when there are none', function () { const msg = messages.info.flashComplete('image.img', this.drives, { failed: 0, successful: 2, }); expect(msg).to.equal('image.img was successfully flashed to 2 targets'); }); it('should show drive name and description when only target', function () { const msg = messages.info.flashComplete('image.img', this.drives, { failed: 0, successful: 1, }); expect(msg).to.equal( 'image.img was successfully flashed to My Drive (/dev/disk1)', ); }); }); }); describe('.error', function () { describe('.flashFailure()', function () { it('should use plural when there are multiple drives', function () { const msg = messages.error.flashFailure('image.img', this.drives); expect(msg).to.equal( 'Something went wrong while writing image.img to 2 targets.', ); }); it('should use singular when there is one drive', function () { const msg = messages.error.flashFailure('image.img', [this.drives[0]]); expect(msg).to.equal( 'Something went wrong while writing image.img to My Drive (/dev/disk1).', ); }); }); }); });