///
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)
});
});
});