Revision 250dd1c1

b/src/main/scala/gr/grnet/aquarium/user/UserStateComputations.scala
1
/*
2
 * Copyright 2011 GRNET S.A. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or
5
 * without modification, are permitted provided that the following
6
 * conditions are met:
7
 *
8
 *   1. Redistributions of source code must retain the above
9
 *      copyright notice, this list of conditions and the following
10
 *      disclaimer.
11
 *
12
 *   2. Redistributions in binary form must reproduce the above
13
 *      copyright notice, this list of conditions and the following
14
 *      disclaimer in the documentation and/or other materials
15
 *      provided with the distribution.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
 * POSSIBILITY OF SUCH DAMAGE.
29
 *
30
 * The views and conclusions contained in the software and
31
 * documentation are those of the authors and should not be
32
 * interpreted as representing official policies, either expressed
33
 * or implied, of GRNET S.A.
34
 */
35

  
36
package gr.grnet.aquarium.user
37

  
38
import gr.grnet.aquarium.store.ResourceEventStore
39

  
40
/**
41
 *
42
 * @author Christos KK Loverdos <loverdos@gmail.com>
43
 */
44
object UserStateComputations {
45
  def createBlankState(userId: String, agreementName: String = "default") = {
46
    val now = 0L
47
    UserState(
48
      userId,
49
      now,
50
      ActiveSuspendedSnapshot(false, now),
51
      CreditSnapshot(0, now),
52
      AgreementSnapshot(agreementName, now),
53
      RolesSnapshot(List(), now),
54
      PaymentOrdersSnapshot(Nil, now),
55
      OwnedGroupsSnapshot(Nil, now),
56
      GroupMembershipsSnapshot(Nil, now),
57
      OwnedResourcesSnapshot(List(), now)
58
    )
59
  }
60

  
61
  def runBilling(initialUserState: UserState,
62
                 startMillis: Long,
63
                 stopMillis: Long,
64
                 rcEventStore: ResourceEventStore): UserState = {
65

  
66
    val userId = initialUserState.userId
67
    val rcEvents = rcEventStore.findResourceEventsForReceivedPeriod(userId, startMillis, stopMillis)
68

  
69
    rcEvents.foldLeft[UserState](initialUserState) {
70
      case (userState, rcEvent) ⇒
71
        userState
72
    }
73
  }
74
}
b/src/test/scala/gr/grnet/aquarium/user/UserActorTest.scala
14 14
    val now = System.currentTimeMillis()
15 15
    val state = UserState(
16 16
      "1",
17
      0,
17 18
      ActiveSuspendedSnapshot(true, now),
18 19
      CreditSnapshot(0, now),
19 20
      AgreementSnapshot("default", now),

Also available in: Unified diff