fix: Downloads for iOS (#1869)
- Closes #1863 --------- Co-authored-by: Ilya Rakhlin <i.rakhlin@gmail.com>
This commit is contained in:
co-authored by
Ilya Rakhlin
parent
a6ecb76efe
commit
43947b49dc
@@ -1,5 +1,9 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { isCompanionApp } from '../../src/utils/companion';
|
||||
import {
|
||||
isCompanionApp,
|
||||
isAndroidCompanionApp,
|
||||
isIOSCompanionApp,
|
||||
} from '../../src/utils/companion';
|
||||
|
||||
describe('isCompanionApp', () => {
|
||||
it('should return true for userAgent starting with "Home Assistant/"', () => {
|
||||
@@ -18,3 +22,47 @@ describe('isCompanionApp', () => {
|
||||
expect(isCompanionApp('')).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isAndroidCompanionApp', () => {
|
||||
it('should return true for userAgent containing "Home Assistant" and "Android"', () => {
|
||||
expect(isAndroidCompanionApp('Home Assistant/1.0 (Android 1.0; 1.0)')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return true for userAgent containing "HomeAssistant" and "Android"', () => {
|
||||
expect(isAndroidCompanionApp('HomeAssistant/2.0 (Android 2.0; 2.0)')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for userAgent not starting with "Home Assistant/" or "HomeAssistant/"', () => {
|
||||
expect(isAndroidCompanionApp('Mozilla/5.0')).toBe(false);
|
||||
});
|
||||
|
||||
it('should return false for userAgent containing "Home Assistant/" or "HomeAssistant/" and iOS', () => {
|
||||
expect(
|
||||
isAndroidCompanionApp(
|
||||
'Home Assistant/2025.1.1 (io.robbie.HomeAssistant; build:2025.1077; iOS 18.3.0',
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isIOSCompanionApp', () => {
|
||||
it('should return true for userAgent containing "Home Assistant" and "iOS"', () => {
|
||||
expect(isIOSCompanionApp('Home Assistant/1.0 (iOS 1.0; 1.0)')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return true for userAgent containing "HomeAssistant" and "iOS"', () => {
|
||||
expect(isIOSCompanionApp('HomeAssistant/2.0 (iOS 2.0; 2.0)')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for userAgent not starting with "Home Assistant/" or "HomeAssistant/"', () => {
|
||||
expect(isIOSCompanionApp('Mozilla/5.0')).toBe(false);
|
||||
});
|
||||
|
||||
it('should return false for userAgent containing "Home Assistant/" or "HomeAssistant/" and Android', () => {
|
||||
expect(
|
||||
isIOSCompanionApp(
|
||||
'Home Assistant/2025.1.1 (io.robbie.HomeAssistant; build:2025.1077; Android 18.3.0',
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -46,20 +46,16 @@ describe('downloadURL', () => {
|
||||
expect(link.click).toBeCalled();
|
||||
});
|
||||
|
||||
it('should download in apps via window.open', () => {
|
||||
it('should download different origin via window.open', () => {
|
||||
// Set the origin to the same.
|
||||
const location: Location & { origin: string } = mock<Location>();
|
||||
location.origin = 'http://foo';
|
||||
global.window.location = location;
|
||||
|
||||
vi.stubGlobal('navigator', {
|
||||
userAgent: 'Home Assistant/2023.3.0-3260 (Android 13; Pixel 7 Pro)',
|
||||
});
|
||||
|
||||
const windowSpy = vi.spyOn(window, 'open').mockReturnValue(null);
|
||||
|
||||
downloadURL('http://foo/url.mp4');
|
||||
expect(windowSpy).toBeCalledWith('http://foo/url.mp4', '_blank');
|
||||
downloadURL('http://bar/url.mp4');
|
||||
expect(windowSpy).toBeCalledWith('http://bar/url.mp4', '_blank');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user