add minimal working example
This commit is contained in:
		
							parent
							
								
									900b011ed7
								
							
						
					
					
						commit
						52cd87650d
					
				
					 8 changed files with 2961 additions and 1 deletions
				
			
		
							
								
								
									
										13
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
										
									
									
									
								
							|  | @ -1,2 +1,13 @@ | |||
| # hedgedoc-migrator | ||||
| # Hedgedoc Migrator | ||||
| 
 | ||||
| Simple script to migrate content from one Hedgedoc instance to another. | ||||
| 
 | ||||
| ## Setup | ||||
| 
 | ||||
| Follow the guide over [here](https://docs.cypress.io/guides/getting-started/installing-cypress#Linux-Prerequisites). | ||||
| 
 | ||||
| You also require NodeJS. Run `npm ci` to install the required packages. | ||||
| 
 | ||||
| ## Execution | ||||
| 
 | ||||
| To start cypress, simply execute `npx cypress open`. Then click `E2E Testing` and run using electron. This step could be automated using the `cypress` [API](https://docs.cypress.io/guides/guides/module-api). | ||||
|  |  | |||
							
								
								
									
										9
									
								
								cypress.config.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								cypress.config.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| const { defineConfig } = require("cypress"); | ||||
| 
 | ||||
| module.exports = defineConfig({ | ||||
|   e2e: { | ||||
|     setupNodeEvents(on, config) { | ||||
|       // implement node event listeners here
 | ||||
|     }, | ||||
|   }, | ||||
| }); | ||||
							
								
								
									
										31
									
								
								cypress/e2e/hedgedoc-migrator.cy.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								cypress/e2e/hedgedoc-migrator.cy.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| async function getContent(url) { | ||||
|   const res = await fetch(url.concat('/download')); | ||||
|   return res.text(); | ||||
| } | ||||
| 
 | ||||
| async function migrateDocument(url, baseUrl) { | ||||
|   const content = await getContent(url); | ||||
|   cy.request({ | ||||
|     url: baseUrl.concat('/new'), | ||||
|     method: 'POST', | ||||
|     headers: { | ||||
|       'Content-Type': 'text/markdown', | ||||
|       'Access-Control-Allow-Origin': new URL(baseUrl).hostname, | ||||
|     }, | ||||
|     body: content, | ||||
|   }).then((res) => { | ||||
|     const redirect = res.redirects[0].split(' ')[1]; | ||||
|     cy.visit(url); | ||||
|     cy.get('#view-mode-toggle-edit').click({force: true}); | ||||
|     cy.get('.CodeMirror-scroll').type('{ctrl}a{backspace}'); | ||||
|     cy.get('.CodeMirror-scroll').type(`Moved to [${redirect}](${redirect})`); | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| describe('Migrate document', () => { | ||||
|   it('passes', async () => { | ||||
|     const baseUrl = 'https://md.margau.net'; | ||||
|     const url = 'https://md.margau.net/H0JO3L5DS-6Yhv4RrdS-tw'; | ||||
|     migrateDocument(url, baseUrl); | ||||
|   }); | ||||
| }); | ||||
							
								
								
									
										5
									
								
								cypress/fixtures/example.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								cypress/fixtures/example.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| { | ||||
|   "name": "Using fixtures to represent data", | ||||
|   "email": "hello@cypress.io", | ||||
|   "body": "Fixtures are a great way to mock data for responses to routes" | ||||
| } | ||||
							
								
								
									
										25
									
								
								cypress/support/commands.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								cypress/support/commands.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| // ***********************************************
 | ||||
| // This example commands.js shows you how to
 | ||||
| // create various custom commands and overwrite
 | ||||
| // existing commands.
 | ||||
| //
 | ||||
| // For more comprehensive examples of custom
 | ||||
| // commands please read more here:
 | ||||
| // https://on.cypress.io/custom-commands
 | ||||
| // ***********************************************
 | ||||
| //
 | ||||
| //
 | ||||
| // -- This is a parent command --
 | ||||
| // Cypress.Commands.add('login', (email, password) => { ... })
 | ||||
| //
 | ||||
| //
 | ||||
| // -- This is a child command --
 | ||||
| // Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
 | ||||
| //
 | ||||
| //
 | ||||
| // -- This is a dual command --
 | ||||
| // Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
 | ||||
| //
 | ||||
| //
 | ||||
| // -- This will overwrite an existing command --
 | ||||
| // Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
 | ||||
							
								
								
									
										20
									
								
								cypress/support/e2e.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								cypress/support/e2e.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| // ***********************************************************
 | ||||
| // This example support/e2e.js is processed and
 | ||||
| // loaded automatically before your test files.
 | ||||
| //
 | ||||
| // This is a great place to put global configuration and
 | ||||
| // behavior that modifies Cypress.
 | ||||
| //
 | ||||
| // You can change the location of this file or turn off
 | ||||
| // automatically serving support files with the
 | ||||
| // 'supportFile' configuration option.
 | ||||
| //
 | ||||
| // You can read more here:
 | ||||
| // https://on.cypress.io/configuration
 | ||||
| // ***********************************************************
 | ||||
| 
 | ||||
| // Import commands.js using ES2015 syntax:
 | ||||
| import './commands' | ||||
| 
 | ||||
| // Alternatively you can use CommonJS syntax:
 | ||||
| // require('./commands')
 | ||||
							
								
								
									
										2844
									
								
								package-lock.json
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										2844
									
								
								package-lock.json
									
										
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										15
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| { | ||||
|   "name": "cypress", | ||||
|   "version": "1.0.0", | ||||
|   "description": "", | ||||
|   "main": "index.js", | ||||
|   "scripts": { | ||||
|     "test": "echo \"Error: no test specified\" && exit 1" | ||||
|   }, | ||||
|   "keywords": [], | ||||
|   "author": "", | ||||
|   "license": "ISC", | ||||
|   "dependencies": { | ||||
|     "cypress": "^10.7.0" | ||||
|   } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 philipp
						philipp