Skip to content

Commit

Permalink
fix(android): fix clipboard test (#13355)
Browse files Browse the repository at this point in the history
  • Loading branch information
m1ga committed Apr 6, 2022
1 parent 2800aee commit 6289860
Showing 1 changed file with 132 additions and 87 deletions.
219 changes: 132 additions & 87 deletions tests/Resources/ti.ui.clipboard.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,17 @@
const should = require('./utilities/assertions');

describe('Titanium.UI.Clipboard', () => {
let win = null;
const waitTime = 250;

beforeEach(() => {
if (win === null) {
win = Ti.UI.createWindow({
backgroundColor: '#fff'
});
win.open();
}
});

// FIXME: There's a huge mismatch in the named data "mimeTypes" we accept and what iOS reports/accepts in set/getItems:
// we take in 'text' -> they report 'public.plain-text'
Expand Down Expand Up @@ -53,11 +64,13 @@ describe('Titanium.UI.Clipboard', () => {
});

it('clears \'text\' data type', () => {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.text = 'clearData';
should(Ti.UI.Clipboard.hasText()).be.true();
Ti.UI.Clipboard.clearData('text');
should(Ti.UI.Clipboard.hasText()).be.false();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.text = 'clearData';
should(Ti.UI.Clipboard.hasText()).be.true();
Ti.UI.Clipboard.clearData('text');
should(Ti.UI.Clipboard.hasText()).be.false();
}, waitTime);
});

// TODO: Try clearing only specific mime types on iOS!
Expand All @@ -77,11 +90,13 @@ describe('Titanium.UI.Clipboard', () => {
});

it('makes hasText() return false after being called', () => {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.text = 'clearText';
should(Ti.UI.Clipboard.hasText()).be.true();
Ti.UI.Clipboard.clearText();
should(Ti.UI.Clipboard.hasText()).be.false();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.text = 'clearText';
should(Ti.UI.Clipboard.hasText()).be.true();
Ti.UI.Clipboard.clearText();
should(Ti.UI.Clipboard.hasText()).be.false();
}, waitTime);
});
});

Expand All @@ -99,19 +114,23 @@ describe('Titanium.UI.Clipboard', () => {
});

it.android('returns null for non-text data type on Android', () => {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.text = 'hi';
should(Ti.UI.Clipboard.getData('color')).be.null();
should(Ti.UI.Clipboard.getData('url')).be.null();
should(Ti.UI.Clipboard.getData('image')).be.null();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.text = 'hi';
should(Ti.UI.Clipboard.getData('color')).be.null();
should(Ti.UI.Clipboard.getData('url')).be.null();
should(Ti.UI.Clipboard.getData('image')).be.null();
}, waitTime);
});

it('returns \'text\' data type', () => {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.setData('text', 'white');
should(Ti.UI.Clipboard.hasText()).be.true();
should(Ti.UI.Clipboard.getData('text')).eql('white');
should(Ti.UI.Clipboard.getData('text/plain')).eql('white');
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
Ti.UI.Clipboard.setData('text', 'white');
should(Ti.UI.Clipboard.hasText()).be.true();
should(Ti.UI.Clipboard.getData('text')).eql('white');
should(Ti.UI.Clipboard.getData('text/plain')).eql('white');
}, waitTime);
});

it.ios('returns \'url\' data type', () => {
Expand Down Expand Up @@ -157,24 +176,30 @@ describe('Titanium.UI.Clipboard', () => {
});

it('returns given string after setText()', () => {
Ti.UI.Clipboard.clearData(); // delete all data
// should(Ti.UI.Clipboard.text).eql(''); // FIXME: undefined on iOS
Ti.UI.Clipboard.text = 'setText';
should(Ti.UI.Clipboard.text).eql('setText');
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
// should(Ti.UI.Clipboard.text).eql(''); // FIXME: undefined on iOS
Ti.UI.Clipboard.text = 'setText';
should(Ti.UI.Clipboard.text).eql('setText');
}, waitTime);
});

