OSDN Git Service

Refactoring
[open-pdm-light/PartList.git] / PartsList / PartsList / test / models / PartSpec.scala
1 package models
2 import play.api.test._
3 import play.api.test.Helpers._
4 import org.specs2.mutable.Specification
5 import org.squeryl._
6 import org.squeryl.PrimitiveTypeMode._
7 import org.squeryl.dsl._
8 import org.squeryl.dsl.ast._
9 import beans._
10 import scala.collection.immutable.Seq
11 class PartSpec extends Specification{
12   "Part" should {
13     "create new Part" in {
14       running(FakeApplication()) {
15         inTransaction {
16            // データ登録
17           val project = PartsListDb.projects.insert(Project("S1_pro"))
18
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))
29           
30           parentPart1.parts.associate(childPart1)
31           var pr = parentPart1.parts.assign(childPart1)
32           pr.quantity = 1L
33           PartsListDb.partRelations.update(pr)
34
35           parentPart1.parts.associate(childPart2)
36           pr = parentPart1.parts.assign(childPart2)
37           pr.quantity = 2L
38           PartsListDb.partRelations.update(pr)
39
40           parentPart2.parts.associate(childPart2)
41           pr = parentPart2.parts.assign(childPart2)
42           pr.quantity = 3L
43           PartsListDb.partRelations.update(pr)
44
45           parentPart2.parts.associate(grandChildPart2)
46           pr = parentPart2.parts.assign(grandChildPart2)
47           pr.quantity = 4L
48           PartsListDb.partRelations.update(pr)
49
50           childPart1.parts.associate(grandChildPart1)
51           pr = childPart1.parts.assign(grandChildPart1)
52           pr.quantity = 5L
53           PartsListDb.partRelations.update(pr)
54
55           childPart1.parts.associate(grandChildPart2)
56           pr = childPart1.parts.assign(grandChildPart2)
57           pr.quantity = 6L
58           PartsListDb.partRelations.update(pr)
59
60           childPart2.parts.associate(grandChildPart1)
61           pr = childPart2.parts.assign(grandChildPart1)
62           pr.quantity = 7L
63           PartsListDb.partRelations.update(pr)
64
65           childPart2.parts.associate(grandChildPart3)
66           pr = childPart2.parts.assign(grandChildPart3)
67           pr.quantity = 8L
68           PartsListDb.partRelations.update(pr)
69
70           childPart2.parts.associate(childPart3)
71           pr = childPart2.parts.assign(childPart3)
72           pr.quantity = 9L
73           PartsListDb.partRelations.update(pr)
74           
75           grandChildPart1.parts.associate(grandChildPart4)
76           pr = grandChildPart1.parts.assign(grandChildPart4)
77           pr.quantity = 11L
78           PartsListDb.partRelations.update(pr)
79          
80           childPart3.parts.associate(grandChildPart5)
81            // partの総件数をチェック。
82           PartsListDb.parts.size must beEqualTo (10)
83           pr = childPart3.parts.assign(grandChildPart5)
84           pr.quantity = 10L
85           PartsListDb.partRelations.update(pr)
86            // updateの結果を確認。
87           childPart3.partRelation(grandChildPart5.id).quantity must beEqualTo (10L)
88           
89           var buffer = ArrayBuffer[PartsListBean]()
90           
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")
94
95           project.parts.associate(parentPart1)
96           project.name must beEqualTo("S1_pro")
97                    
98           atach1.part.assign(atach1.part.head).name must beEqualTo("Part5")
99           parentPart1.project.assign(parentPart1.project.head).name must beEqualTo("S1_pro")
100                     
101           val user = PartsListDb.users.insert(User("uyaji", "uyaji.mail.com"))
102           user.name must beEqualTo("uyaji")
103           
104           project.users.associate(user)
105           project.users.head.name must beEqualTo ("uyaji")
106           
107 /*          project.members.associate(user)
108           project.members.size must beEqualTo (1)*/
109           
110           for(model <- PartsListDb.parts.where(p => p.name like "M%")) {
111 //          for(model <- PartsListDb.parts) {
112             Recursion(model, 0, buffer)
113             println("------------------------------------------------------------")
114             }
115           for(tmpPart <- buffer) {
116             println("parent = " + tmpPart.parent + " - child = " + tmpPart.child)
117           }
118             println("------------------------------------------------------------")
119           for(tmpPart <- buffer.drop(3).take(5)) {
120             println("parent = " + tmpPart.parent + " - child = " + tmpPart.child)
121           }
122         }
123       }
124     }
125   }
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)
132      }
133   }
134 }