@@ -4,9 +4,6 @@ import { currentAuthStatus, mockAuthStatus } from '../auth/authStatus'
44import { AUTH_STATUS_FIXTURE_AUTHED , type AuthenticatedAuthStatus } from '../auth/types'
55import { FeatureFlag , featureFlagProvider } from '../experimentation/FeatureFlagProvider'
66import { firstValueFrom } from '../misc/observable'
7- import { DOTCOM_URL } from '../sourcegraph-api/environments'
8- import * as userProductSubscriptionModule from '../sourcegraph-api/userProductSubscription'
9- import type { UserProductSubscription } from '../sourcegraph-api/userProductSubscription'
107import { CHAT_INPUT_TOKEN_BUDGET , CHAT_OUTPUT_TOKEN_BUDGET } from '../token/constants'
118import { FIXTURE_MODELS } from './fixtures'
129import type { Model } from './model'
@@ -31,22 +28,6 @@ describe('modelsService', () => {
3128 return modelsService
3229 }
3330
34- const freeUserAuthStatus : AuthenticatedAuthStatus = {
35- ...AUTH_STATUS_FIXTURE_AUTHED ,
36- endpoint : DOTCOM_URL . toString ( ) ,
37- authenticated : true ,
38- }
39- const freeUserSub : UserProductSubscription = {
40- userCanUpgrade : true ,
41- }
42-
43- const codyProAuthStatus : AuthenticatedAuthStatus = {
44- ...freeUserAuthStatus ,
45- }
46- const codyProSub : UserProductSubscription = {
47- userCanUpgrade : false ,
48- }
49-
5031 const enterpriseAuthStatus : AuthenticatedAuthStatus = {
5132 ...AUTH_STATUS_FIXTURE_AUTHED ,
5233 endpoint : 'https://sourcegraph.example.com' ,
@@ -173,10 +154,7 @@ describe('modelsService', () => {
173154
174155 let modelsService : ModelsService
175156 beforeEach ( ( ) => {
176- mockAuthStatus ( codyProAuthStatus )
177- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
178- Observable . of ( codyProSub )
179- )
157+ mockAuthStatus ( enterpriseAuthStatus )
180158 modelsService = modelsServiceWithModels ( [
181159 model1chat ,
182160 model2chat ,
@@ -247,78 +225,29 @@ describe('modelsService', () => {
247225 usage : [ ModelUsage . Chat ] ,
248226 tags : [ ModelTag . Enterprise ] ,
249227 } )
250- const proModel = createModel ( {
251- id : 'pro-model' ,
252- usage : [ ModelUsage . Chat ] ,
253- tags : [ ModelTag . Pro ] ,
254- } )
255- const freeModel = createModel ( {
256- id : 'free-model' ,
257- usage : [ ModelUsage . Chat ] ,
258- // We don't include ModelTag.Free here to test that it's not required.
259- tags : [ ] ,
260- } )
261228
262229 beforeEach ( ( ) => {
263230 vi . spyOn ( modelsService , 'modelsChanges' , 'get' ) . mockReturnValue (
264231 Observable . of ( {
265232 ...EMPTY_MODELS_DATA ,
266- primaryModels : [ enterpriseModel , proModel , freeModel ] ,
233+ primaryModels : [ enterpriseModel ] ,
267234 } )
268235 )
269236 } )
270237
271238 it ( 'returns false for unknown model' , async ( ) => {
272- mockAuthStatus ( codyProAuthStatus )
273- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
274- Observable . of ( codyProSub )
275- )
239+ mockAuthStatus ( enterpriseAuthStatus )
276240 expect ( await firstValueFrom ( modelsService . isModelAvailable ( 'unknown-model' ) ) ) . toBe ( false )
277241 } )
278242
279243 it ( 'allows enterprise user to use any model' , async ( ) => {
280244 mockAuthStatus ( enterpriseAuthStatus )
281- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
282- Observable . of ( null )
283- )
284245 expect ( await firstValueFrom ( modelsService . isModelAvailable ( enterpriseModel ) ) ) . toBe ( true )
285- expect ( await firstValueFrom ( modelsService . isModelAvailable ( proModel ) ) ) . toBe ( true )
286- expect ( await firstValueFrom ( modelsService . isModelAvailable ( freeModel ) ) ) . toBe ( true )
287- } )
288-
289- it ( 'allows Cody Pro user to use Pro and Free models' , async ( ) => {
290- mockAuthStatus ( codyProAuthStatus )
291- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
292- Observable . of ( codyProSub )
293- )
294- expect ( await firstValueFrom ( modelsService . isModelAvailable ( enterpriseModel ) ) ) . toBe ( false )
295- expect ( await firstValueFrom ( modelsService . isModelAvailable ( proModel ) ) ) . toBe ( true )
296- expect ( await firstValueFrom ( modelsService . isModelAvailable ( freeModel ) ) ) . toBe ( true )
297- } )
298-
299- it ( 'allows free user to use only Free models' , async ( ) => {
300- mockAuthStatus ( freeUserAuthStatus )
301- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
302- Observable . of ( freeUserSub )
303- )
304- expect ( await firstValueFrom ( modelsService . isModelAvailable ( enterpriseModel ) ) ) . toBe ( false )
305- expect ( await firstValueFrom ( modelsService . isModelAvailable ( proModel ) ) ) . toBe ( false )
306- expect ( await firstValueFrom ( modelsService . isModelAvailable ( freeModel ) ) ) . toBe ( true )
307246 } )
308247
309248 it ( 'handles model passed as string' , async ( ) => {
310- mockAuthStatus ( freeUserAuthStatus )
311- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
312- Observable . of ( freeUserSub )
313- )
314- expect ( await firstValueFrom ( modelsService . isModelAvailable ( freeModel . id ) ) ) . toBe ( true )
315- expect ( await firstValueFrom ( modelsService . isModelAvailable ( proModel . id ) ) ) . toBe ( false )
316-
317- mockAuthStatus ( codyProAuthStatus )
318- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
319- Observable . of ( codyProSub )
320- )
321- expect ( await firstValueFrom ( modelsService . isModelAvailable ( proModel . id ) ) ) . toBe ( true )
249+ mockAuthStatus ( enterpriseAuthStatus )
250+ expect ( await firstValueFrom ( modelsService . isModelAvailable ( enterpriseModel . id ) ) ) . toBe ( true )
322251 } )
323252 } )
324253
@@ -475,10 +404,7 @@ describe('modelsService', () => {
475404 } )
476405
477406 beforeEach ( ( ) => {
478- mockAuthStatus ( codyProAuthStatus )
479- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
480- Observable . of ( codyProSub )
481- )
407+ mockAuthStatus ( enterpriseAuthStatus )
482408
483409 modelsService = new ModelsService ( )
484410 storage = new TestLocalStorageForModelPreferences ( )
@@ -674,12 +600,8 @@ describe('modelsService', () => {
674600 } )
675601
676602 beforeEach ( ( ) => {
677- mockAuthStatus ( freeUserAuthStatus )
603+ mockAuthStatus ( enterpriseAuthStatus )
678604 vi . spyOn ( featureFlagProvider , 'evaluatedFeatureFlag' ) . mockReturnValue ( Observable . of ( true ) )
679- vi . spyOn ( userProductSubscriptionModule , 'userProductSubscription' , 'get' ) . mockReturnValue (
680- Observable . of ( codyProSub )
681- )
682-
683605 storage = new TestLocalStorageForModelPreferences ( )
684606 } )
685607
@@ -704,7 +626,7 @@ describe('modelsService', () => {
704626 expect ( defaultEditModelId ) . toBe ( 'gpt-4o-mini' )
705627
706628 const prefsAfter = storage . getModelPreferences ( )
707- const selectedEditModel = prefsAfter [ freeUserAuthStatus . endpoint ] ?. selected ?. edit
629+ const selectedEditModel = prefsAfter [ enterpriseAuthStatus . endpoint ] ?. selected ?. edit
708630 expect ( selectedEditModel ) . toBe ( 'gpt-4o-mini' )
709631 } )
710632
@@ -733,7 +655,7 @@ describe('modelsService', () => {
733655 expect ( defaultEditModelId ) . toBe ( 'other-edit-model' )
734656
735657 const prefsAfter = storage . getModelPreferences ( )
736- const selectedEditModel = prefsAfter [ freeUserAuthStatus . endpoint ] ?. selected ?. edit
658+ const selectedEditModel = prefsAfter [ enterpriseAuthStatus . endpoint ] ?. selected ?. edit
737659 expect ( selectedEditModel ) . toBe ( 'other-edit-model' )
738660 } )
739661 } )
0 commit comments