it('returns given string after setData(\'text\')', () => {
Ti.UI.Clipboard.clearData(); // delete all data
// should(Ti.UI.Clipboard.text).eql(''); // FIXME: undefined on iOS
Ti.UI.Clipboard.setData('text', 'setData');
should(Ti.UI.Clipboard.text).eql('setData');
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
// should(Ti.UI.Clipboard.text).eql(''); // FIXME: undefined on iOS
Ti.UI.Clipboard.setData('text', 'setData');
should(Ti.UI.Clipboard.text).eql('setData');
}, waitTime);
});

it('returns given string after setData(\'text/plain\')', () => {
Ti.UI.Clipboard.clearData(); // delete all data
// should(Ti.UI.Clipboard.text).eql(''); // FIXME: undefined on iOS
Ti.UI.Clipboard.setData('text/plain', 'setData');
should(Ti.UI.Clipboard.text).eql('setData');
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
// should(Ti.UI.Clipboard.text).eql(''); // FIXME: undefined on iOS
Ti.UI.Clipboard.setData('text/plain', 'setData');
should(Ti.UI.Clipboard.text).eql('setData');
}, waitTime);
});

it.ios('returns given string after setData(\'public.plain-text\')', () => {
Expand All @@ -196,17 +221,21 @@ describe('Titanium.UI.Clipboard', () => {
});

it('returns true after setting named color data', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasColors()).be.false();
Ti.UI.Clipboard.setData('color', 'white');
should(Ti.UI.Clipboard.hasColors()).be.true();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasColors()).be.false();
Ti.UI.Clipboard.setData('color', 'white');
should(Ti.UI.Clipboard.hasColors()).be.true();
}, waitTime);
});

it('returns true after setting 3-digit hex color data', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasColors()).be.false();
Ti.UI.Clipboard.setData('color', '#0FF');
should(Ti.UI.Clipboard.hasColors()).be.true();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasColors()).be.false();
Ti.UI.Clipboard.setData('color', '#0FF');
should(Ti.UI.Clipboard.hasColors()).be.true();
}, waitTime);
});

// TODO: Test with Ti.UI.Color obj, rgb/rgba, 6-digit hex, 8-digit hex
Expand All @@ -218,39 +247,45 @@ describe('Titanium.UI.Clipboard', () => {
});

it('returns false with empty clipboard', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasData()).be.false();
should(Ti.UI.Clipboard.hasData('text')).be.false();
should(Ti.UI.Clipboard.hasData('text/plain')).be.false();
should(Ti.UI.Clipboard.hasData('color')).be.false();
should(Ti.UI.Clipboard.hasData('image')).be.false();
should(Ti.UI.Clipboard.hasData('url')).be.false();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasData()).be.false();
should(Ti.UI.Clipboard.hasData('text')).be.false();
should(Ti.UI.Clipboard.hasData('text/plain')).be.false();
should(Ti.UI.Clipboard.hasData('color')).be.false();
should(Ti.UI.Clipboard.hasData('image')).be.false();
should(Ti.UI.Clipboard.hasData('url')).be.false();
}, waitTime);
});

it('assumes text mimeType with no argument', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasData()).be.false();
should(Ti.UI.Clipboard.hasData('text')).be.false();
should(Ti.UI.Clipboard.hasData('text/plain')).be.false();
Ti.UI.Clipboard.text = 'hello there';
should(Ti.UI.Clipboard.hasData()).be.true();
should(Ti.UI.Clipboard.hasData('text')).be.true();
should(Ti.UI.Clipboard.hasData('text/plain')).be.true();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasData()).be.false();
should(Ti.UI.Clipboard.hasData('text')).be.false();
should(Ti.UI.Clipboard.hasData('text/plain')).be.false();
Ti.UI.Clipboard.text = 'hello there';
should(Ti.UI.Clipboard.hasData()).be.true();
should(Ti.UI.Clipboard.hasData('text')).be.true();
should(Ti.UI.Clipboard.hasData('text/plain')).be.true();
}, waitTime);
});

