{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/old/03-assignments/02-assignment_2/test_specification",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV607"}},"mdx":{"fields":{"id":"21f0aa14-62c0-5138-9915-98e304cfeff3","title":"Test Specification","slug":"/old/03-assignments/02-assignment_2/test_specification"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Test Specification\",\n  \"metaTitle\": \"Assignment 2 Test Cases\",\n  \"metaDescription\": \"Testspecificaiton for the stuff lending system\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", null, \"Test Specification: Stuff Lending System\"), mdx(\"p\", null, \"This is an informal specification of tests to perform when you are done with the assignment design and implementation. It is adviced to perform \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"all\"), \" tests before the final release. If you find problems you fixt them and again perform \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"all\"), \" tests.  \"), mdx(\"p\", null, \"The test cases are written in a general form and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"you may need to adapt them to your specific implementation\"), \" and the decisions you have made during the implementation. In that case submit a refined test spec as a project deliverable.\"), mdx(\"h2\", null, \"General\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Clone the application from gitlab into a new directory. Avoid running the application in the development environment.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"run the application with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"./gradlew run -q --console=plain\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"If you cannot perform one of the steps in the application e.g. it crashes or does not behave as stated you have found a bug. Document it and run the rest of the test cases.\")), mdx(\"h2\", null, \"Test Report\"), mdx(\"p\", null, \"The test repors is a simple list of test cases performed and the result, i.e. working or not working. If it is not working note what step and what the result was.  \"), mdx(\"p\", null, \"You should have a final test report in your repository when handing in the assignment.\"), mdx(\"h3\", null, \"Example Test Report\"), mdx(\"p\", null, \"Version #234234 (git commit hash/link)\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Date: 2022.08.17\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Environment: Windows, Java version 18.\\nPerformed by: Tobias\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Case\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Result\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Note\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"5.1\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"not ok\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"4. Wrong lending period\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"1.1\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"ok\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  })), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"1.2\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"ok\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  })), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"1.3\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"not ok\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"3. Crash with null pointer exception\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"...\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"...\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"...\")))), mdx(\"h2\", null, \"Test Cases\"), mdx(\"h3\", null, \"5.1 Member Data\"), mdx(\"p\", null, \"Requirement: 5\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that there are at least 3 Members.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that one member (M1) with 500 credits. M1 has two items for lending, I1 with cost 50 one cheap I2 cost 10 \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that one member (M2) with 100 credits. M2 has no items for lending.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that one member (M3) with 100 credits has an active lending contract for I2 that starts on day 5 and ends on day 7 (3 days).\")), mdx(\"h3\", null, \"1.1 Create Member\"), mdx(\"p\", null, \"Requirement: 1.1, 1.1.1, 1.4\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a member with name: \\\"Allan Turing\\\", email: \\\"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"mailto:allan@enigma.com\"\n  }, \"allan@enigma.com\"), \"\\\", phone: \\\"123456\\\" \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is created correctly with an id according to the requirement by checking the members full information.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Quit the application\")), mdx(\"h3\", null, \"1.2 Create Member - Duplicate Email and Phone\"), mdx(\"p\", null, \"Requirement: 1.1, 1.1.1, 1.1.2, 1.4\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a member with name: \\\"Allan\\\", email: \\\"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"mailto:allan@enigma.com\"\n  }, \"allan@enigma.com\"), \"\\\", phone: \\\"123456\\\" \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is created correctly with an id according to the requirement by checking the members full information.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a member with name: \\\"Turing\\\", email: \\\"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"mailto:allan@enigma.com\"\n  }, \"allan@enigma.com\"), \"\\\", phone: \\\"123\\\"\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" created (duplicate email)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a membner with name: \\\"Turing\\\", email: \\\"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"mailto:turing@enigma.com\"\n  }, \"turing@enigma.com\"), \"\\\", phone: \\\"123456\\\"\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" created (duplicate phone)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a member with name \\\"Turing\\\" , email: \\\"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"mailto:turing@enigma.com\"\n  }, \"turing@enigma.com\"), \"\\\", phone: \\\"123\\\"\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is created correctly with an id according to the requirement by checking the members full information.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Quit the application\")), mdx(\"h3\", null, \"1.3 Delete Member\"), mdx(\"p\", null, \"Requirement: 1.1, 1.1.1, 1.1.2, 1.4\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a member with name: \\\"Allan\\\", email: \\\"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"mailto:allan@enigma.com\"\n  }, \"allan@enigma.com\"), \"\\\", phone: \\\"123456\\\" \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is created correctly with an id according to the requirement by checking the members full information.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Delete the member\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is deleted by listing all members (simple)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a member with name: \\\"Allan\\\", email: \\\"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"mailto:allan@enigma.com\"\n  }, \"allan@enigma.com\"), \"\\\", phone: \\\"123456\\\" \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the member is created correctly with an id according to the requirement by checking the members full information.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Quit the application.\")), mdx(\"h3\", null, \"2.1 Create item\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create an item for a Member\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the item is created and part of the Members items by inspecint the member's details.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the owner member has increased it's credits with 100\")), mdx(\"h3\", null, \"2.2 Delete item\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Select a member with one or several items \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Delete one of the member's items that is \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" involved in any contract\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the item was deleted from the members owned items\")), mdx(\"h3\", null, \"2.3 Delete item\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Select a member with one or several items \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Delete one of the member's items that \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"is\"), \" booked (i.e. a future contract)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the item was deleted from the members owned items\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract was cancelled\")), mdx(\"h3\", null, \"3.1 Create Contract\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a contract for I2 lending to M2, 3 days of lending, day 1 to and including day 3\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract was created\")), mdx(\"h3\", null, \"3.2 Create Contract - not enough funds\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a contract for I1 lending to M2, 3 days of lending (e.g. day 1 to and including day 3)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract was \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" created due to lack of funds\")), mdx(\"h3\", null, \"3.3 Create Contract - conflicting time\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a contract for I2 lending to M2, 3 days of lending, day 4 to and including day 6\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract was not created due to conflicting time\")), mdx(\"h3\", null, \"3.4 Create Contract - conflicting time\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a contract for I2 lending to M2, 3 days of lending, day 6 to and including day 9\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract was not created due to conflicting time\")), mdx(\"h3\", null, \"3.5 Create Contract - conflicting time\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a contract for I2 lending to M2, 3 days of lending, day 4 to and including day 9\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract was not created due to conflicting time\")), mdx(\"h3\", null, \"3.6 Create Contract - conflicting time\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a contract for I2 lending to M2, 3 days of lending, day 6 to and including day 6\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract was not created due to conflicting time\")), mdx(\"h3\", null, \"4.1 Advance time\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Advance the time 8 days.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Check that the contract has been fullfilled and that funds have been deduced from M3 who now has 70 credits.\")));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#test-specification-stuff-lending-system","title":"Test Specification: Stuff Lending System","items":[{"url":"#general","title":"General"},{"url":"#test-report","title":"Test Report","items":[{"url":"#example-test-report","title":"Example Test Report"}]},{"url":"#test-cases","title":"Test Cases","items":[{"url":"#51-member-data","title":"5.1 Member Data"},{"url":"#11-create-member","title":"1.1 Create Member"},{"url":"#12-create-member---duplicate-email-and-phone","title":"1.2 Create Member - Duplicate Email and Phone"},{"url":"#13-delete-member","title":"1.3 Delete Member"},{"url":"#21-create-item","title":"2.1 Create item"},{"url":"#22-delete-item","title":"2.2 Delete item"},{"url":"#23-delete-item","title":"2.3 Delete item"},{"url":"#31-create-contract","title":"3.1 Create Contract"},{"url":"#32-create-contract---not-enough-funds","title":"3.2 Create Contract - not enough funds"},{"url":"#33-create-contract---conflicting-time","title":"3.3 Create Contract - conflicting time"},{"url":"#34-create-contract---conflicting-time","title":"3.4 Create Contract - conflicting time"},{"url":"#35-create-contract---conflicting-time","title":"3.5 Create Contract - conflicting time"},{"url":"#36-create-contract---conflicting-time","title":"3.6 Create Contract - conflicting time"},{"url":"#41-advance-time","title":"4.1 Advance time"}]}]}]},"parent":{"relativePath":"old/03-assignments/02-assignment_2/test_specification.md"},"frontmatter":{"metaTitle":"Assignment 2 Test Cases","metaDescription":"Testspecificaiton for the stuff lending system","fullWidth":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/forelasningar-2026","title":"Föreläsningar 2026"}}},{"node":{"fields":{"slug":"/","title":"Objektorienterad analys och design med UML (1DV607)"}}},{"node":{"fields":{"slug":"/laborationer-2026","title":"Laborationer 2026"}}},{"node":{"fields":{"slug":"/old","title":"Old"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-2-objektorienterad-analys-och-uml","title":"Tema 2 – Objektorienterad analys och modellering med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-3-objektorienterad-design-med-uml","title":"Tema 3 – Objektorienterad design med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/01-kursintroduktion-och-domanmodellering","title":"1. Kursintroduktion och domänmodellering"}}},{"node":{"fields":{"slug":"/forelasningar-2026/02-objektorienterad-analys-och-modellering","title":"2. Objektorienterad analys och modellering"}}},{"node":{"fields":{"slug":"/forelasningar-2026/03-uml-modellering","title":"3. Fortsatt modellering med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/04-grasp","title":"4. GRASP"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-1-grunderna","title":"Tema 1 – Grunderna i objektorienterad analys och design"}}},{"node":{"fields":{"slug":"/laborationer-2026/01-laboration-1","title":"Laboration 1 – Domänmodellering"}}},{"node":{"fields":{"slug":"/old/001-introduction","title":"Course Introduction"}}},{"node":{"fields":{"slug":"/old/01-information","title":"Course Information"}}},{"node":{"fields":{"slug":"/laborationer-2026/02-laboration-2","title":"Laboration 2"}}},{"node":{"fields":{"slug":"/old/02-theory","title":"Theory"}}},{"node":{"fields":{"slug":"/old/03-assignments","title":"Assignments"}}},{"node":{"fields":{"slug":"/old/01-information/01-welcome","title":"Welcome to the Course"}}},{"node":{"fields":{"slug":"/old/01-information/registration","title":"Course Registration"}}},{"node":{"fields":{"slug":"/old/02-theory/01-intro_to_ooad","title":"Introduction to Object Oriented Analysis and Design"}}},{"node":{"fields":{"slug":"/old/01-information/grading","title":"Course Grading"}}},{"node":{"fields":{"slug":"/old/02-theory/03_software_architecture","title":"Software Architecture"}}},{"node":{"fields":{"slug":"/old/02-theory/04_mvc","title":"Model View Controller"}}},{"node":{"fields":{"slug":"/old/02-theory/02-domain_modeling","title":"Domain Modeling"}}},{"node":{"fields":{"slug":"/old/02-theory/06_grasp1","title":"GRASP 1"}}},{"node":{"fields":{"slug":"/old/02-theory/05_layers_components","title":"Layers & Components"}}},{"node":{"fields":{"slug":"/old/02-theory/07_grasp2","title":"GRASP 2"}}},{"node":{"fields":{"slug":"/old/02-theory/09_gof1","title":"GoF 1"}}},{"node":{"fields":{"slug":"/old/02-theory/10_gof2","title":"GoF 2"}}},{"node":{"fields":{"slug":"/old/02-theory/11_solid","title":"SOLID"}}},{"node":{"fields":{"slug":"/old/02-theory/08_grasp3","title":"GRASP 3"}}},{"node":{"fields":{"slug":"/old/02-theory/design_class_diagram","title":"UML Design Class Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/design_class_relations","title":"UML Design Class Relations"}}},{"node":{"fields":{"slug":"/old/02-theory/design_object_diagram","title":"UML Object Diagram Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/99-exercises","title":"Exercises"}}},{"node":{"fields":{"slug":"/old/02-theory/design_package_diagram","title":"UML Package Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/domain_class_diagram","title":"UML Domain Model"}}},{"node":{"fields":{"slug":"/old/02-theory/reading-instructions","title":"Reading Instructions"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1","title":"Assignment 1"}}},{"node":{"fields":{"slug":"/old/03-assignments/02-assignment_2","title":"Assignment 2"}}},{"node":{"fields":{"slug":"/old/03-assignments/03-assignment_3","title":"Assignment 3"}}},{"node":{"fields":{"slug":"/old/03-assignments/04-yahtzee","title":"Yahtzee Assignment"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a","title":"Övningsuppgifter del A"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-b","title":"Övningsuppgifter del B"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1/lending-system-problem-description","title":"Stuff Lending System Problem Description"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1/yacht-club-problem-description","title":"Yacht Club Problem Description"}}},{"node":{"fields":{"slug":"/old/old_template/videologgar","title":"Vlog"}}},{"node":{"fields":{"slug":"/old/old_template/codeblock/1-index","title":"Sub Page"}}},{"node":{"fields":{"slug":"/old/03-assignments/02-assignment_2/test_specification","title":"Test Specification"}}},{"node":{"fields":{"slug":"/old/old_template/codeblock","title":"Syntax Highlighting"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a/01-hello-world","title":"Hello world"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a/02-simple-addition","title":"Enkel addition"}}}]}},"pageContext":{"id":"21f0aa14-62c0-5138-9915-98e304cfeff3"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}