11import { describe , it , expect , beforeEach , vi } from 'vitest' ;
2- import { LocalStorageTransport , BroadcastChannelTransport , TransportRacer } from '../../src/channel' ;
2+ import { LocalStorageTransport , BroadcastChannelTransport , TransportRacer , isMessageData } from '../../src/channel' ;
33import { MessageData } from '../../src/types' ;
44
55describe ( 'LocalStorageTransport' , ( ) => {
@@ -133,4 +133,59 @@ describe('TransportRacer', () => {
133133 it ( 'getTransportNamesでトランスポート名が取得できる' , ( ) => {
134134 expect ( racer . getTransportNames ( ) ) . toEqual ( [ 'localStorage' ] ) ;
135135 } ) ;
136+ } ) ;
137+
138+
139+
140+ describe ( "isMessageData" , ( ) => {
141+ it ( "正しいMessageData型のオブジェクトの場合はtrueを返す" , ( ) => {
142+ const obj = {
143+ type : "test" ,
144+ requestId : "req-1" ,
145+ tabId : "tab-1"
146+ } ;
147+ expect ( isMessageData ( obj ) ) . toBe ( true ) ;
148+ } ) ;
149+
150+ it ( "tabIdがnullでもtrueを返す" , ( ) => {
151+ const obj = {
152+ type : "test" ,
153+ requestId : "req-2" ,
154+ tabId : null
155+ } ;
156+ expect ( isMessageData ( obj ) ) . toBe ( true ) ;
157+ } ) ;
158+
159+ it ( "typeがstringでない場合はfalseを返す" , ( ) => {
160+ const obj = {
161+ type : 123 ,
162+ requestId : "req-3" ,
163+ tabId : "tab-3"
164+ } ;
165+ expect ( isMessageData ( obj ) ) . toBe ( false ) ;
166+ } ) ;
167+
168+ it ( "requestIdがstringでない場合はfalseを返す" , ( ) => {
169+ const obj = {
170+ type : "test" ,
171+ requestId : 456 ,
172+ tabId : "tab-4"
173+ } ;
174+ expect ( isMessageData ( obj ) ) . toBe ( false ) ;
175+ } ) ;
176+
177+ it ( "tabIdがstringでもnullでもない場合はfalseを返す" , ( ) => {
178+ const obj = {
179+ type : "test" ,
180+ requestId : "req-5" ,
181+ tabId : 789
182+ } ;
183+ expect ( isMessageData ( obj ) ) . toBe ( false ) ;
184+ } ) ;
185+
186+ it ( "オブジェクトでない値の場合はfalseを返す" , ( ) => {
187+ expect ( isMessageData ( null ) ) . toBe ( false ) ;
188+ expect ( isMessageData ( undefined ) ) . toBe ( false ) ;
189+ expect ( isMessageData ( "string" ) ) . toBe ( false ) ;
190+ } ) ;
136191} ) ;
0 commit comments