it('returns false for other mimeTypes', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasData()).be.false();
should(Ti.UI.Clipboard.hasData('color')).be.false();
should(Ti.UI.Clipboard.hasData('image')).be.false();
should(Ti.UI.Clipboard.hasData('url')).be.false();
Ti.UI.Clipboard.text = 'hello there';
should(Ti.UI.Clipboard.hasData()).be.true();
should(Ti.UI.Clipboard.hasData('text')).be.true();
should(Ti.UI.Clipboard.hasData('text/plain')).be.true();
should(Ti.UI.Clipboard.hasData('color')).be.false();
should(Ti.UI.Clipboard.hasData('image')).be.false();
should(Ti.UI.Clipboard.hasData('url')).be.false();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasData()).be.false();
should(Ti.UI.Clipboard.hasData('color')).be.false();
should(Ti.UI.Clipboard.hasData('image')).be.false();
should(Ti.UI.Clipboard.hasData('url')).be.false();
Ti.UI.Clipboard.text = 'hello there';
should(Ti.UI.Clipboard.hasData()).be.true();
should(Ti.UI.Clipboard.hasData('text')).be.true();
should(Ti.UI.Clipboard.hasData('text/plain')).be.true();
should(Ti.UI.Clipboard.hasData('color')).be.false();
should(Ti.UI.Clipboard.hasData('image')).be.false();
should(Ti.UI.Clipboard.hasData('url')).be.false();
}, waitTime);
});
});

Expand Down Expand Up @@ -292,24 +327,30 @@ describe('Titanium.UI.Clipboard', () => {
});

it('returns true after setText()', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.text = 'I set it!';
should(Ti.UI.Clipboard.hasText()).be.true();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.text = 'I set it!';
should(Ti.UI.Clipboard.hasText()).be.true();
}, waitTime);
});

it('returns true after setData(\'text\', value)', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.setData('text', 'I set it!');
should(Ti.UI.Clipboard.hasText()).be.true();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.setData('text', 'I set it!');
should(Ti.UI.Clipboard.hasText()).be.true();
}, waitTime);
});

it('returns true after setData(\'text/plain\', value)', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.setData('text/plain', 'I set it!');
should(Ti.UI.Clipboard.hasText()).be.true();
setTimeout(function () {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.setData('text/plain', 'I set it!');
should(Ti.UI.Clipboard.hasText()).be.true();
}, waitTime);
});

it.ios('returns true after setData(\'public.plain-text\', value)', () => {
Expand All @@ -321,9 +362,11 @@ describe('Titanium.UI.Clipboard', () => {

it('returns false after setData(\'color\', value)', () => {
Ti.UI.Clipboard.clearData(); // delete all data
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.setData('color', 'blue');
should(Ti.UI.Clipboard.hasText()).be.false();
setTimeout(function () {
should(Ti.UI.Clipboard.hasText()).be.false();
Ti.UI.Clipboard.setData('color', 'blue');
should(Ti.UI.Clipboard.hasText()).be.false();
}, waitTime);
});
});

Expand Down Expand Up @@ -445,11 +488,13 @@ describe('Titanium.UI.Clipboard', () => {

describe('examples', () => {
it('Copy Text to the Clipboard', () => {
Ti.UI.Clipboard.clearText();
should.not.exist(Ti.UI.Clipboard.getText());
Ti.UI.Clipboard.setText('hello');
should(Ti.UI.Clipboard.hasText()).be.true();
should(Ti.UI.Clipboard.text).eql('hello');
setTimeout(function () {
Ti.UI.Clipboard.clearText();
should.not.exist(Ti.UI.Clipboard.getText());
Ti.UI.Clipboard.setText('hello');
should(Ti.UI.Clipboard.hasText()).be.true();
should(Ti.UI.Clipboard.text).eql('hello');
}, waitTime);
});

it.ios('Use of named clipboard in iOS', () => {
Expand Down

0 comments on commit 6289860

Please sign in to comment.