/// import {useWebApiKey,useEnvironment,Environment,Judge,sharedContext,config,JudgeSession,PaginatedListResponse, Order} from '../lib/core-sdk' import {TestApiClient} from './support/test-api/test-api-client' import {CreateUserRequest,UpdateUserRequest,User, UsersSortableFields} from './support/test-api/users' import {Post} from './support/test-api/posts' describe('WebApi framework',function(){ var client : TestApiClient var judge : Judge var judgeSession : JudgeSession var originalTimeoutInterval = null; beforeAll(function(){ //Because Judge starts slowly on the first request originalTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000; }); afterAll(function(){ jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeoutInterval; }); beforeEach(function(){ useWebApiKey("TEST_API_KEY").useEnvironment(new Environment("http://csas-judge.herokuapp.com",null)) judge = new Judge(); judgeSession = judge.startNewSession(); client = new TestApiClient(config); }) it('Test create',function(done){ judgeSession.setNextCase("webapi.users.create").then(() => { var request : CreateUserRequest = { name : "Iron Man", position : "Rich Scientist", fullProfileUrl : "https://en.wikipedia.org/wiki/Iron_Man" } return client.users.create(request) }).then((data) => { expect(data.id).toBe(5) expect(data.userId).toBe(5) expect(data.name).toBe("Iron Man") expect(data.position).toBe("Rich Scientist") expect(data.fullProfileUrl).toBe("https://en.wikipedia.org/wiki/Iron_Man") done(); }).catch((err) => { console.error(err.response.data.errors) }) }); it('Test update',function(done){ judgeSession.setNextCase("webapi.users.update").then(()=> { var request : UpdateUserRequest = { name : "Iron Man", position : "Poor Scientist", fullProfileUrl : "https://en.wikipedia.org/wiki/Iron_Man" } return client.users.withId(5).update(request) }).then((data) => { expect(data.id).toBe(5) expect(data.userId).toBe(5) expect(data.name).toBe("Iron Man") expect(data.position).toBe("Poor Scientist") expect(data.fullProfileUrl).toBe("https://en.wikipedia.org/wiki/Iron_Man") done(); }).catch((err) => { console.error(err.response.data.errors) }); }); it('Test paginated list',function(done){ var list : PaginatedListResponse judgeSession.setNextCase("webapi.users.list.paginated.1").then(()=> { return client.users.list({ pageNumber: 1, pageSize: 2, sort: [ UsersSortableFields.NAME, UsersSortableFields.USER_ID ], order: [ Order.ASCENDING, Order.DESCENDING, ] }); }).then((data) => { expect(data.items[0].name).toBe("Gordon Freeman"); expect(data.items[0].id).toBe(1) list = data; }).then(() => { return judgeSession.setNextCase("webapi.users.list.paginated.2") }).then(()=>{ return list.nextPage(); }).then((data) => { expect(data.items[0].name).toBe("Luke Skywalker"); expect(data.items[0].userId).toBe(3) done(); }).catch((err) => { console.error(err.response.data.errors) }); }); it('Test delete',function(done){ judgeSession.setNextCase("webapi.posts.delete").then(()=> { return client.posts.withId(1).delete(); }).then(()=>{ done(); }); }); it('Test list',function(done){ judgeSession.setNextCase("webapi.posts.list").then(()=> { return client.posts.list(); }).then((data) => { expect(data.items[0].id).toBe(1) expect(data.items[0].userId).toBe(1) expect(data.items[0].title).toBe("sunt aut facere repellat provident occaecati excepturi optio reprehenderit") done(); }).catch(err => { console.log(err) }); }); });