mirror of
				https://github.com/cse110-fa22-group29/cse110-fa22-group29.git
				synced 2025-10-30 19:46:49 +00:00 
			
		
		
		
	switch unit test framework to jest,
remove framework unittest, add helper module to create unit testing environment
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | **/.devcontainer/* | ||||||
|  | **/node_modules/* | ||||||
|  | **/package-lock.json | ||||||
							
								
								
									
										10
									
								
								testenv/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								testenv/package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | { | ||||||
|  |   "name": "testenv", | ||||||
|  |   "version": "1.0.0", | ||||||
|  |   "scripts": { | ||||||
|  |     "test": "jest" | ||||||
|  |   }, | ||||||
|  |   "dependencies": { | ||||||
|  |     "jest": "24" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										28
									
								
								testenv/testenv.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								testenv/testenv.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | module.exports = {environment}; | ||||||
|  |  | ||||||
|  | function environment () { | ||||||
|  | 	const localStorageMock = (function () { | ||||||
|  | 		let store = {}; | ||||||
|  | 		return { | ||||||
|  | 			getItem(key) { | ||||||
|  | 				return store[key]; | ||||||
|  | 			}, | ||||||
|  | 			setItem(key, value) { | ||||||
|  | 				store[key] = value; | ||||||
|  | 			}, | ||||||
|  | 			clear() { | ||||||
|  | 				store = {}; | ||||||
|  | 			}, | ||||||
|  | 			removeItem(key) { | ||||||
|  | 				delete store[key]; | ||||||
|  | 			}, | ||||||
|  | 			getAll() { | ||||||
|  | 				return store; | ||||||
|  | 			}, | ||||||
|  | 		}; | ||||||
|  | 	})(); | ||||||
|  |  | ||||||
|  | 	let window = {}; | ||||||
|  | 	Object.defineProperty(window, "localStorage", { value: localStorageMock }); | ||||||
|  | 	return window; | ||||||
|  | } | ||||||
							
								
								
									
										86
									
								
								testenv/testenv.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								testenv/testenv.test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | |||||||
|  | const {environment} = require("./testenv.js"); | ||||||
|  |  | ||||||
|  | function saveToLocal (k, v) { | ||||||
|  | 	window.localStorage.setItem(k, v); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function getFromLocal (k) { | ||||||
|  | 	return window.localStorage.getItem(k); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function removeFromLocal (k) { | ||||||
|  | 	window.localStorage.removeItem(k); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function clearLocal () { | ||||||
|  | 	window.localStorage.clear(); | ||||||
|  | }  | ||||||
|  |  | ||||||
|  | describe("test localStorage mock", () => { | ||||||
|  | 	test("test save and fetch", () => { | ||||||
|  | 		let window = environment(); | ||||||
|  | 		saveToLocal("testkey1", "testvalue1"); | ||||||
|  | 		saveToLocal("testkey2", "testvalue2"); | ||||||
|  | 		saveToLocal("testkey3", "testvalue3"); | ||||||
|  | 		saveToLocal("testkey4", "testvalue4"); | ||||||
|  |  | ||||||
|  | 		expect(getFromLocal("testkey1")).toBe("testvalue1"); | ||||||
|  | 		expect(getFromLocal("testkey2")).toBe("testvalue2"); | ||||||
|  | 		expect(getFromLocal("testkey3")).toBe("testvalue3"); | ||||||
|  | 		expect(getFromLocal("testkey4")).toBe("testvalue4"); | ||||||
|  |  | ||||||
|  | 		saveToLocal("testkey6", "testvalue5"); | ||||||
|  | 		expect(getFromLocal("testkey6")).toBe("testvalue5"); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	test("test delete and fetch", () => { | ||||||
|  | 		let window = environment(); | ||||||
|  | 		saveToLocal("testkey1", "testvalue1"); | ||||||
|  | 		saveToLocal("testkey2", "testvalue2"); | ||||||
|  | 		saveToLocal("testkey3", "testvalue3"); | ||||||
|  | 		saveToLocal("testkey4", "testvalue4"); | ||||||
|  |  | ||||||
|  | 		removeFromLocal("testkey3"); | ||||||
|  |  | ||||||
|  | 		expect(getFromLocal("testkey1")).toBe("testvalue1"); | ||||||
|  | 		expect(getFromLocal("testkey2")).toBe("testvalue2"); | ||||||
|  | 		expect(getFromLocal("testkey3")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey4")).toBe("testvalue4"); | ||||||
|  |  | ||||||
|  | 		removeFromLocal("testkey1"); | ||||||
|  |  | ||||||
|  | 		expect(getFromLocal("testkey1")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey2")).toBe("testvalue2"); | ||||||
|  | 		expect(getFromLocal("testkey3")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey4")).toBe("testvalue4"); | ||||||
|  |  | ||||||
|  | 		removeFromLocal("testkey4"); | ||||||
|  | 		 | ||||||
|  | 		expect(getFromLocal("testkey1")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey2")).toBe("testvalue2"); | ||||||
|  | 		expect(getFromLocal("testkey3")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey4")).toBe(null); | ||||||
|  |  | ||||||
|  | 		removeFromLocal("testkey2"); | ||||||
|  | 		 | ||||||
|  | 		expect(getFromLocal("testkey1")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey2")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey3")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey4")).toBe(null); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	test("test delete and fetch", () => { | ||||||
|  | 		let window = environment(); | ||||||
|  | 		saveToLocal("testkey1", "testvalue1"); | ||||||
|  | 		saveToLocal("testkey2", "testvalue2"); | ||||||
|  | 		saveToLocal("testkey3", "testvalue3"); | ||||||
|  | 		saveToLocal("testkey4", "testvalue4"); | ||||||
|  |  | ||||||
|  | 		clearLocal(); | ||||||
|  |  | ||||||
|  | 		expect(getFromLocal("testkey1")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey2")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey3")).toBe(null); | ||||||
|  | 		expect(getFromLocal("testkey4")).toBe(null); | ||||||
|  | 	}); | ||||||
|  | }); | ||||||
| @@ -1,59 +0,0 @@ | |||||||
| module.exports = {test, item, assert}; |  | ||||||
|  |  | ||||||
| var itemsFailed; |  | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * Calls multiple item functions. |  | ||||||
|  * |  | ||||||
|  * param 	name 		string 	name of the test |  | ||||||
|  * param 	items 		func	callable function that contains item calls |  | ||||||
|  *  |  | ||||||
|  * return				bool	whether the test passed or failed |  | ||||||
| */ |  | ||||||
| function test(name, items) { |  | ||||||
| 	console.log(name);     |  | ||||||
|     items(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * Contain multiple assertions to test specific behavior |  | ||||||
|  *  |  | ||||||
|  * param 	name		string 	name of the specific item |  | ||||||
|  * param	items		func	multple assertion calls |  | ||||||
|  *  |  | ||||||
|  * return 				bool	whether the item passed or failed |  | ||||||
| */ |  | ||||||
| function item(name, method) { |  | ||||||
| 	try{ |  | ||||||
| 		method(); |  | ||||||
| 		console.log('\t\x1b[32m%s\x1b[0m', '\u2714 ' + name); |  | ||||||
| 		itemsFailed += 0; |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
| 	catch (error) { |  | ||||||
| 		console.log('\t\x1b[31m%s\x1b[0m', '\u2718 ' + name); |  | ||||||
|         itemsFailed += 1; |  | ||||||
| 		return false; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * Given two inputs, comapres if they equivalent. |  | ||||||
|  * |  | ||||||
|  * param 	input		any		output of some function to be tested. |  | ||||||
|  * param	expected	any		expected output of the function |  | ||||||
|  *  |  | ||||||
|  * return				bool 	whether input = expected |  | ||||||
| */ |  | ||||||
| function assert(input, expected) { |  | ||||||
| 	let result; |  | ||||||
| 	if (typeof(input) === 'object') { |  | ||||||
| 		result = JSON.stringify(input) === JSON.stringify(expected); |  | ||||||
| 	} |  | ||||||
| 	else { |  | ||||||
| 		result = input === expected; |  | ||||||
| 	} |  | ||||||
| 	if(!result){ |  | ||||||
| 		throw new Error(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,110 +0,0 @@ | |||||||
| const unittest = require("./unittest.js"); |  | ||||||
|  |  | ||||||
| const localStorageMock = (function () { |  | ||||||
| 	let store = {}; |  | ||||||
| 	return { |  | ||||||
| 		getItem(key) { |  | ||||||
| 			return store[key]; |  | ||||||
| 		}, |  | ||||||
| 		setItem(key, value) { |  | ||||||
| 			store[key] = value; |  | ||||||
| 		}, |  | ||||||
| 		clear() { |  | ||||||
| 			store = {}; |  | ||||||
| 		}, |  | ||||||
| 		removeItem(key) { |  | ||||||
| 			delete store[key]; |  | ||||||
| 		}, |  | ||||||
| 		getAll() { |  | ||||||
| 			return store; |  | ||||||
| 		}, |  | ||||||
| 	}; |  | ||||||
| })(); |  | ||||||
| let window = {}; |  | ||||||
| Object.defineProperty(window, "localStorage", { value: localStorageMock }); |  | ||||||
|  |  | ||||||
| function assertion_test () { |  | ||||||
| 	try { unittest.assert(1, 1); } |  | ||||||
| 	catch (error) { console.log("Failed assert(1,1)") } |  | ||||||
|  |  | ||||||
| 	try { unittest.assert(65536, 65536); } |  | ||||||
| 	catch (error) { console.log("Failed assert(655366,65536)") } |  | ||||||
|  |  | ||||||
| 	try { unittest.assert(-50, 50); console.log("Failed assert(-50,50)") } |  | ||||||
| 	catch (error) {  } |  | ||||||
|  |  | ||||||
| 	try { unittest.assert(0, 1); console.log("Failed assert(0,1)") } |  | ||||||
| 	catch (error) {  } |  | ||||||
|  |  | ||||||
| 	try { unittest.assert(true, true); } |  | ||||||
| 	catch (error) { console.log("Failed assert(true,true)") } |  | ||||||
|  |  | ||||||
| 	try { unittest.assert(false, false); } |  | ||||||
| 	catch (error) { console.log("Failed assert(false,false)") } |  | ||||||
|  |  | ||||||
| 	try { unittest.assert(true, false); console.log("Failed assert(true,false)") } |  | ||||||
| 	catch (error) {  } |  | ||||||
|  |  | ||||||
| 	try { unittest.assert(false, true); console.log("Failed assert(false,true)") } |  | ||||||
| 	catch (error) {  } |  | ||||||
|  |  | ||||||
|     try { unittest.assert("Test", "Test"); } |  | ||||||
| 	catch (error) { console.log("Failed assert('Test','Test')") } |  | ||||||
|      |  | ||||||
|     try { unittest.assert("Test", "Yay"); console.log("Failed assert('Test','Yay')") } |  | ||||||
| 	catch (error) {  } |  | ||||||
|  |  | ||||||
|     try { unittest.assert({one: 1, two: 2}, {one: 1, two: 2}); } |  | ||||||
| 	catch (error) { console.log("Failed assert({one: 1, two: 2},{one: 1, two: 2})") } |  | ||||||
|  |  | ||||||
|     try { unittest.assert({one: 1, two: 2}, {two: 2, three: 3}); console.log("Failed assert({one: 1, two: 2}, {two: 2, three: 3})") } |  | ||||||
| 	catch (error) {  } |  | ||||||
| } |  | ||||||
| assertion_test(); |  | ||||||
|  |  | ||||||
| function item_test () { |  | ||||||
| 	unittest.item("passing item", () => { |  | ||||||
| 		unittest.assert(1, 1); |  | ||||||
| 	}); |  | ||||||
| 	unittest.item("failing item", () => { |  | ||||||
| 		unittest.assert(1, 2); |  | ||||||
| 	}); |  | ||||||
| } |  | ||||||
| item_test(); |  | ||||||
|  |  | ||||||
| function test_test () { |  | ||||||
|     unittest.test("example test", () => { |  | ||||||
| 		unittest.item("assert 1 = 1", () => { |  | ||||||
| 			unittest.assert(1, 1); |  | ||||||
| 		}); |  | ||||||
| 		unittest.item("assert 1 = 2", () => { |  | ||||||
| 			unittest.assert(1, 2); |  | ||||||
| 		}) |  | ||||||
| 	}); |  | ||||||
| } |  | ||||||
| test_test(); |  | ||||||
|  |  | ||||||
| function environment_test () { |  | ||||||
| 	function testfunc1 () { |  | ||||||
| 		window.localStorage.clear(); |  | ||||||
| 		window.localStorage.setItem("testkey", "testvalue"); |  | ||||||
| 		return window.localStorage.getItem("testkey"); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	function testfunc2 (){ |  | ||||||
| 		window.localStorage.removeItem("testkey"); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	unittest.test("test add item", () => { |  | ||||||
| 		unittest.item("testfunc1", () => { |  | ||||||
| 			unittest.assert(testfunc1(), "testvalue"); |  | ||||||
| 		}); |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	unittest.test("test delete item", () => { |  | ||||||
| 		unittest.item("testfunc2", () => { |  | ||||||
| 			unittest.assert(testfunc2(), undefined); |  | ||||||
| 		}); |  | ||||||
| 	}); |  | ||||||
| } |  | ||||||
| environment_test(); |  | ||||||
		Reference in New Issue
	
	Block a user