import assert from 'assert'; import React from 'react'; // jshint ignore:line import UploadAvatar from 'misago/components/change-avatar/upload'; // jshint ignore:line import misago from 'misago/index'; import * as testUtils from 'misago/utils/test-utils'; let component = null; /* jshint ignore:start */ let apiResponse = { "crop_tmp": false, "galleries": [ { "images": [ "avatars/Nature/arctic_fox.jpg", "avatars/Nature/baby_fox.jpg", "avatars/Nature/blackbird.jpg", "avatars/Nature/rabbit.jpg", "avatars/Nature/serval.jpg" ], "name": "Nature" }, { "images": [ "avatars/Space/andromeda.jpg", "avatars/Space/antennae_galaxies.jpg", "avatars/Space/barred_spiral_galaxy.jpg", "avatars/Space/messier_74.jpg", "avatars/Space/ngc_1672.jpg", "avatars/Space/ngc_4414.jpg" ], "name": "Space" } ], "crop_org": false, "upload": { "allowed_extensions": [ ".gif", ".png", ".jpg", ".jpeg" ], "limit": 750000, "allowed_mime_types": [ "image/gif", "image/jpeg", "image/png" ] }, "generated": true, "gravatar": true }; /* jshint ignore:end */ describe("Upload Avatar", function() { beforeEach(function() { misago._context = { 'user': { 'id': 123, 'avatar_hash': 'aabbccdd', 'api_url': { 'avatar': '/test-api/users/123/avatar/' } } }; }); afterEach(function() { testUtils.unmountComponents(); }); it("renders", function(done) { /* jshint ignore:start */ testUtils.render( ); /* jshint ignore:end */ testUtils.onElement('#test-mount .modal-avatar-upload', function() { let element = $('#test-mount .modal-avatar-upload'); assert.ok(true, "component renders"); assert.equal(element.find('p').text().trim(), "gif, png, jpg, jpeg files smaller than 750 KB", "valid help text is displayed"); done(); }); }); it("validates image", function(done) { /* jshint ignore:start */ component = testUtils.render( ); /* jshint ignore:end */ testUtils.onElement('#test-mount .modal-avatar-upload', function() { assert.equal(component.validateFile({'size': 83 * 100 * 1000}), "Selected file is too big. (8.3 MB)", "too large file is rejected"); assert.equal(component.validateFile( {'size': 83 * 1000, 'type': "image/bmp"}), "Selected file type is not supported.", "invalid file mime type is rejected"); assert.equal(component.validateFile( {'size': 83 * 1000, 'type': "image/png", 'name': 'test.bmp'}), "Selected file type is not supported.", "invalid file extension is rejected"); assert.equal(component.validateFile( {'size': 83 * 1000, 'type': "image/png", 'name': 'test.png'}), false, "file raises no errors"); done(); }); }); });