3 import play.api.test.Helpers._
4 import org.specs2.mutable.Specification
6 import org.squeryl.PrimitiveTypeMode._
7 import org.squeryl.dsl._
8 import org.squeryl.dsl.ast._
10 import scala.collection.immutable.Seq
11 class PartSpec extends Specification{
13 "create new Part" in {
14 running(FakeApplication()) {
17 val project = PartsListDb.projects.insert(Project("S1_pro"))
19 val parentPart1:Part = PartsListDb.parts.insert(Part("Model1", null, 0, 1))
20 val parentPart2:Part = PartsListDb.parts.insert(Part("Model2", null, 0, 1))
21 val childPart1:Part = PartsListDb.parts.insert(Part("Unit1", null, 0, 1))
22 val childPart2:Part = PartsListDb.parts.insert(Part("Unit2", null, 0, 1))
23 val childPart3:Part = PartsListDb.parts.insert(Part("Unit3", null, 0, 1))
24 val grandChildPart1:Part = PartsListDb.parts.insert(Part("Part1", null, 0, 1))
25 val grandChildPart2:Part = PartsListDb.parts.insert(Part("Part2", null, 0, 1))
26 val grandChildPart3:Part = PartsListDb.parts.insert(Part("Part3", null, 0, 1))
27 val grandChildPart4:Part = PartsListDb.parts.insert(Part("Part4", null, 0, 1))
28 val grandChildPart5:Part = PartsListDb.parts.insert(Part("Part5", null, 0, 1))
30 parentPart1.parts.associate(childPart1)
31 var pr = parentPart1.parts.assign(childPart1)
33 PartsListDb.partRelations.update(pr)
35 parentPart1.parts.associate(childPart2)
36 pr = parentPart1.parts.assign(childPart2)
38 PartsListDb.partRelations.update(pr)
40 parentPart2.parts.associate(childPart2)
41 pr = parentPart2.parts.assign(childPart2)
43 PartsListDb.partRelations.update(pr)
45 parentPart2.parts.associate(grandChildPart2)
46 pr = parentPart2.parts.assign(grandChildPart2)
48 PartsListDb.partRelations.update(pr)
50 childPart1.parts.associate(grandChildPart1)
51 pr = childPart1.parts.assign(grandChildPart1)
53 PartsListDb.partRelations.update(pr)
55 childPart1.parts.associate(grandChildPart2)
56 pr = childPart1.parts.assign(grandChildPart2)
58 PartsListDb.partRelations.update(pr)
60 childPart2.parts.associate(grandChildPart1)
61 pr = childPart2.parts.assign(grandChildPart1)
63 PartsListDb.partRelations.update(pr)
65 childPart2.parts.associate(grandChildPart3)
66 pr = childPart2.parts.assign(grandChildPart3)
68 PartsListDb.partRelations.update(pr)
70 childPart2.parts.associate(childPart3)
71 pr = childPart2.parts.assign(childPart3)
73 PartsListDb.partRelations.update(pr)
75 grandChildPart1.parts.associate(grandChildPart4)
76 pr = grandChildPart1.parts.assign(grandChildPart4)
78 PartsListDb.partRelations.update(pr)
80 childPart3.parts.associate(grandChildPart5)
82 PartsListDb.parts.size must beEqualTo (10)
83 pr = childPart3.parts.assign(grandChildPart5)
85 PartsListDb.partRelations.update(pr)
87 childPart3.partRelation(grandChildPart5.id).quantity must beEqualTo (10L)
89 var buffer = ArrayBuffer[PartsListBean]()
91 val atach1 = PartsListDb.atachs.insert(Atach("image/jpeg", "accept.jpg", "AAA", 10))
92 grandChildPart5.atachs.associate(atach1)
93 grandChildPart5.atachs.head.contentType must beEqualTo("image/jpeg")
95 project.parts.associate(parentPart1)
96 project.name must beEqualTo("S1_pro")
98 atach1.part.assign(atach1.part.head).name must beEqualTo("Part5")
99 parentPart1.project.assign(parentPart1.project.head).name must beEqualTo("S1_pro")
101 val user = PartsListDb.users.insert(User("uyaji", "uyaji.mail.com"))
102 user.name must beEqualTo("uyaji")
104 project.users.associate(user)
105 project.users.head.name must beEqualTo ("uyaji")
107 /* project.members.associate(user)
108 project.members.size must beEqualTo (1)*/
110 for(model <- PartsListDb.parts.where(p => p.name like "M%")) {
111 // for(model <- PartsListDb.parts) {
112 Recursion(model, 0, buffer)
113 println("------------------------------------------------------------")
115 for(tmpPart <- buffer) {
116 println("parent = " + tmpPart.parent + " - child = " + tmpPart.child)
118 println("------------------------------------------------------------")
119 for(tmpPart <- buffer.drop(3).take(5)) {
120 println("parent = " + tmpPart.parent + " - child = " + tmpPart.child)
126 def Recursion(parentPart:Part, value:Int, var buffer:Seq[PartsListBean]):Unit = {
127 val level:Int = value +1
128 for(child <- parentPart.parts) {
129 println("Child Part(" + level + ") = " + parentPart.name + " - " + child.name)
130 buffer = buffer.:+(PartsListBean(parentPart.name, child.name, parentPart.partRelation(child.id).quantity, parentPart.partRelation(child.id).relationKey))
131 Recursion(child, level, buffer)