Module: Ag::Spec::Adapter

Defined in:
lib/ag/spec/adapter.rb

Instance Method Summary collapse

Instance Method Details

#test_connectObject



4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/ag/spec/adapter.rb', line 4

def test_connect
  consumer = Ag::Object.new("User", "1")
  producer = Ag::Object.new("User", "2")

  adapter.connect(consumer, producer)

  connection = connections.first
  assert_equal consumer.id, connection.consumer.id
  assert_equal consumer.type, connection.consumer.type
  assert_equal producer.id, connection.producer.id
  assert_equal producer.type, connection.producer.type
  assert_in_delta Time.now.utc, connection.created_at, 1
end

#test_connectedObject



38
39
40
41
42
43
44
45
# File 'lib/ag/spec/adapter.rb', line 38

def test_connected
  consumer = Ag::Object.new("User", "1")
  producer = Ag::Object.new("User", "2")
  connect(consumer, producer)

  assert_equal true, adapter.connected?(consumer, producer)
  assert_equal false, adapter.connected?(producer, consumer)
end

#test_consumersObject



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ag/spec/adapter.rb', line 47

def test_consumers
  consumer1 = Ag::Object.new("User", "1")
  consumer2 = Ag::Object.new("User", "2")
  consumer3 = Ag::Object.new("User", "3")
  producer = Ag::Object.new("User", "4")
  connect(consumer1, producer)
  connect(consumer2, producer)

  consumers = adapter.consumers(producer)
  assert_equal 2, consumers.size
  assert_equal "2", consumers[0].consumer.id
  assert_equal "1", consumers[1].consumer.id
end

#test_consumers_limitObject



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/ag/spec/adapter.rb', line 61

def test_consumers_limit
  producer = Ag::Object.new("User", "99")
  consumers = (1..10).to_a.map { |n|
    Ag::Object.new("User", n.to_s).tap { |consumer|
      connect consumer, producer
    }
  }
  assert_equal 5, adapter.consumers(producer, limit: 5).size
  assert_equal consumers[5..9].reverse,
    adapter.consumers(producer, limit: 5).map(&:consumer)
end

#test_consumers_offsetObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/ag/spec/adapter.rb', line 73

def test_consumers_offset
  producer = Ag::Object.new("User", "99")
  consumers = (1..10).to_a.map { |n|
    Ag::Object.new("User", n.to_s).tap { |consumer|
      connect consumer, producer
    }
  }
  assert_equal consumers[0..4].reverse,
    adapter.consumers(producer, offset: 5).map(&:consumer)
end

#test_produceObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ag/spec/adapter.rb', line 18

def test_produce
  producer = Ag::Object.new("User", "1")
  object = Ag::Object.new("User", "2")
  event = Ag::Event.new({
    producer: producer,
    object: object,
    verb: "follow",
  })

  result = adapter.produce(event)

  event = events.first
  assert_equal event.id, result.id
  assert_equal producer.id, event.producer.id
  assert_equal producer.type, event.producer.type
  assert_equal object.id, event.object.id
  assert_equal object.type, event.object.type
  assert_in_delta Time.now.utc, event.created_at, 1
end

#test_producersObject



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/ag/spec/adapter.rb', line 84

def test_producers
  consumer1 = Ag::Object.new("User", "1")
  consumer2 = Ag::Object.new("User", "2")
  producer1 = Ag::Object.new("User", "3")
  producer2 = Ag::Object.new("User", "4")
  producer3 = Ag::Object.new("User", "5")
  connect(consumer1, producer1)
  connect(consumer1, producer2)
  connect(consumer2, producer3)

  producers = adapter.producers(consumer1)
  assert_equal 2, producers.size
  assert_equal "4", producers[0].producer.id
  assert_equal "3", producers[1].producer.id
end

#test_producers_limitObject



100
101
102
103
104
105
106
107
108
109
110
# File 'lib/ag/spec/adapter.rb', line 100

def test_producers_limit
  consumer = Ag::Object.new("User", "99")
  producers = (1..10).to_a.map { |n|
    Ag::Object.new("User", n.to_s).tap { |producer|
      connect consumer, producer
    }
  }
  assert_equal 5, adapter.producers(consumer, limit: 5).size
  assert_equal producers[5..9].reverse,
    adapter.producers(consumer, limit: 5).map(&:producer)
end

#test_producers_offsetObject



112
113
114
115
116
117
118
119
120
121
# File 'lib/ag/spec/adapter.rb', line 112

def test_producers_offset
  consumer = Ag::Object.new("User", "99")
  producers = (1..10).to_a.map { |n|
    Ag::Object.new("User", n.to_s).tap { |producer|
      connect consumer, producer
    }
  }
  assert_equal producers[0..4].reverse,
    adapter.producers(consumer, offset: 5).map(&:producer)
end

#test_timelineObject



123
124
125
126
127
128
129
130
131
132
# File 'lib/ag/spec/adapter.rb', line 123

def test_timeline
  john = Ag::Object.new("User", "1")
  steve = Ag::Object.new("User", "2")
  presentation = Ag::Object.new("Presentation", "1")
  connect john, steve
  produce Ag::Event.new(producer: steve, object: presentation, verb: "publish")

  events = adapter.timeline(john)
  assert_equal 1, events.size
end

#test_timeline_limitObject



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/ag/spec/adapter.rb', line 134

def test_timeline_limit
  john = Ag::Object.new("User", "1")
  steve = Ag::Object.new("User", "2")
  connect john, steve

  presentations = (1..10).to_a.map { |n|
    Ag::Object.new("Presentation", n.to_s)
  }

  presentations.each do |presentation|
    produce Ag::Event.new({
      producer: steve,
      object: presentation,
      verb: "publish",
    })
  end

  events = adapter.timeline(john, limit: 5)
  assert_equal 5, events.size
  assert_equal presentations[5..9].reverse, events.map(&:object)
end

#test_timeline_offsetObject



156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/ag/spec/adapter.rb', line 156

def test_timeline_offset
  john = Ag::Object.new("User", "1")
  steve = Ag::Object.new("User", "2")
  connect john, steve

  presentations = (1..10).to_a.map { |n|
    Ag::Object.new("Presentation", n.to_s)
  }

  presentations.each do |presentation|
    produce Ag::Event.new({
      producer: steve,
      object: presentation,
      verb: "publish",
    })
  end

  events = adapter.timeline(john, offset: 5)
  assert_equal 5, events.size
  assert_equal presentations[0..4].reverse, events.map(&:object)
end