1
0
mirror of https://github.com/sasjs/adapter.git synced 2025-12-24 06:21:20 +00:00

Compare commits

...

9 Commits

Author SHA1 Message Date
Krishna Acondy
2c9cce8bf8 Merge pull request #71 from sasjs/issue70
fix: executeJobViaWeb retry requests missing params
2020-09-08 18:47:16 +01:00
Mihajlo Medjedovic
d5791a75cd fix: executeJobViaWeb retry requests missing params 2020-09-08 15:48:08 +02:00
Krishna Acondy
1f970e1102 Merge pull request #61 from sasjs/allanbowe-patch-1
chore: Update README.md
2020-09-04 12:47:14 +01:00
Krishna Acondy
1552762d28 Merge branch 'master' into allanbowe-patch-1 2020-09-04 12:45:55 +01:00
Krishna Acondy
ef39252b0b chore(doc): fix broken link 2020-09-04 12:43:57 +01:00
Allan Bowe
3f3f8f4531 Update README.md 2020-09-02 20:56:03 +02:00
Allan Bowe
33879ee998 Merge pull request #60 from sasjs/update-documentation
chore(*): update documentation, bump adapter version
2020-09-02 12:47:12 +02:00
Krishna Acondy
cc8271438b chore(doc): add documentation on creating tests 2020-09-02 11:36:15 +01:00
Krishna Acondy
a064bc086d chore(*): update documentation, bump adapter version 2020-09-02 11:29:39 +01:00
6 changed files with 125 additions and 121 deletions

View File

@@ -1,83 +1,14 @@
# Contributing
Contributions to SASjs are very welcome! When making a PR, test cases should be included. To help in unit testing, be sure to run the following when making changes:
Contributions to SASjs are very welcome! When making a PR, test cases should be included.
```
# the following creates a tarball in the build folder of SASjs
npm run-script package:lib
This repository contains a suite of tests built using [@sasjs/test-framework](https://github.com/sasjs/test-framework).
# now go to your app and run:
npm install ../sasjs/build/<tarball filename>
```
Detailed instructions for creating and running the tests can be found [here](https://github.com/sasjs/adapter/blob/master/sasjs-tests/README.md).
Tests are run using cypress. Before running tests, you need to define the following backend services:
If you'd like to test your changes in an app that uses the adapter, you can do so as follows:
# SAS 9
```
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;
filename ft15f001 temp;
parmcards4;
%webout(OPEN)
%macro x();
%do i=1 %to &_webin_file_count; %webout(OBJ,&&_webin_name&i) %end;
%mend; %x()
%webout(CLOSE)
;;;;
%mm_createwebservice(path=/Public/app/common,name=sendObj)
parmcards4;
%webout(OPEN)
%macro x();
%do i=1 %to &_webin_file_count; %webout(ARR,&&_webin_name&i) %end;
%mend; %x()
%webout(CLOSE)
;;;;
%mm_createwebservice(path=/Public/app/common,name=sendArr)
```
# Viya
```
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;
filename ft15f001 temp;
parmcards4;
%webout(FETCH)
%webout(OPEN)
%macro x();
%do i=1 %to %sysfunc(countw(&sasjs_tables));
%let table=%scan(&sasjs_tables,&i);
%webout(OBJ,&table)
%end;
%mend;
%x()
%webout(CLOSE)
;;;;
%mp_createwebservice(path=/Public/app/common,name=sendObj)
filename ft15f001 temp;
parmcards4;
%webout(FETCH)
%webout(OPEN)
%macro x();
%do i=1 %to %sysfunc(countw(&sasjs_tables));
%let table=%scan(&sasjs_tables,&i);
%webout(ARR,&table)
%end;
%mend;
%x()
%webout(CLOSE)
;;;;
%mp_createwebservice(path=/Public/app/common,name=sendArr)
filename ft15f001 temp;
parmcards4;
If you can keep your head when all about you
Are losing theirs and blaming it on you,
If you can trust yourself when all men doubt you,
But make allowance for their doubting too;
;;;;
%mp_createwebservice(path=/Public/app/common,name=makeErr)
```
The above services will return anything you send. To run the tests simply launch `npm run cypress`.
1. Run `npm run package:lib` from the root folder in this repository.
This creates a tarball in the `/build` folder.
2. In your app's root folder, run `npm install <path/to/tarball>`.
This will install the changed version of the adapter in your app.

View File

@@ -43,6 +43,6 @@ You now have a simple web app with a backend service!
# More resources
For more information specific to this adapter you can check out this [user guide](https://sasjs.io/sasjs-adapter/) or the [technical](http://adapter.sasjs.io/) documentation.
For more information and examples specific to this adapter you can check out the [user guide](https://sasjs.io/sasjs-adapter/) or the [technical](http://adapter.sasjs.io/) documentation.
For more information on building web apps in general, check out these [resources](https://sasjs.io/training/resources/) or contact the [author](https://www.linkedin.com/in/allanbowe/) directly.

View File

@@ -1,68 +1,139 @@
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
`sasjs-tests` is a test suite for the SASjs adapter.
## Available Scripts
It is a React app bootstrapped using [Create React App](https://github.com/facebook/create-react-app) and [@sasjs/test-framework](https://github.com/sasjs/test-framework).
In the project directory, you can run:
When developing on `@sasjs/adapter`, it's good practice to run the test suite against your changed version of the adapter to ensure that existing functionality has not been impacted.
### `npm start`
You can use the provided `update:adapter` NPM script for this.
Runs the app in the development mode.<br />
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
```
npm run update:adapter
```
The page will reload if you make edits.<br />
You will also see any lint errors in the console.
This scripts builds a new version of the adapter and installs it in the `sasjs-tests` project.
### `npm test`
## Running tests
Launches the test runner in the interactive watch mode.<br />
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
There are three prerequisites to be able to run the tests:
### `npm run build`
1. Correct server configuration for the SASjs adapter.
2. `sasjs-tests` deployed to your SAS server.
3. The required SAS services created on the same server.
Builds the app for production to the `build` folder.<br />
It correctly bundles React in production mode and optimizes the build for the best performance.
### 1. Configuring the SASjs adapter
The build is minified and the filenames include the hashes.<br />
Your app is ready to be deployed!
There is a `config.json` file in the `/public` folder which specifies the configuration for the SASjs adapter. You can set the values within the `sasjsConfig` property in this file to match your SAS server configuration.
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### 2. Deploying to your SAS server
### `npm run eject`
There is a `deploy` NPM script provided in the `sasjs-tests` project's `package.json`.
**Note: this is a one-way operation. Once you `eject`, you cant go back!**
It updates `sasjs-tests` to use the latest version of the adapter, and deploys to a specified server via SSH using the `rsync` command.
If you arent satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
To be able to run the `deploy` script, two environment variables need to be set:
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point youre on your own.
- `SSH_ACCOUNT` - your SSH account, this is of the form username@domain.com
- `DEPLOY_PATH` - the path on the server where `sasjs-tests` will be deployed to, typically `/var/www/html/<some-subfolder>`.
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
So you can run the script like so:
## Learn More
```
SSH_ACCOUNT=me@my-sas-server.com DEPLOY_PATH=/var/www/html/my-folder/sasjs-tests npm run deploy
```
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
If you'd like to deploy just `sasjs-tests` without changing the adapter version, you can use the `deploy:tests` script, while also setting the same environment variables as above.
To learn React, check out the [React documentation](https://reactjs.org/).
## 3. Creating the required SAS services
### Code Splitting
The below services need to be created on your SAS server, at the location specified as the `appLoc` in the SASjs configuration.
This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting
### SAS 9
### Analyzing the Bundle Size
```
This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;
filename ft15f001 temp;
parmcards4;
%webout(OPEN)
%macro x();
%do i=1 %to &_webin_file_count; %webout(OBJ,&&_webin_name&i) %end;
%mend; %x()
%webout(CLOSE)
;;;;
%mm_createwebservice(path=/Public/app/common,name=sendObj)
parmcards4;
%webout(OPEN)
%macro x();
%do i=1 %to &_webin_file_count; %webout(ARR,&&_webin_name&i) %end;
%mend; %x()
%webout(CLOSE)
;;;;
%mm_createwebservice(path=/Public/app/common,name=sendArr)
```
### Making a Progressive Web App
### SAS Viya
This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app
```
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;
filename ft15f001 temp;
parmcards4;
%webout(FETCH)
%webout(OPEN)
%macro x();
%do i=1 %to %sysfunc(countw(&sasjs_tables));
%let table=%scan(&sasjs_tables,&i);
%webout(OBJ,&table)
%end;
%mend;
%x()
%webout(CLOSE)
;;;;
%mp_createwebservice(path=/Public/app/common,name=sendObj)
filename ft15f001 temp;
parmcards4;
%webout(FETCH)
%webout(OPEN)
%macro x();
%do i=1 %to %sysfunc(countw(&sasjs_tables));
%let table=%scan(&sasjs_tables,&i);
%webout(ARR,&table)
%end;
%mend;
%x()
%webout(CLOSE)
;;;;
%mp_createwebservice(path=/Public/app/common,name=sendArr)
filename ft15f001 temp;
parmcards4;
If you can keep your head when all about you
Are losing theirs and blaming it on you,
If you can trust yourself when all men doubt you,
But make allowance for their doubting too;
;;;;
%mp_createwebservice(path=/Public/app/common,name=makeErr)
```
### Advanced Configuration
You should now be able to access the tests in your browser at the deployed path on your server.
This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration
## Creating new tests
### Deployment
The `src/testSuites` folder contains all the test suites currently available.
Each suite contains a set of specs, each of which looks like this:
This section has moved here: https://facebook.github.io/create-react-app/docs/deployment
```javascript
{
title: "Your test title",
description: "A slightly more detailed description",
test: async () => {
// typically makes a request using the adapter and returns a promise
},
assertion: (response: any) =>
// receives the response when the test promise resolves, runs an assertion and returns a boolean
}
```
### `npm run build` fails to minify
A test suite is an array of such objects, along with a `name` property.
This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
You can add your test to one of the existing suites if suitable, or create a new file that specifies a new test suite.

View File

@@ -1357,9 +1357,9 @@
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
},
"@sasjs/adapter": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-1.3.6.tgz",
"integrity": "sha512-d2B+cTII+vabKCU8mJy90mEz3tCWw2pEp4qIBGsDamJiTS0Rx69dgXGHuRUm8KtjLDHHrzwXATsqviU3dnU0QQ==",
"version": "1.3.13",
"resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-1.3.13.tgz",
"integrity": "sha512-dWcDxgY3FB7Yx1I5dPpeQeyJDu4lezhIFrjn6lbdwRhV15aqOt4l9o9qZP+VbgOXqyi9gN0Y+p+vs2chBDFQqg==",
"requires": {
"es6-promise": "^4.2.8",
"form-data": "^3.0.0",

View File

@@ -4,7 +4,7 @@
"homepage": ".",
"private": true,
"dependencies": {
"@sasjs/adapter": "^1.3.6",
"@sasjs/adapter": "^1.3.13",
"@sasjs/test-framework": "^1.4.0",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
@@ -25,7 +25,9 @@
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"deploy": "cd .. && npm run package:lib && cd sasjs-tests && npm i ../build/sasjs-adapter-5.0.0.tgz && npm run build && rsync -avhe ssh ./build/* --delete kriaco@sas.analytium.co.uk:/var/www/html/kriaco/sasjs-tests"
"update:adapter": "cd .. && npm run package:lib && cd sasjs-tests && npm i ../build/sasjs-adapter-5.0.0.tgz",
"deploy:tests": "npm run build && rsync -avhe ssh ./build/* --delete $SSH_ACCOUNT:$DEPLOY_PATH",
"deploy": "npm run update:adapter && npm run deploy:tests"
},
"eslintConfig": {
"extends": "react-app"

View File

@@ -855,7 +855,7 @@ export default class SASjs {
) {
if (this.retryCountWeb < requestRetryLimit) {
this.retryCountWeb++
this.request(sasJob, data).then(
this.request(sasJob, data, config, loginRequiredCallback).then(
(res: any) => resolve(res),
(err: any) => reject(err)
)